Script: Install WordPress on a Debian/Ubuntu VPS

Leave reply

Previously we explained how to install WordPress on a Debian VPS. Also you can install WordPress on Debian or Ubuntu VPS in an easier way, using the script provided in this article. This script will create a MySQL database, will download and configure the latest WordPress version and create Apache virtual host for you automatically. All you need to do is to create a file on your WordPress VPS with the content shown below, make the file executable, execute it and enter a few parameters.

Create a new file and paste the script:

# nano wpinstall
#!/bin/bash
#
# Install WordPress on a Debian/Ubuntu VPS
#

# Create MySQL database
read -p "Enter your MySQL root password: " rootpass
read -p "Database name: " dbname
read -p "Database username: " dbuser
read -p "Enter a password for user $dbuser: " userpass
echo "CREATE DATABASE $dbname;" | mysql -u root -p$rootpass
echo "CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$userpass';" | mysql -u root -p$rootpass
echo "GRANT ALL PRIVILEGES ON $dbname.* TO '$bduser'@'localhost';" | mysql -u root -p$rootpass
echo "FLUSH PRIVILEGES;" | mysql -u root -p$rootpass
echo "New MySQL database is successfully created"

# Download, unpack and configure WordPress
read -r -p "Enter your WordPress URL? [e.g. mywebsite.com]: " wpURL
wget -q -O - "http://wordpress.org/latest.tar.gz" | tar -xzf - -C /var/www --transform s/wordpress/$wpURL/
chown www-data: -R /var/www/$wpURL && cd /var/www/$wpURL
cp wp-config-sample.php wp-config.php
chmod 640 wp-config.php
mkdir uploads
sed -i "s/database_name_here/$dbname/;s/username_here/$dbuser/;s/password_here/$userpass/" wp-config.php

# Create Apache virtual host
echo "
ServerName $wpURL
ServerAlias www.$wpURL
DocumentRoot /var/www/$wpURL
DirectoryIndex index.php

Options FollowSymLinks
AllowOverride All

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
" > /etc/apache2/sites-available/$wpURL

# Enable the site
a2ensite $wpURL
service apache2 restart

# Output
WPVER=$(grep "wp_version = " /var/www/$wpURL/wp-includes/version.php |awk -F\' '{print $2}')
echo -e "\nWordPress version $WPVER is successfully installed!"
echo -en "\aPlease go to http://$wpURL and finish the installation\n"

Make the script executable:

# chmod +x wpinstall

Execute the script:

# ./wpinstall

4 Responses to “Script: Install WordPress on a Debian/Ubuntu VPS”

  1. v

    Fantastic!!!

    friend was on the fence trying to decide on VPS, this might just push him over.
    Also a script for UFW, to change ports, and webmin/virtual min instal would be nice
    referred a friend to host with you.

    Reply
  2. bynw

    That’s a good script. I was writing my own and decided to see how many others I could find.
    The question I have here, is WP Authentication Unique Keys and Salts. Those are going to be blank if you just copy over the sample wordpress config file. Unless I’m missing something when its ran the 1st time.

    Reply
  3. Richard Smith

    Thanks very much for this script, used it successfully to automate WordPress installs, the only change I’d suggest is telling users they may need to run …

    sudo ./wpinstall

    so that all the permissions are setup.

    Reply

Leave a Reply