###Installing needed software ###
I'm using Arch Linux as the server, so let's install needed software. First be sure you have the latest available software now install all the stuff.
pacman -Syu
Now install Nginx, PHP-FPM and MySQL
pacman -S nginx php-fpm mysql
Now let's first take some steps to be sure mysql installation is secure.
/etc/rc.d/mysqld start
mysql_secure_installation
In case you need help answering the questions, you can find some help in this page check the MySQL section.
###Configure PHP-FPM ###
First let's be sure PHP-FPM is using a socks instead of listening to a port, that makes it more efficient. In my Arch Linux version, that is already that way. Anyway look for these lines.
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
And be sure that the one listening to a port is commented and not the one listening to a socket, if you need to add the line do it.
You also need to uncomment these lines from php.ini file:
;extension=mysqli.so
;extension=mysql.so
And make them look like this:
extension=mysqli.so
extension=mysql.so
This way PHP will be able to connect with MySQL, which is needed by Wordpress
###Configure Nginx ###
Now that we have PHP-FPM working and listing to a socket, let's make Nginx send PHP requests to that socket.
Add this to your server snippet:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
We should now have a server capable to manage PHP scripts.
###Configure MySQL ###
It is MySQL turn now, let's create the database:
mysql -u root -p
Now create the database, and grant access to the user.
CREATE DATABASE `wordpress`;
GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpress'@'localhost' IDENTIFIED BY 'your-password';
FLUSH PRIVILEGES;
EXIT
Enable MySQL Query Cache
Add this to the my.cnf file in the [mysqld] section:
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
This will make MySQL a little bit more efficient, as it will be able to cache some queries.
###Install and enable APC ###
In my case with Arch Linux I did:
pacman -S php-apc
And to enable it:
- Edit
php.inifile - Add this line:
extension=apc.so
APC is:
Alternative PHP Cache is a free, open source (PHP license) framework that optimizes PHP intermediate code and caches data and compiled code from the PHP bytecode compiler in shared memory. (Source: Wikipedia)
###Install Varnish ###
APC will increase performance with logged users, but for not logged users, the best way to increase performance is by using Varnish Cache.
Installing Varnish Cache
pacman -S varnish
Configure Varnish Cache for Wordpress
###Install Wordpress ###
You are now ready to go to wordpress site and download the latest version, and install it.
###Full Configuration Files ###
If you want to get the full configuration files, download them here
Here is a description of what you will find:
- /etc/nginx/conf/nginx.conf
- /etc/php/php.ini
- /etc/php/php-fpm
- /etc/conf.d/varnish
- /etch/varnish/default.vcl
###Comparing Nginx and Apache ###
You can see some differences between Apache and Nginx while running Wordpress, with and without APC and Varnish