in Debian, Linux, Wordpress

How to install and configure WordPress hosted on Nginx with PHP-FPM on Debian based distros

Nginx is an open source web server. Users have been moving to Nginx because of the high performance and stability and as of February 2014, Nginx is hosting around 15% of all web servers according to Netcraft’s Web Server Survey. Nginx is a great option for hosting WordPress sites.

It’s assumed that you have already installed Nginx with PHP-FPM. If you haven’t already done that, you can use this tutorial: How to install Nginx with PHP and MySql support on wheezy

1. Create the database for WordPress

mysql -u root -p
CREATE DATABASE {database};
CREATE USER {username}@localhost;
GRANT ALL PRIVILEGES ON {username}.* TO {database}@localhost IDENTIFIED BY '{password}';
FLUSH PRIVILEGES;
exit

Replace {database}, {username} and {password} with the database name and credentials you want to use. You will use this in the WordPress installer.

2. Download the latest version of WordPress

cd /usr/share/nginx/www
wget http://wordpress.org/latest.tar.gz

In this tutorial, I’m using /usr/share/nginx/www/wordpress but you probably want to change that into something else.

3. Extract WordPress

cd wordpress
tar zxvf latest.tar.gz

4. Make wp-content writable and the root directory temporarily writable to allow WordPress to create the config file

chmod o+w ./
chmod 777 wp-content -R

5. Change the directory owner and group to www-data

chown www-data.www-data ./ -R

6. Create a Nginx virtual host (pico /etc/nginx/sites-available/wordpress)

The contents should be similar to the text below, you may need to adjust the root and host name

server {
        listen 80;
 
        root /usr/share/nginx/www/wordpress;
        index index.php;
 
        server_name {domain};
 
        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }
 
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

Change {domain} to the domain or host that you want to use for the new WordPress site

7. Enable the new virtual host

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

8. Restart Nginx

/etc/init.d/nginx restart

9. Run the WordPress installer by opening this location in a web browser. You will have to provide the database credentials and some more information for the setup.

http://{domain}

Change {domain} to the server name used in the Nginx virtual host file

10. When the installer has completed, change the permissions of the root directory

chmod o-w ./