lemp.sh 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. #!/bin/sh
  2. echo -e '\033[35m
  3. __
  4. / /__ ____ ___ ____
  5. / / _ \/ __ `__ \/ __ \
  6. / / __/ / / / / / /_/ /
  7. /_/\___/_/ /_/ /_/ .___/
  8. /_/
  9. \033[0m'
  10. echo -e "\033[35;1mLEMP server (Nginx Mysql Php-fpm) \033[0m"
  11. if [ "$EUID" -ne 0 ]; then
  12. echo "Please run as root"
  13. exit
  14. fi
  15. # get the current position
  16. _cwd="$(pwd)"
  17. # check for assets forlder
  18. _assets="$_cwd/assets"
  19. if [ ! -d "$_assets" ]; then
  20. _assets="$_cwd/../assets"
  21. if [ ! -d "$_assets" ]; then
  22. echo "!! can't find assets directory !!"
  23. exit
  24. fi
  25. fi
  26. sleep 2
  27. echo -e '\033[35m
  28. ____ __ ______
  29. / __ \/ / / / __ \
  30. / /_/ / /_/ / /_/ /
  31. / ____/ __ / ____/
  32. /_/ /_/ /_/_/
  33. \033[0m'
  34. echo -e "\033[35;1mInstalling SURY \033[0m"
  35. sleep 3
  36. apt-get --yes install ca-certificates apt-transport-https software-properties-common curl lsb-release
  37. curl -sSL https://packages.sury.org/php/README.txt | bash -x
  38. apt-get update && apt-get upgrade
  39. echo -e "\033[35;1mInstalling PHP \033[0m"
  40. sleep 3
  41. # mv: cannot stat '/etc/php/7.0/fpm/php.ini': No such file or directory
  42. # cp: cannot create regular file '/etc/php/7.0/fpm/php.ini': No such file or directory
  43. # Configuring PHP
  44. # Failed to enable unit: Unit file php7.0-fpm.service does not exist.
  45. # Failed to start php7.0-fpm.service: Unit php7.0-fpm.service not found.
  46. # apt-get --yes install php7.4-fpm php7.4-mysql php7.4-opcache php7.4-curl php7.4-mbstring php7.4-zip php7.4-xml php7.4-gd php-memcached php7.4-imagick php7.4-apcu
  47. # php7.4-mcrypt ??
  48. # apt-get --yes install php8.1-fpm php8.1-mysql php8.1-opcache php8.1-curl php8.1-mbstring php8.1-zip php8.1-xml php8.1-gd php8.1-memcached php8.1-imagick php8.1-apcu php8.1-redis php8.1-bz2 php8.1-bcmath
  49. # apt-get --yes install php8.2-fpm php8.2-mysql php8.2-opcache php8.2-curl php8.2-mbstring php8.2-zip php8.2-xml php8.2-gd php-memcached php8.2-imagick php8.2-apcu php8.2-redis php8.2-bz2 php8.2-bcmath
  50. # apt-get --yes install php8.3-fpm php8.3-mysql php8.3-opcache php8.3-curl php8.3-mbstring php8.3-zip php8.3-xml php8.3-gd php8.3-memcached php8.3-imagick php8.3-apcu php8.3-redis php8.3-bz2 php8.3-bcmath
  51. PHP_VERSION="8.4"
  52. apt-get --yes install php${PHP_VERSION}-fpm php${PHP_VERSION}-mysql php${PHP_VERSION}-opcache php${PHP_VERSION}-curl php${PHP_VERSION}-mbstring php${PHP_VERSION}-zip php${PHP_VERSION}-xml php${PHP_VERSION}-gd php${PHP_VERSION}-memcached php${PHP_VERSION}-imagick php${PHP_VERSION}-apcu php${PHP_VERSION}-redis php${PHP_VERSION}-bz2 php${PHP_VERSION}-bcmath
  53. mv /etc/php/${PHP_VERSION}/fpm/php.ini /etc/php/${PHP_VERSION}/fpm/php.ini.back
  54. cp "$_assets"/php${PHP_VERSION}-fpm.ini /etc/php/${PHP_VERSION}/fpm/php.ini
  55. echo "Configuring PHP"
  56. mkdir /var/log/php
  57. chown www-data /var/log/php
  58. cp "$_assets"/logrotate-php /etc/logrotate.d/php
  59. systemctl enable php${PHP_VERSION}-fpm
  60. systemctl start php${PHP_VERSION}-fpm
  61. # echo "Installing memecached"
  62. # replaced by redis
  63. # apt-get --yes install memcached
  64. # sed -i "s/-m\s64/-m 128/g" /etc/memcached.conf
  65. #
  66. # systemctl start memcached
  67. echo -e "\033[92;1mphp installed\033[Om"
  68. echo -e '\033[35m
  69. _ __ _
  70. / | / /___ _(_)___ _ __
  71. / |/ / __ `/ / __ \| |/_/
  72. / /| / /_/ / / / / /> <
  73. /_/ |_/\__, /_/_/ /_/_/|_|
  74. /____/
  75. \033[0m'
  76. echo -e "\033[35;1mInstalling Nginx \033[0m"
  77. sleep 3
  78. apt-get --yes install nginx
  79. mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.ori
  80. cp "$_assets"/default.nginxconf /etc/nginx/sites-available/default
  81. systemctl enable nginx
  82. systemctl restart nginx
  83. echo -e "\033[92;1mNginx installed\033[Om"
  84. while [ "$installmysql" != "yes" ] && [ "$installmysql" != "no" ]
  85. do
  86. echo -n "install mysql? [yes|no] "
  87. read installmysql
  88. # installmysql=${installmysql:-y}
  89. done
  90. if [ "$installmysql" = "yes" ]; then
  91. echo -e '\033[35m
  92. __ ___ __
  93. / |/ /_ ___________ _/ /
  94. / /|_/ / / / / ___/ __ `/ /
  95. / / / / /_/ (__ ) /_/ / /
  96. /_/ /_/\__, /____/\__, /_/
  97. /____/ /_/
  98. \033[0m'
  99. echo -e "\033[35;1minstalling Mysql \033[0m"
  100. sleep 3
  101. apt-get --yes install mariadb-server
  102. mysql_secure_installation
  103. cp "$_assets"/mysql/innodb-file-per-table.cnf /etc/mysql/conf.d/
  104. # you may increase memory
  105. # innodb_buffer_pool_size = 1024M
  106. systemctl enable mariadb.service
  107. systemctl restart mariadb.service
  108. echo -e "\033[92;1mmysql installed\033[Om"
  109. echo -e '\033[35m
  110. __ __ ___ ___ __ _
  111. ____ / /_ ____ / |/ /_ __/ | ____/ /___ ___ (_)___
  112. / __ \/ __ \/ __ \/ /|_/ / / / / /| |/ __ / __ `__ \/ / __ \
  113. / /_/ / / / / /_/ / / / / /_/ / ___ / /_/ / / / / / / / / / /
  114. / .___/_/ /_/ .___/_/ /_/\__, /_/ |_\__,_/_/ /_/ /_/_/_/ /_/
  115. /_/ /_/ /____/
  116. \033[0m'
  117. echo -e "\033[35;1mInstalling phpMyAdmin \033[0m"
  118. ##### Building dependency tree
  119. ##### Reading state information... Done
  120. ##### Package phpmyadmin is not available, but is referred to by another package.
  121. ##### This may mean that the package is missing, has been obsoleted, or
  122. ##### is only available from another source
  123. #####
  124. ##### E: Package 'phpmyadmin' has no installation candidate
  125. ##### cp: missing destination file operand after '/root/debian-web-server/assets/nginx-phpmyadmin.conf'
  126. ##### Try 'cp --help' for more information.
  127. # TODO no pma package available :(
  128. apt-get --yes install phpmyadmin
  129. ln -s /usr/share/phpmyadmin /var/www/html/
  130. cp "$_assets"/nginx-phpmyadmin.conf /etc/nginx/sites-available/phpmyadmin.conf
  131. echo -e "\033[92;1mphpMyAdmin installed\033[Om"
  132. echo -e "\033[92;1mYou can access it at yourip/phpmyadmin\033[Om"
  133. # install from source
  134. # apt-get --yes install php-{mbstring,zip,gd,xml,pear,gettext,cgi}
  135. # cd /var/www/html/
  136. # wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
  137. # unzip phpMyAdmin-latest-all-languages.zip
  138. # mv phpMyAdmin-*-all-languages pma
  139. # rm phpMyAdmin-latest-all-languages.zip
  140. # # cp "$_assets"/nginx-phpmyadmin.conf > /etc/nginx/sites-available/phpmyadmin.conf
  141. # # ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/phpmyadmin.conf
  142. # echo -e "\033[92;1mphpMyAdmin installed\033[Om"
  143. # echo -e "\033[92;1mYou can access it at yourip/pma\033[Om"
  144. fi
  145. echo -e '\033[35m
  146. ____ ___
  147. / __ \___ ____/ (_)____
  148. / /_/ / _ \/ __ / / ___/
  149. / _, _/ __/ /_/ / (__ )
  150. /_/ |_|\___/\__,_/_/____/
  151. \033[0m'
  152. echo -e "\033[35;1mInstalling Redis \033[0m"
  153. sleep 3
  154. apt-get --yes install redis-server php8.1-redis
  155. # TODO set maxmemory=2gb
  156. # TODO set maxmemory-policy=volatile-lru
  157. # TODO comment all save line
  158. # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  159. # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
  160. # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
  161. # https://blog.opstree.com/2019/04/16/redis-best-practices-and-performance-tuning/
  162. systemctl enable redis-server
  163. systemctl restart redis-server
  164. systemctl restart php8.1-fpm
  165. echo -e "\033[92;1mRedis installed\033[Om"
  166. echo -e '\033[35m
  167. ______
  168. / ____/___ ____ ___ ____ ____ ________ _____
  169. / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
  170. / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
  171. \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
  172. /_/
  173. \033[0m'
  174. echo -e "\033[35;1mInstalling Composer \033[0m"
  175. sleep 3
  176. export COMPOSER_HOME=/usr/local/composer
  177. curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
  178. echo -e "\033[92;1mComposer installed\033[Om"
  179. echo -e '\033[35m
  180. ____ __
  181. / __ \_______ _______/ /_
  182. / / / / ___/ / / / ___/ __ \
  183. / /_/ / / / /_/ (__ ) / / /
  184. /_____/_/ \__,_/____/_/ /_/
  185. \033[0m'
  186. echo -e "\033[35;1mInstalling Drush\033[0m"
  187. sleep 3
  188. # curl https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar -L -o /usr/local/bin/drush
  189. wget -O /usr/local/bin/drush https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
  190. chmod +x /usr/local/bin/drush
  191. echo -e "\033[92;1mDrush\033[Om"