Install and Configure WordPress With NGINX on Ubuntu

481 0
Install and Configure WordPress With NGINX on Ubuntu

WordPress is popular, Dynamic and blog focused content management system. WordPress is by far the most famous and most used content management system for websites. There are 74,652,825 websites are using WordPress as a Content Management System for their websites and it is increasing day by day.

Many of the bloggers and webmasters like me are moving to SSD Cloud hosting for faster and better performance of their websites. So I decided to bring this tutorial, that would help you to install WordPress on SSD cloud, Ubuntu Server. Before you proceed, I would highly recommend to read and implement the Getting started guide and then secure your server. Once you complete both these steps then you can move to this WordPress Installation guide.

Before you begin make sure you have two things configured:

1. Hostname

Check your hostname by typing the following command:

hostname –f

The first command will output your hostname, while the second command will output the fully qualified domain name (FQDN).

2. MySQL Database.

Once you ensure that these two things are configured on your server, proceed to the next step and install MySQL Server by running the following command:

sudo apt-get install mysql-server

During the installation process, you will be prompted to set a root password. It is recommended that you choose a strong password.

Now harden the MySQL Server by running the mysql_secure_installation script.

sudo mysql_secure_installation

Now, login into your MySQL as a root user using the following command:

mysql -u root -p

Now enter the root login credentials to login into MySQL.

Once you enter into MySQL, create a database for your WordPress based website using the following command:

create database database-name;

Now, grant user privileges for the newly-created database. Replace user and password with the username and password you wish to use:

grant all on database-name.* to 'user' identified by 'password';

Now exit the MySQL:


Deploy PHP with FastCGI

We all know that WordPress is PHP based and in order to deploy PHP applications, we need to implement the “PHP-FastCGI”. This will allow NGINX to properly handle and serve PHP based web applications and websites.


apt-get install php5-cli php5-cgi php5-fpm

For PHP7.0-FPM

sudo apt-get install php7.0-cli php7.0-cgi php7.0-fpm

Once you are done deploying PHP5-FPM or PHP7.0-FPM, you need to move further and install the NGINX web Server.

NGINX Server Setup

Install NGINX

sudo apt-get install nginx

Now create a new config file for your websites:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/

Now you need to open the config file, in our case, it is, and edit it.

sudo vim /etc/nginx/sites-available/

Now you need to configure this file, and your file should look like this:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/;
index index.php;
# Make site accessible from http://localhost/
server_name *;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-cgi alone:
# fastcgi_pass;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;

You can keep the exact copy of the above content as well. But do not forget to update the Website Directory and Server Name (server_name).

Once you’ve created and configured the file you can move on.

Next, we need to link this config file to the sites enabled directory. Do this you need to run the following command:

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Now, remove the default config file from the sites enabled directory

sudo rm /etc/nginx/sites-enabled/default

Finally, restart the NGINX service

sudo service nginx restart

Changes Inside HOST file

Open the host file inside the etc directory and update your domain name inside the host file. It should look like something this:


Install WordPress


Create an src directory under your website’s directory and download the latest copy of the WordPress. In this guide, I have chosen


as a home directory. So, create that directory if you do not have:

sudo mkdir /var/www/

Now, navigate inside the src directory.

cd /var/www/

Now set the owner of the new directory to be your web server’s user. In this instance, our web server is NGINX:

sudo chown -R www-data:www-data /var/www/

Now you need to download the latest version of WordPress and expand it:

sudo wget
sudo -u www-data tar -xvf latest.tar.gz

Now you need to move latest.tar.gz by renaming it as wordpress, followed by the date to store a pristine backup of the source files:

sudo mv latest.tar.gz wordpress-`date "+%Y-%m-%d"`.tar.gz

Copy the WordPress files to your public_html folder, then remove the empty wordpress folder in the src directory:

sudo cp -R wordpress/* ../public_html/
sudo rm -rf wordpress/

Configure WordPress

Method 1:

Now, visit your domain in the browser and follow the configuration process by entering Database Name, User Name, and Password. Keep Database Host and Table Prefix to default localhost and wp_ respectively.

Submit the information, and you are good to go.

Method 2:

Navigate to your website directory /var/www/ and look for the wp-config-sample.php file and make a duplicate copy with the name wp-config.php inside the same directory.

sudo cp wp-config-sample.php wp-config.php

Now edit the wp-config.php file using your favorite editor and enter the database information.

sudo vim wp-config.php

Once you enter the database details, exit the edit mode by pressing ESC and then then press :wq!, hit enter to save and exit. Now when you visit your website by entering the domain name into the browser, you can see a recent default WordPress theme based website. You can change theme and pages entering into the admin panel. You might face an issue while trying to update WordPress or install new themes or plugins. You will be asked to input your FTP information. Which sometimes feels very frustrating, especially if you are new to WordPress. To bypass this, you need to configure your wp-config.php file by adding the FS_METHOD:

/** Bypass FTP */
define('FS_METHOD', 'direct');

Once you are done, give WordPress permission to add and edit files in the public_html folder:

sudo chown -R www-data:www-data /var/www/

Congratulations! Now, you have a successfully installed WordPress based website running.

Now you will be able to login into your new WordPress based website. Next, you can configure your website using web-based interface.

If you face any difficulty throughout this process, put it in the comment section below. I will give my best to resolve it.

Hope you will find this article useful. Please put your feedback in the comment section below and do not forget to share it with your friends on social media

In this article

Join the Conversation