From 15b8e7342f1d162c44594c8ddab92c457df50533 Mon Sep 17 00:00:00 2001 From: Gopal Raha Date: Mon, 23 Oct 2017 12:03:10 +0530 Subject: [PATCH] Script to Install WordPress with Nginx, MySQL, PHP-FPM for Ubuntu 16.04 Script to Install WordPress with Nginx, MySQL, PHP-FPM for Ubuntu 16.04 --- Ubuntu-16.04/cms/wordpress-nginx.sh | 97 +++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Ubuntu-16.04/cms/wordpress-nginx.sh diff --git a/Ubuntu-16.04/cms/wordpress-nginx.sh b/Ubuntu-16.04/cms/wordpress-nginx.sh new file mode 100644 index 0000000..04ceeab --- /dev/null +++ b/Ubuntu-16.04/cms/wordpress-nginx.sh @@ -0,0 +1,97 @@ +#!/bin/sh +# +# WordPress Setup Script +# +# This script will install and configure Wordpress on +# an Ubuntu 16.04 droplet + +export DEBIAN_FRONTEND=noninteractive; + +# Write passwords to file# Generate root and WordPress mysql passwords +rootmysqlpass=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev | tr -dc 'a-zA-Z0-9'`; +wpmysqlpass=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev | tr -dc 'a-zA-Z0-9'`; + +# Write passwords to file +echo "Root MySQL Password: $rootmysqlpass" > /root/passwords.txt; +echo "Wordpress MySQL Password: $wpmysqlpass" >> /root/passwords.txt; + +# Update Ubuntu +apt-get update; +apt-get -y upgrade; + +# Update Ubuntu +apt-get update; +apt-get -y upgrade; + +# Install Nginx/MySQL +apt-get -y install nginx php7.0 php7.0-fpm php7.0-mysql php7.0-curl php7.0-zip php7.0-json php7.0-xml mysql-server mysql-client unzip wget; + +# Configure PHP +sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini +sed -i "s|listen = 127.0.0.1:9000|listen = /var/run/php/php7.0-fpm.sock|" /etc/php/7.0/fpm/pool.d/www.conf; +sudo systemctl restart php7.0-fpm + +# Configure Nginx +mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak +cat > /etc/nginx/sites-available/default << "EOF" +server { + listen 80 default_server; + listen [::]:80 default_server ipv6only=on; + root /var/www/html; + index index.php index.html index.htm; + server_name localhost; + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ /index.php?q=$uri&$args; + # Uncomment to enable naxsi on this location + # include /etc/nginx/naxsi.rules + } + error_page 404 /404.html; + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + location ~ \.php$ { + try_files $uri =404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; + fastcgi_index index.php; + include fastcgi.conf; + } +} +EOF + +# Configure Nginx sites-available +sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/wordpress +sudo rm /etc/nginx/sites-available/default +sudo rm /etc/nginx/sites-enabled/default +sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress + +# Download and uncompress WordPress +wget https://wordpress.org/latest.zip -O /tmp/wordpress.zip; +cd /tmp/; +unzip /tmp/wordpress.zip; + +# Set up database user +/usr/bin/mysqladmin -u root -h localhost create wordpress; +/usr/bin/mysqladmin -u root -h localhost password $rootmysqlpass; +/usr/bin/mysql -uroot -p$rootmysqlpass -e "CREATE USER wordpress@localhost IDENTIFIED BY '"$wpmysqlpass"'"; +/usr/bin/mysql -uroot -p$rootmysqlpass -e "GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost"; + +# Configure WordPress +cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php; +sed -i "s/'DB_NAME', 'database_name_here'/'DB_NAME', 'wordpress'/g" /tmp/wordpress/wp-config.php; +sed -i "s/'DB_USER', 'username_here'/'DB_USER', 'wordpress'/g" /tmp/wordpress/wp-config.php; +sed -i "s/'DB_PASSWORD', 'password_here'/'DB_PASSWORD', '$wpmysqlpass'/g" /tmp/wordpress/wp-config.php; + +for i in `seq 1 8` +do +wp_salt=$(~`+=,.;:/?|' | head -c 64 | sed -e 's/[\/&]/\\&/g'); +sed -i "0,/put your unique phrase here/s/put your unique phrase here/$wp_salt/" /tmp/wordpress/wp-config.php; +done + +cp -Rf /tmp/wordpress/* /var/www/html/.; +rm -f /var/www/html/index.html; +chown -Rf www-data:www-data /var/www/html; +sudo systemctl restart nginx;