Advertisement
valdo123

BASH WordPress with LAMP Stack - Debian Based

Jan 6th, 2023
850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.09 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. clear
  4. echo "Install WordPress dengan LAMP di Ubuntu 22.04 LTS"
  5. echo "----------------------"
  6. echo "Spesifikasi:"
  7. echo "1. Apache"
  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 Apache PPA"
  40. add-apt-repository ppa:ondrej/apache2 -y
  41. echo
  42.  
  43. echo "Install Apache"
  44. apt install apache2 -y
  45. echo
  46.  
  47. echo "Membuat document root"
  48. mkdir /var/www/${domain}
  49. echo
  50.  
  51. echo "Ubah konfigurasi default virtual host"
  52. sed -i "s/#ServerName www.example.com/ServerName ${ip}/g" /etc/apache2/sites-available/000-default.conf
  53. echo
  54.  
  55. echo "Membuat konfigurasi virtual host ${domain}"
  56. if [ $tipedomain == 1  ]
  57. then
  58. cat > /etc/apache2/sites-available/${domain}.conf << EOF
  59. <VirtualHost *:80>
  60.     ServerName ${domain}
  61.     ServerAlias www.${domain}
  62.     DocumentRoot /var/www/${domain}
  63.     <Directory /var/www/${domain}>
  64.         Options Indexes FollowSymLinks MultiViews
  65.         AllowOverride All
  66.         Require all granted
  67.     </Directory>
  68.     ErrorLog /var/log/apache2/${domain}_error.log
  69.     CustomLog /var/log/apache2/${domain}_access.log combined
  70. </VirtualHost>
  71. EOF
  72. else
  73. cat > /etc/apache2/sites-available/${domain}.conf << EOF
  74. <VirtualHost *:80>
  75.     ServerName ${domain}
  76.     DocumentRoot /var/www/${domain}
  77.     <Directory /var/www/${domain}>
  78.         Options Indexes FollowSymLinks MultiViews
  79.         AllowOverride All
  80.         Require all granted
  81.     </Directory>
  82.     ErrorLog /var/log/apache2/${domain}_error.log
  83.     CustomLog /var/log/apache2/${domain}_access.log combined
  84. </VirtualHost>
  85. EOF
  86. fi    
  87. echo
  88.  
  89. echo "Restart Apache"
  90. a2ensite ${domain}.conf
  91. a2enmod rewrite
  92. systemctl restart apache2
  93. echo
  94.  
  95. echo "Install Certbot Let's Encrypt"
  96. apt install certbot python3-certbot-apache -y
  97. echo
  98.  
  99. echo "Request SSL untuk ${domain}"
  100. if [ $tipedomain == 1  ]
  101. then
  102. certbot --non-interactive -m ${emailssl} --agree-tos --no-eff-email --apache -d ${domain} -d www.${domain} --redirect
  103. else
  104. certbot --non-interactive -m ${emailssl} --agree-tos --no-eff-email --apache -d ${domain} --redirect
  105. fi
  106. echo
  107.  
  108. echo "Tambah repository PHP PPA"
  109. add-apt-repository ppa:ondrej/php -y
  110. echo
  111.  
  112. echo "Install PHP $vphp"
  113. apt install php$vphp libapache2-mod-php$vphp php$vphp-cli php$vphp-common php$vphp-mbstring php$vphp-gd php$vphp-intl php$vphp-xml php$vphp-mysql php$vphp-zip -y
  114. systemctl restart apache2
  115. echo
  116.  
  117. sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 200M/g" /etc/php/$vphp/apache2/php.ini
  118. sed -i "s/post_max_size = 8M/post_max_size = 200M/g" /etc/php/$vphp/apache2/php.ini
  119. sed -i "s/max_execution_time = 30/max_execution_time = 600/g" /etc/php/$vphp/apache2/php.ini
  120. sed -i "s/max_input_time = 60/max_input_time = 600/g" /etc/php/$vphp/apache2/php.ini
  121. sed -i "s/memory_limit = 128M/memory_limit = 256M/g" /etc/php/$vphp/apache2/php.ini
  122.  
  123. systemctl restart apache2
  124.  
  125. echo "Install MariaDB"
  126. apt install mariadb-server -y
  127.  
  128. echo "Membuat User & Database"
  129. dbname="db_${domain//./}"
  130. dbuser="usr_${domain//./}"
  131. dbpass=$(pwgen 20 1)
  132. mysql << EOF
  133. CREATE DATABASE ${dbname};
  134. CREATE USER '${dbuser}'@'localhost' IDENTIFIED BY '${dbpass}';
  135. GRANT ALL PRIVILEGES ON ${dbname}.* TO '${dbuser}'@'localhost';
  136. FLUSH PRIVILEGES;
  137. EOF
  138.  
  139. echo "Install WP-CLI"
  140. wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  141. chmod +x wp-cli.phar
  142. mv wp-cli.phar /usr/local/bin/wp
  143.  
  144. echo "Install WordPress"
  145. wppass=$(pwgen 20 1)
  146. cd /var/www/${domain}
  147. wp core download --allow-root
  148. wp config create --dbname=${dbname} --dbuser=${dbuser} --dbpass=${dbpass} --dbhost=localhost --allow-root
  149. wp core install --url=https://${domain} --title="${wptitle}" --admin_user="${wpadmin}" --admin_password=${wppass} --admin_email="${wpemail}" --allow-root
  150. chown -R www-data:www-data /var/www/${domain}
  151. chmod -R 755 /var/www/${domain}
  152. cd
  153. echo
  154.  
  155. cat > /root/${domain}-conf.txt << EOF
  156. IP Server = ${ip}
  157. Domain = ${domain}
  158. Email Let's Encrypt = ${emailssl}
  159.  
  160. Document Root = /var/www/${domain}
  161. Virtual Host Conf = /etc/apache2/sites-available/${domain}.conf
  162.  
  163. Nama Database = ${dbname}
  164. User Database = ${dbuser}
  165. Password Database = ${dbpass}
  166.  
  167. WP Admin User = ${wpadmin}
  168. WP Admin Email = ${wpemail}
  169. WP Admin Password = ${wppass}
  170. EOF
  171.  
  172. echo
  173. echo "Instalasi WordPress dengan LAMP sudah selesai"
  174. echo "Informasi konfigurasi tersimpan di /root/${domain}-conf.txt"
  175. echo
  176. cat /root/${domain}-conf.txt
  177. echo "Reboot server ..."
  178. reboot
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement