CentOS 7 – Install latest Nginx, Mariadb, PHP 5.6

Setup Nginx server with latest Mariadb and latest PHP 5.6
CentOS 7 (with root user)
Step 1: Installing Remi Repository
# yum update && yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Install locate function to find the location of files
# yum install mlocate
# updatedb

Install Vim to edit file easily
# yum install vim

Step 2: Enabling the Remi Repository
Now you make sure that remi repository is enabled and all set to install chosen PHP version, to do this open  remi.repo file and make sure the line set to enabled=1 as instructed below, in order to install PHP 5.5 or  5.6.

name=Remi's RPM repository for Enterprise Linux 6 – $basearch

Step 3: Install Nginx
#yum install nginx

Start Nginx on your VPS
# systemctl start nginx

Enable Nginx to start on boot
# systemctl enable nginx

Step 4: Install Mariadb
For MariaDB Installation on RHEL/CentOS 7 and Fedora 18-24

To enable the MariaDB repository on RHEL/CentOS 7 distributions, create a file named  /etc/yum.repos.d/mariadb.repo with the following contents:
# vi /etc/yum.repos.d/mariadb.repo
name = MariaDB
baseurl = http://yum.mariadb.org/10.2.6/centos7-amd64

After enabling MariaDB repository, then do:

# yum install mariadb-server mariadb
# systemctl start mariadb
# mysql_secure_installation
# systemctl enable mariadb

Step 5: Install PHP 
# yum install php php-mysql php-fpm

Install php extensions
# yum install php-pcre php-mbstring php-mcrypt php-spl php-ctype php-openssl php-intl php-dom

Configure the PHP Processor
# vim /etc/php.ini
What we are looking for in this file is the parameter that sets cgi.fix_pathinfo. This will be commented out with a semi-colon (;) and set to "1" by default.

This is an extremely insecure setting because it tells PHP to attempt to execute the closest file it can find if a PHP file does not match exactly. This basically would allow users to craft PHP requests in a way that would allow them to execute scripts that they shouldn't be allowed to execute.

We will change both of these conditions by uncommenting the line and setting it to "0" like this: cgi.fix_pathinfo=0
Save and close the file when you are finished.

Next, open the php-fpm configuration file www.conf:

# vim /etc/php-fpm.d/www.conf

Find the line that specifies the listen parameter, and change it so it looks like the following:

# listen = /var/run/php-fpm/php-fpm.sock
Next, find the lines that set the listen.owner and listen.group and uncomment them. They should look like this:

# listen.owner = nobody
# listen.group = nobody
# listen.mode = 0666

Lastly, find the lines that set the user and group and change their values from "apache" to "nginx":

# user = nginx
# group = nginx

Then save and quit.

Now, we just need to start our PHP processor by typing:

# systemctl start php-fpm
This will implement the change that we made.

Next, enable php-fpm to start on boot:

# systemctl enable php-fpm

Step 6: Configure Nginx to Process PHP Pages
Now, we have all of the required components installed. The only configuration change we still need to do is tell Nginx to use our PHP processor for dynamic content.

We do this on the server block level (server blocks are similar to Apache's virtual hosts). Open the default Nginx server block configuration file by typing:

# vim /etc/nginx/conf.d/default.conf

The changes that you need to make are in red in the text below. If you prefer, you may just copy and paste everything, then replace the value of server_name with the appropriate domain name or IP address:

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;

    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;

When you've made the above changes, you can save and close the file.

Restart Nginx to make the necessary changes:

# systemctl restart nginx

Final step: Step Five — Test PHP Processing on your Web Server
In order to test that our system is configured properly for PHP, we can create a very basic PHP script.

We will call this script info.php. In order for Apache to find the file and serve it correctly, it must be saved to a very specific directory, which is called the "web root".

In CentOS 7, this directory is located at /usr/share/nginx/html/. We can create the file at that location by typing:

# vi /usr/share/nginx/html/info.php

This will open a blank file. We want to put the following text, which is valid PHP code, inside the file:

Test PHP Script
<?php phpinfo(); ?>


No comments yet.

Leave a Reply