Setting up NginX, MariaDB and PHP with EL6

I decided to port this over from one of my Previous posts to give myself some content worth reading. Its a guide I wrote that walks you through the process of setting up MariaDB, NginX and PHP on CentOS 6. This is now the default “lamp” (I suppose its now LNMP) stack of EL7. Pre-Requisites : An EL6 Server (A VPS Will do) 15–20 Minutes of Spare Time

Initial Setup

First we need to install the EPEL Package source.

# rpm -Uivh

PHP and php-fpm

What is php-fpm? PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. To install via yum you can simply do

# yum -y install php php-fpm php-mysql


What is MariaDB? MariaDB is a drop in replacement for mySQL (i.e its entirely compatible with mySQL) To install it you need to add a file called mariadb.repo to /etc/yum/repos.d the file should contain

# MariaDB 10.0 CentOS repository list - created 2014-04-28 00:16 UTC
name = MariaDB
baseurl =

Once you have this simply install with

# yum -y install MariaDB-* --skip-broken --exclude=MariaDB-Galera-server

The above will install all you need unless you wish to setup a MariaDB Cluster (Stay Tuned for another tut) You can access the MariaDB Console from

# mysql


Nginx (pronounced engine-x) is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. Igor Sysoev started development of Nginx in 2002, with the first public release in 2004. Nginx now hosts nearly 12.18% (22.2M) of active sites across all domains. Nginx is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption. Installing NginX is pretty simple its just

# yum -y install nginx

Setting up your vhost Create a file in /etc/nginx/conf.d called The file should contain the following (I have commented)

server {
listen 80; # Use port 80 as listening port
server_name; # Serve both and
root /var/www/example/; # Absolute Path to webroot
index index.php index.htm index.html; # index file names

# This block denies access to common config files
location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|store) {
deny all;
return 403;

# Cache configuration for image files
location ~* \.(gif|jpe?g|png|css)$ {
expires 30d;

# Handle PHP File
location ~ \.php$ {
try_files $uri =404; # If the file does not exist return a 404 error
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # Use a unix socket for fast-cgi
fastcgi_index index.php; # Indec files for fast_cgi
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Fast CGI Script Location
include fastcgi_params; # Include Fast CGI Defaults

Starting Up

# service php-fpm start
# chkconfig php-fpm on
# service nginx start
# chkconfig nginx on
# service mysqld start # NOTE: MariaDB uses mysqld as daemon name
# chkconfig mysqld on