How to install WordPress with nginx on Debian Wheezy

WordPress is the most popular Content Management System (CMS) on the planet. Over 20% of websites, is powered by WordPress. It is free and open-source. WordPress is built with PHP as a server-side language and MySql as a database.

Prerequisites for WordPress Installation

To get started with installing WordPress you’ll need to make sure that your server is ready for it.
You’ll need a Debian based server with root privileges and make sure you’ve Nginx, PHP and MySql installed. If you don’t have these things installed, learn how to install nginx, PHP & MySql.

Download WordPress:

To download WordPress write the following command on your terminal:

wget http://wordpress.org/latest.tar.gz

Unzip the downloaded file with the following command:

tar -xzvf latest.tar.gz

This will unzip the WordPress files and you’ll get all of these files in a directory called WordPress on your home directory.

Create WordPress Database and User

As WordPress will need a MySql database, you’ll need to create one.
Let’s login to MySql now by executing the following command:

mysql -u root -p

Provide your password and you’re logged in!

Create a database for WordPress:

CREATE DATABASE yourdbname;

Replace “yourdbname” with your desired database name.

Now let’s create a user for the above database:

CREATE USER youruser@localhost;

Replace “youruser” with your preferred username.

Set password for the above user:

SET PASSWORD FOR youruser @localhost= PASSWORD("password");

Replace “youruser” & “password” with your username and password.

Now grant permission to the user for this database:

GRANT ALL PRIVILEGES ON yourdbname.* TO youruser@localhost IDENTIFIED BY 'password';

Refresh MySql:

FLUSH PRIVILEGES;

We’re done with MySql, let’s exit:

exit;

Setup the WordPress Configuration:

Create a copy of the wp-config-sample.php file as wp-config.php. This file will contain all of your configurations:

cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php

Now open wp-config.php file:

sudo nano ~/wordpress/wp-config.php

Find the following lines of codes and replace with your own database information:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'yourdbname');

/** MySQL database username */
define('DB_USER', 'youruser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

Now, save the file and exit.

Move the files

Let’s create a directory where all of your WordPress files will be located. Replace example.com with your domain name:

sudo mkdir -p /var/www/example.com

Move the WordPress files to WordPress root directory:

sudo mv -r ~/wordpress/* /var/www

Give ownership to nginx user, replace username with your server username:

sudo chown -R www-data:www-data /var/www/example.com
sudo usermod -a -G www-data username

Set up nginx server blocks:

Now, you’ll need to set up your Nginx server blocks (virtual host). Create a new file for the WordPress host, copying the format from the default configuration. Replace example.com with your domain name:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

Open up the newly created file:

sudo nano /etc/nginx/sites-available/example.com

Add the following codes on that file, replace example.com with your domain:

server {
  listen 80;

  root /var/www/example.com;
  index index.php;

  server_name example.com www.example.com;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  location ~ .php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}

Save the file and exit.

Create Symbolic link for server block:

Create symbolic link for server block with the following command:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

Remove the default server block:

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

Restart nginx:

service nginx restart

WordPress Installation:

Now, access your WordPress online installation page by visiting this page: example.com/wp-admin/install.php

Provide the information that the page is asking & you’re done!

Have a happy blogging!