Install Nginx with PHP 7.2.10 and PHP-FPM on Fedora 29 and RHEL/Centos 7.6

0
827

In this  tutorial we will show you how to install Nginx in Combination with last php stable version and included  PHP-FPM (FastCGI Process Manager)

i will not explain about nginx, i assume that everyone knows that very perfect web server and even better than apache

My Servers  is  Centos 7  with   IP : 192.168.2.98

Client is  Debian 9    with IP  : 192.168.2.98

Lets  start :

A.1 Change to root user.

su -

A.2 Install Needed repositories

Fedora 28/29

##Fedora 29 ##
rpm -Uvh http://rpms.famillecollet.com/fedora/remi-release-29.rpm

## Fedora 28 ##
rpm -Uvh http://rpms.famillecollet.com/fedora/remi-release-28.rpm

CentOS 7.5/6.10 and Red Hat (RHEL) 7.5/6.10 Remi repository

## Remi Dependency on CentOS 7 and Red Hat (RHEL) 7 ##
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

## CentOS 7 and Red Hat (RHEL) 7 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

## Remi Dependency on CentOS 6 and Red Hat (RHEL) 6 ##
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

## CentOS 6 and Red Hat (RHEL) 6 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

CentOS 7.6/6.10 and Red Hat (RHEL) 7.6/6.10  add Nginx repository

Create repo  file /etc/yum.repos.d/nginx.repo :
For CentOS

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Red Hat (RHEL)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

A.3 Install Nginx, PHP 7.2.11 and PHP-FPM
Fedora 28

dnf install nginx php-fpm php-common

===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing:
php-fpm x86_64 7.2.11-1.fc29 updates 1.5 M
nginx x86_64 1:1.12.1-14.fc29 fedora 518 k
Installing dependencies:
httpd-filesystem noarch 2.4.37-2.fc29 updates 15 k
php-common x86_64 7.2.11-1.fc29 updates 1.0 M
gperftools-libs x86_64 2.7-3.fc29 fedora 304 k
libunwind x86_64 1.2.1-6.fc29 fedora 61 k
nginx-filesystem noarch 1:1.12.1-14.fc29 fedora 9.6 k
nginx-mimetypes noarch 2.1.48-4.fc29 fedora 20 k

Transaction Summary

Fedora 27/26

dnf --enablerepo=remi --enablerepo=remi-php72 install nginx php-fpm php-common

CentOS 7.6/6.10 and Red Hat (RHEL) 7.6/6.10

yum --enablerepo=remi,remi-php72 install nginx php-fpm php-common

1.4 Install PHP 7.2.11 modules

OPcache (php-opcache) – The Zend OPcache provides faster PHP execution through opcode caching and optimization.
APCu (php-pecl-apcu) – APCu userland caching
CLI (php-cli) – Command-line interface for PHP
PEAR (php-pear) – PHP Extension and Application Repository framework
PDO (php-pdo) – A database access abstraction module for PHP applications
MySQL (php-mysqlnd) – A module for PHP applications that use MySQL databases
PostgreSQL (php-pgsql) – A PostgreSQL database module for PHP
MongoDB (php-pecl-mongodb) – PHP MongoDB database driver
Redis (php-pecl-redis) – Extension for communicating with the Redis key-value store
Memcache (php-pecl-memcache) – Extension to work with the Memcached caching daemon
Memcached (php-pecl-memcached) – Extension to work with the Memcached caching daemon
GD (php-gd) – A module for PHP applications for using the gd graphics library
XML (php-xml) – A module for PHP applications which use XML
MBString (php-mbstring) – A module for PHP applications which need multi-byte string handling
MCrypt (php-mcrypt) – Standard PHP module provides mcrypt library support

Select what you need: OPcache, APCu, CLI, PEAR, PDO, MySQL, PostgreSQL, MongoDB, Memcache, Memcached, GD, MBString, MCrypt, XML

Install  PHP with all Included  Modules
Fedora 29

dnf install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd
php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached 
php-gd php-mbstring php-mcrypt php-xml

Fedora 28

dnf --enablerepo=remi --enablerepo=remi-php72 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

 

CentOS 7.5/6.10 and Red Hat (RHEL) 7.5/6.10

yum --enablerepo=remi,remi-php72 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

 

Check PHP version Installed :

[root@osrdarFedora ]# php --version
PHP 7.2.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.11, Copyright (c) 1999-2018, by Zend Technologies
[root@osrdarFedora ]#

A.5 Disable and remove  httpd (Apache) server if  installed , Start Nginx HTTP server and PHP-FPM (FastCGI Process Manager)

Stop httpd (Apache)

## Fedora 28/29 and CentOS/RHEL 7.6 ##
systemctl stop httpd.service
systemctl disable httpd.service

## CentOS/RHEL 6.10 ##
service httpd stop
chkconfig httpd off

Start Nginx

## Fedora 28/29 and CentOS/RHEL 7.6 ##
systemctl start nginx.service

## CentOS/RHEL 6.10 ##
service nginx start

Start PHP-FPM

## Fedora 28/29 and CentOS/RHEL 7.5 ##
systemctl start php-fpm.service

## CentOS/RHEL 6.10 ##
/etc/init.d/php-fpm start ## use restart after update
## OR ##
service php-fpm start ## use restart after update

1.6 Autostart Nginx and PHP-FPM on boot, also prevent httpd (Apache) autostarting on boot
Prevent httpd (Apache) autostarting on boot

 

Autostart Nginx on boot

## Fedora 28/29 and CentOS/RHEL 7.6
systemctl enable nginx.service

## CentOS/RHEL 6.10 ##
chkconfig --add nginx
chkconfig --levels 235 nginx on

Autostart PHP-FPM on boot

## Fedora 28/9 and CentOS/RHEL 7.6
systemctl enable php-fpm.service

## CentOS/RHEL 6.10 ##
chkconfig --add php-fpm
chkconfig --levels 235 php-fpm on

A.7 Configure Nginx and PHP-FPM
Latest Fedora Nginx + PHP-FPM builds use custom config, first restore default config

Restore nginx  configs to default

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
vi /etc/nginx/nginx.conf

This is how my nginx conf file look like

user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;
#gzip on;

include /etc/nginx/conf.d/*.conf;
}

Modify PHP-FPM to listen ip instead of socket ##
vi /etc/php-fpm.d/www.conf

## Change following   Lines##
;listen = /run/php-fpm/www.sock
listen = 127.0.0.1:9000

public_html directory  for site Osradar.local

mkdir -p /var/www/osradar.local

chown -R nginx:nginx /var/www/osradar.local

add logs under /var/log directory.

## public_html directory and logs directory ##
mkdir -p /var/www/osradar.local/
chown -R nginx:nginx /var/www/osradar.local
chown -R nginx:nginx /var/log/nginx

my  Vhost Configuration File

cat  /etc/nginx/conf.d/osradar.local.conf

server {
    listen         80 default_server;
    listen         [::]:80 default_server;
    server_name     osradar.local;
    root           /var/www/osradar.local;
    index          index.html index.php;

    location / {
      try_files $uri $uri/ =404;
    }

    location ~* \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

Start  Nginx

Fedora 28/29 and CentOS/RHEL 7.6 ##
systemctl restart nginx.service 


## CentOS/RHEL 6.10 ##
service nginx restart

Add your testsite.local “domain” to /etc/hosts file

/etc/hosts file Nginx on same machine

127.0.0.1 localhost.localdomain localhost 
192.168.2.98 osradar.local

A.8 Test your Nginx and PHP-FPM setup

Create /var/www/osradar.local/test.php file with following content:

 <?php phpinfo(); ?>

Note:
If you get 403 forbidden error, then you probably have problem with SELinux, then run simply following command:

chcon -R -t httpd_sys_content_t /var/www/osradar.local/

## Or some apps might need httpd_sys_rw_content_t ##

chcon -R -t httpd_sys_rw_content_t /var/www/osradar.local/

B.0  (Open Port 80 on Iptables Firewall)

vi /etc/sysconfig/iptables

Add following INPUT rule:

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

B.1 Restart Iptables Firewall:

service iptables restart

B.2. Fedora 28/29 and CentOS/Red Hat (RHEL) 7.6

B.2.1 Add New http Rule to Firewalld

firewall-cmd --permanent --zone=public --add-service=http

B.2.2 Restart firewalld.service

systemctl restart firewalld.service

3. Test remote connection

Access following address, with your browser. http://osradar.local/

note: i have already crated index.html with the text showing bellow on /var/www/osradar.local/index.html

Test PHP   conf file http://osradar.local/test.php

Please  let us know if you still have any issues so that we can solve it together. Enjoy

LEAVE A REPLY

Please enter your comment!
Please enter your name here