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 http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

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

MariaDB

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
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

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

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 example.com The file should contain the following (I have commented)

server {
    listen       80; # Use port 80 as listening port
    server_name  example.com www.example.com; # Serve both www.example.com and example.com
    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

Leave a Reply