install.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. # Config
  3. ENVIROMENT="prod";
  4. TMP="/tmp/omni-setup";
  5. if [[ "$1" != "" ]];then
  6. ENVIROMENT="$1";
  7. fi;
  8. REGISTER_URL="http://api.omnimaga.org/register/$ENVIROMENT";
  9. PHPMYADMIN_URL="http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.2.9/phpMyAdmin-4.2.9-english.tar.xz";
  10. # Functions for logging
  11. section(){
  12. echo "=> Starting Section \"$@\"";
  13. }
  14. log(){
  15. echo "|-> $@";
  16. }
  17. sublog(){
  18. echo "|--> $@";
  19. }
  20. info(){
  21. echo "|-> INFO: $@";
  22. }
  23. subinfo(){
  24. echo "|--> INFO $@";
  25. }
  26. install(){
  27. apt-get -qq install $@;
  28. }
  29. updatesudo(){
  30. if visudo -q -c -fdata/etc/$@;then
  31. cp data/etc/$@ /etc/$@;
  32. fi;
  33. }
  34. download(){
  35. local url=$1;
  36. echo -n " ";
  37. wget --progress=dot $url 2>&1 | grep --line-buffered "%" | sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}';
  38. echo -ne "\b\b\b\b";
  39. }
  40. clone(){
  41. git clone -q $1 $2;
  42. }
  43. # Make sure the script is running as root
  44. if [ "$(id -u)" != "0" ]; then
  45. sudo $0;
  46. exit;
  47. fi;
  48. # Actually run the install
  49. section "Registering";
  50. log "Getting IDs";
  51. mkdir -p /tmp/omni-setup;
  52. sublog "Hostname";
  53. download "$REGISTER_URL/hostname" $TMP/hostname;
  54. if [[ "$(cat $TMP/hostname)" == "" ]];then
  55. hostname > $TMP/hostname;
  56. fi;
  57. hostname $(cat $TMP/hostname);
  58. cp $TMP/hostname /etc/hostname;
  59. sublog "MySQL ID";
  60. download "$REGISTER_URL/mysql-id" $TMP/mysql-id;
  61. section "Package Installation";
  62. log "LAMP Stack";
  63. install lamp-server^;
  64. log "Node.js"
  65. install nodejs;
  66. log "SSH Server";
  67. install ssh;
  68. log "Git";
  69. install git;
  70. log "htop";
  71. install htop;
  72. section "Custom Packages";
  73. log "Omnimaga-Server-Utils";
  74. sublog "Creating directories";
  75. mkdir /opt/omnimaga/bin -p;
  76. chown root:users /opt/omnimaga/bin;
  77. sublog "Adding to path";
  78. echo "export PATH=$PATH:/opt/omnimaga/bin;" > /etc/profile.d/omnimaga-server-utils.sh;
  79. . /etc/profile.d/omnimaga-server-utils.sh;
  80. sublog "getting files";
  81. rm -rf /opt/omnimaga/bin;
  82. clone https://github.com/Omnimaga/server-utils.git /opt/omnimaga/bin/;
  83. chmod a+x /opt/omnimaga/bin/*;
  84. subinfo "Add users to the group omnimaga-utils to allow access";
  85. log "phpmyadmin";
  86. sublog "Downloading";
  87. download $PHPMYADMIN_URL $TMP/pma.tar.xz;
  88. sublog "Extracting";
  89. tar -C $TMP/ -xf $TMP/pma.tar.xz;
  90. sublog "Copying";
  91. mkdir -p /var/www/phpmyadmin/;
  92. cp -R $TMP/phpMyAdmin-*/{*,.[a-zA-Z0-9]*} /var/www/phpmyadmin/;
  93. cp data/var/www/phpmyadmin/config.inc.php /var/www/phpmyadmin/;
  94. section "Config";
  95. log "Setting up sudoers";
  96. updatesudo sudoers;
  97. log "Setting up groups";
  98. sublog "web";
  99. groupadd -f web;
  100. updatesudo sudoers.d/web;
  101. sublog "ircd";
  102. groupadd -f ircd;
  103. updatesudo sudoers.d/ircd;
  104. sublog "mysqld";
  105. cp data/etc/mysql/conf.d/replication.cnf /etc/mysql/conf.d/replication.cnf;