Advertisement
valdo123

BASH WordPress with LEMP Stack - Debian Based

Jan 6th, 2023
920
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.40 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. clear
  4. echo "Install WordPress dengan LEMP di Ubuntu 22.04 LTS"
  5. echo "----------------------"
  6. echo "Spesifikasi:"
  7. echo "1. Nginx"
  8. echo "2. PHP 7.4, 8.0, 8.1"
  9. echo "3. MariaDB 10.6"
  10. echo "4. SSL Let's Encrypt"
  11. echo "5. WordPress terbaru"
  12. echo "----------------------"
  13.  
  14. ip=$(wget -qO- http://ipecho.net/plain | xargs echo)
  15.  
  16. echo "Informasi Domain dan WordPress"
  17. echo "----------------------"
  18. read -p "Domain(1) atau Subdomain(2) [1/2] = " tipedomain
  19. read -p "Nama domain = " domain
  20. read -p "Versi PHP [7.4/8.0/8.1] = " vphp
  21. read -p "Email notifikasi SSL = " emailssl
  22. read -p "Judul website = " wptitle
  23. read -p "Username admin = " wpadmin
  24. read -p "Email admin = " wpemail
  25. echo "----------------------"
  26.  
  27. echo "Memulai instalasi dan konfigurasi ..."
  28. echo "----------------------"
  29. echo "Set TimeZone Asia/Jakarta"
  30. timedatectl set-timezone Asia/Jakarta
  31. echo
  32.  
  33. echo "Update & Upgrade"
  34. apt update
  35. apt upgrade -y
  36. apt install pwgen -y
  37. echo
  38.  
  39. echo "Tambah repository Nginx PPA"
  40. add-apt-repository ppa:ondrej/nginx -y
  41. echo
  42.  
  43. echo "Install Nginx"
  44. apt install nginx -y
  45. echo
  46.  
  47. echo "Tambah repository PHP PPA"
  48. add-apt-repository ppa:ondrej/php -y
  49. echo
  50.  
  51. echo "Install PHP $vphp"
  52. apt install php$vphp php$vphp-fpm php$vphp-common php$vphp-cli php$vphp-mbstring php$vphp-gd php$vphp-intl php$vphp-xml php$vphp-mysql php$vphp-zip -y
  53. echo
  54.  
  55. sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 200M/g" /etc/php/$vphp/fpm/php.ini
  56. sed -i "s/post_max_size = 8M/post_max_size = 200M/g" /etc/php/$vphp/fpm/php.ini
  57. sed -i "s/max_execution_time = 30/max_execution_time = 600/g" /etc/php/$vphp/fpm/php.ini
  58. sed -i "s/max_input_time = 60/max_input_time = 600/g" /etc/php/$vphp/fpm/php.ini
  59. sed -i "s/memory_limit = 128M/memory_limit = 256M/g" /etc/php/$vphp/fpm/php.ini
  60.  
  61. systemctl restart php$vphp-fpm
  62.  
  63. echo "Membuat document root"
  64. mkdir /var/www/${domain}
  65. echo "<?php phpinfo(); ?>" > /var/www/${domain}/index.php
  66. echo
  67.  
  68. echo "Membuat konfigurasi server block ${domain}"
  69. if [ $tipedomain == 1  ]
  70. then
  71. cat > /etc/nginx/conf.d/${domain}.conf << EOF
  72. server {
  73.     listen 80;
  74.     server_name ${domain} www.${domain};
  75.     root /var/www/${domain};
  76.     index index.php index.html index.htm;
  77.  
  78.     location / {
  79.       try_files \$uri \$uri/ /index.php?\$args;
  80.     }
  81.  
  82.     location ~ \.php\$ {
  83.       try_files \$fastcgi_script_name =404;
  84.       include fastcgi_params;
  85.       fastcgi_pass    unix:/run/php/php$vphp-fpm.sock;
  86.       fastcgi_index   index.php;
  87.       fastcgi_param DOCUMENT_ROOT   \$realpath_root;
  88.       fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
  89.     }
  90.  
  91.     access_log /var/log/nginx/${domain}_access.log;
  92.     error_log /var/log/nginx/${domain}_error.log;
  93. }
  94. EOF
  95. else
  96. cat > /etc/nginx/conf.d/${domain}.conf << EOF
  97. server {
  98.     listen 80;
  99.     server_name ${domain};
  100.     root /var/www/${domain};
  101.     index index.php index.html index.htm;
  102.  
  103.     location / {
  104.       try_files \$uri \$uri/ /index.php?\$args;
  105.     }
  106.  
  107.     location ~ \.php\$ {
  108.       try_files \$fastcgi_script_name =404;
  109.       include fastcgi_params;
  110.       fastcgi_pass    unix:/run/php/php$vphp-fpm.sock;
  111.       fastcgi_index   index.php;
  112.       fastcgi_param DOCUMENT_ROOT   \$realpath_root;
  113.       fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
  114.     }
  115.  
  116.     access_log /var/log/nginx/${domain}_access.log;
  117.     error_log /var/log/nginx/${domain}_error.log;
  118. }
  119. EOF
  120. fi
  121. echo
  122.  
  123. echo "Restart Nginx"
  124. systemctl enable nginx
  125. systemctl restart nginx
  126. echo
  127.  
  128. echo "Install Certbot Let's Encrypt"
  129. apt install certbot python3-certbot-nginx -y
  130. echo
  131.  
  132. echo "Request SSL untuk ${domain}"
  133. if [ $tipedomain == 1  ]
  134. then
  135. certbot --non-interactive -m ${emailssl} --agree-tos --no-eff-email --nginx -d ${domain} -d www.${domain} --redirect
  136. else
  137. certbot --non-interactive -m ${emailssl} --agree-tos --no-eff-email --nginx -d ${domain} --redirect
  138. fi
  139. echo
  140.  
  141. echo "Install MariaDB"
  142. apt install mariadb-server -y
  143.  
  144. echo "Membuat User & Database"
  145. dbname="db_${domain//./}"
  146. dbuser="usr_${domain//./}"
  147. dbpass=$(pwgen 20 1)
  148. mysql << EOF
  149. CREATE DATABASE ${dbname};
  150. CREATE USER '${dbuser}'@'localhost' IDENTIFIED BY '${dbpass}';
  151. GRANT ALL PRIVILEGES ON ${dbname}.* TO '${dbuser}'@'localhost';
  152. FLUSH PRIVILEGES;
  153. EOF
  154.  
  155. echo "Install WP-CLI"
  156. wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  157. chmod +x wp-cli.phar
  158. mv wp-cli.phar /usr/local/bin/wp
  159.  
  160. echo "Install WordPress"
  161. wppass=$(pwgen 20 1)
  162. cd /var/www/${domain}
  163. rm -f index.php
  164. wp core download --allow-root
  165. wp config create --dbname=${dbname} --dbuser=${dbuser} --dbpass=${dbpass} --dbhost=localhost --allow-root
  166. wp core install --url=https://${domain} --title="${wptitle}" --admin_user="${wpadmin}" --admin_password=${wppass} --admin_email="${wpemail}" --allow-root
  167. chown -R www-data:www-data /var/www/${domain}
  168. chmod -R 755 /var/www/${domain}
  169. cd
  170. echo
  171.  
  172. cat > /root/${domain}-conf.txt << EOF
  173. IP Server = ${ip}
  174. Domain = ${domain}
  175. Email Let's Encrypt = ${emailssl}
  176.  
  177. Document Root = /var/www/${domain}
  178. Server Block Conf = /etc/nginx/conf.d/${domain}.conf
  179.  
  180. Nama Database = ${dbname}
  181. User Database = ${dbuser}
  182. Password Database = ${dbpass}
  183.  
  184. WP Admin User = ${wpadmin}
  185. WP Admin Email = ${wpemail}
  186. WP Admin Password = ${wppass}
  187. EOF
  188.  
  189. echo
  190. echo "Instalasi WordPress dengan LEMP sudah selesai"
  191. echo "Informasi konfigurasi tersimpan di /root/${domain}-conf.txt"
  192. echo
  193. cat /root/${domain}-conf.txt
  194. echo "Reboot server ..."
  195. reboot
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement