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.
[remi]
name=Remi's RPM repository for Enterprise Linux 6 – $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
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
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
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(); ?>
Revisions
- June 16, 2017 @ 11:39:48 [Current Revision] by Sharing Solution
- June 16, 2017 @ 11:39:48 by Sharing Solution
No comments yet.