Install WordPress with Nginx on Ubuntu 15.10 & 14.04WordPress is a free and open-source content management system (CMS) based on PHP and MySQL.WordPress is installed on a web server, which either is part of an Internet hosting service or is a network host itself; the first case may be on a service like WordPress.com, for example, and the second case is a computer running the software package WordPress.org.
Step 1 – Setup LEMP Stack
First we will add all required PPA to our system. Following commands will add PPA for Nginx, PHP5 and MySQL on your system.
$ echo "deb-src http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list
$ echo "deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list
$ sudo apt-get install python-software-properties
Example:-
root@ip-172-31-27-102:~# sudo apt-get install python-software-properties
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
python-software-properties
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 19.6 kB of archives.
After this operation, 138 kB of additional disk space will be used.
Get:1 http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-software-properties all 0.92.37.7 [19.6 kB]
Fetched 19.6 kB in 0s (0 B/s)
Selecting previously unselected package python-software-properties.
(Reading database ... 51150 files and directories currently installed.)
Preparing to unpack .../python-software-properties_0.92.37.7_all.deb ...
Unpacking python-software-properties (0.92.37.7) ...
Setting up python-software-properties (0.92.37.7) ...
root@ip-172-31-27-102:~# sudo add-apt-repository -y ppa:ondrej/mysql-5.5
gpg: keyring `/tmp/tmpmlk2941t/secring.gpg' created
gpg: keyring `/tmp/tmpmlk2941t/pubring.gpg' created
gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpmlk2941t/trustdb.gpg: trustdb created
gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
$ sudo add-apt-repository -y ppa:ondrej/mysql-5.5
Example : -
root@ip-172-31-27-102:~# sudo add-apt-repository -y ppa:ondrej/mysql-5.5
gpg: keyring `/tmp/tmpmlk2941t/secring.gpg' created
gpg: keyring `/tmp/tmpmlk2941t/pubring.gpg' created
gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpmlk2941t/trustdb.gpg: trustdb created
gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
$ sudo add-apt-repository ppa:ondrej/php5
Example : -
root@ip-172-31-27-102:~# sudo add-apt-repository ppa:ondrej/php5
This PPA contains latest PHP 5.5 packaged for Ubuntu 14.04 LTS (Trusty).
You can get more information about the packages at https://deb.sury.org
If you need other PHP versions use:
PHP 5.4: ppa:ondrej/php5-oldstable (Ubuntu 12.04 LTS)
PHP 5.5: ppa:ondrej/php5 (Ubuntu 14.04 LTS)
PHP 5.6: ppa:ondrej/php5-5.6 (Ubuntu 14.04 LTS - Ubuntu 16.04 LTS)
PHP 5.6 and PHP 7.0: ppa:ondrej/php (Ubuntu 14.04 LTS - Ubuntu 16.04 LTS)
BUGS&FEATURES: This PPA now has a issue tracker: https://deb.sury.org/pages/bugreporting.html
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating: https://deb.sury.org/pages/donate.html
WARNING: add-apt-repository is broken with non-UTF-8 locales, see https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
# apt-get install -y language-pack-en-base
# LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php5
More info: https://launchpad.net/~ondrej/+archive/ubuntu/php5
Press [ENTER] to continue or ctrl-c to cancel adding it
gpg: keyring `/tmp/tmpq141jr43/secring.gpg' created
gpg: keyring `/tmp/tmpq141jr43/pubring.gpg' created
gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpq141jr43/trustdb.gpg: trustdb created
gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
and now use following commands to install Nginx web server, PHP5 with PHP5-FPM and MySQL server.
$ curl http://nginx.org/keys/nginx_signing.key | apt-key add -
Example : -
root@ip-172-31-27-102:~# curl http://nginx.org/keys/nginx_signing.key | apt-key add -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1559 100 1559 0 0 11066 0 --:--:-- --:--:-- --:--:-- 11056
OK
$ sudo apt-get update
$ sudo apt-get install nginx php5 php5-fpm mysql-server php5-mysql
Set Mysql Password ...
Step 2 — Configure PHP-FPM
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features.
$ sudo nano /etc/php5/fpm/php.ini
un-comment cgi.fix_pathinfo=1 line and set value to 0.
cgi.fix_pathinfo=0
Now set the listen parameter in /etc/php5/fpm/pool.d/www.conf configuration file. Here you can use php5-fpm socket to work or start php5-fpm server on any port as service. We are going to use it as service.
$ sudo nano /etc/php5/fpm/pool.d/www.conf
Now make changes in configuration file as below. Commend listen with socket file and enable it as service
#listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
Step 3 — Download and Configure WordPress
Download Latest WordPress archive file from its office web using following command.
$ wget http://wordpress.org/latest.tar.gz
root@ip-172-31-27-102:/var/www/html# wget http://wordpress.org/latest.tar.gz
--2016-02-16 12:20:04-- http://wordpress.org/latest.tar.gz
Resolving wordpress.org (wordpress.org)... 66.155.40.250, 66.155.40.249
Connecting to wordpress.org (wordpress.org)|66.155.40.250|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://wordpress.org/latest.tar.gz [following]
--2016-02-16 12:20:05-- https://wordpress.org/latest.tar.gz
Connecting to wordpress.org (wordpress.org)|66.155.40.250|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7099520 (6.8M) [application/octet-stream]
Saving to: ‘latest.tar.gz’
100%[=============================================================================================================================>] 7,099,520 11.6MB/s in 0.6s
2016-02-16 12:20:05 (11.6 MB/s) - ‘latest.tar.gz’ saved [7099520/7099520]
root@ip-172-31-27-102:/var/www/html#
Extract archive in document root of you domain and update permissions on files.
$ tar xzf latest.tar.gz
$ sudo mv wordpress /var/www/example.com
$ sudo chown -R apache:apache /var/www/example.com
$ sudo chmod -R 755 /var/www/example.com
Step 4 — Create MySQL Database and User
After extracting WordPress codebase, Let’s create a mysql database and user account for configuring WordPress. Use following set of command to do it
$ mysql -u root -p
Enter password:
mysql> CREATE DATABASE wp_db;
mysql> GRANT ALL ON wp_db.* to 'wp_user'@'localhost' IDENTIFIED BY '_secret_password_';
mysql> FLUSH PRIVILEGES;
mysql> quit
Step 5 — Configure Nginx VirtualHost
Finally do the configuration of Nginx server block (Virtual Host). For this example we are creating a new configuration file for our domain example.com.
$ sudo nano /etc/nginx/conf.d/example.com.conf
and make changes as below.
server {
listen 80;
root /var/www/example.com;
index index.php index.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php?q=$request_uri;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
After installing all services on your system, start all required services.
$ sudo service nginx restart
$ sudo service php5-fpm restart
Step 6 — Start WordPress Web Installer
WordPress provides a web installer for easy to setup WordPress without editing files manually. After completing above steps just point your browser to your domain. Fill the database details and click Submit
After submitting database details, click on “Run the Install”
Install WordPress Button
- Blog Title
- Username of admin account (for security do not use as “admin”)
- Admin password ( twice )
- Email ID
After completing above step, You have installed WordPress successfully, Now you will get WordPress success installation message.