Install Nginx/PHP-FPM on CentOS/RHEL

Install Nginx, PHP 5.5.15 and PHP-FPM on Fedora 20/19/18/17, CentOS 7/6.5/5.10, Red Hat (RHEL) 7/6.5/5.10

1. Change to root user.

su

2. Install needed repositories

CentOS 7/6.5/5.10 and Red Hat (RHEL) 7/6.5/5.10 Remi repository

 ## Remi Dependency on CentOS 7 and Red Hat (RHEL) 7 ##
rpm -Uvh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.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 http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
 ## CentOS 6 and Red Hat (RHEL) 6 ##rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
 
 ## Remi Dependency on CentOS 5 and Red Hat (RHEL) 5 ##
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
 ## CentOS 5 and Red Hat (RHEL) 5 ## 
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

CentOS 7/6.5/5.10 and Red Hat (RHEL) 7/6.5/5.10 Nginx repository

Create file /etc/yum.repos.d/nginx.repo and add following content to repo file:
CentOS

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

3. Install Nginx, PHP 5.5.15 and PHP-FPM

CentOS 7/6.5/5.10 and Red Hat (RHEL) 7/6.5/5.10

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

4. Install PHP 5.5.15 modules

  • OPcache (php-opcache) – The Zend OPcache provides faster PHP execution through opcode caching and optimization.

  • APCu (php-pecl-apc) – 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-mongo) – PHP MongoDB database driver

  • SQLite (php-sqlite) – Extension for the SQLite V2 Embeddable SQL Database Engine

  • 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: APCu, CLI, PEAR, PDO, MySQL, PostgreSQL, MongoDB, SQLite, Memcache, Memcached, GD, MBString, MCrypt, XML

More info about PHP APC from PHP APC Configuration and Usage Tips and Tricks

CentOS 6.5/5.10 and Red Hat (RHEL) 6.5/5.10

yum --enablerepo=remi,remi-php55 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

5. Stop httpd (Apache) server, Start Nginx HTTP server and PHP-FPM (FastCGI Process Manager)

Stop httpd (Apache)

/etc/init.d/httpd stop
## OR ##
service httpd stop

Start Nginx

/etc/init.d/nginx start ## use restart after update## OR ##service nginx start ## use restart after update

Start PHP-FPM

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

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

Prevent httpd (Apache) autostarting on boot

/sbin/chkconfig httpd off

Autostart Nginx on boot

CentOS / Red Hat (RHEL) 6/5

/sbin/chkconfig --add nginx
/sbin/chkconfig --levels 235 nginx on

Autostart PHP-FPM on boot

CentOS / Red Hat (RHEL)

/sbin/chkconfig --add php-fpm
/sbin/chkconfig --levels 235 php-fpm on

7. Configure Nginx and PHP-FPM

Create directory layout for your site

I use here testsite.local site, but this could of course be your real site, like www.if-not-true-then-false.com.

## public_html directory and logs directory ##
mkdir -p /srv/www/testsite.local/public_html
mkdir /srv/www/testsite.local/logs
chown -R apache:apache /srv/www/testsite.local

Alternative setup to add logs under /var/log directory.

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

Note: I use apache user and group here, because PHP-FPM runs as apache default (apache choosed to be able to access some dir as httpd). If you use some other user on your php-fpm conf then change this accordingly.

Create and configure virtual host directories under /etc/nginx

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

Add following lines to /etc/nginx/nginx.conf file, after “include /etc/nginx/conf.d/*.conf” line (inside http block).

## Load virtual host conf files. ##
include /etc/nginx/sites-enabled/*;

Create testsite.local virtual host file

Add following content to /etc/nginx/sites-available/testsite.local file. This is very basic virtual host config.

server {
    server_name testsite.local;
    access_log /srv/www/testsite.local/logs/access.log;
    error_log /srv/www/testsite.local/logs/error.log;
    root /srv/www/testsite.local/public_html;
 
    location / {
        index index.html index.htm index.php;    } 
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /srv/www/testsite.local/public_html$fastcgi_script_name;    
    }
}

Link your virtual host to /etc/nginx/sites-enabled

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/testsite.local
/sbin/service nginx restart

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

/etc/hosts file Nginx on same machine
127.0.0.1 … row should look like example following:

127.0.0.1               localhost.localdomain localhost testsite.local

And if you use another machine where you are running your Nginx server, then add it’s public IP as following:

10.0.2.19               wordpress

Note: This is just very simple basic configuration, but if you want configure and optimize Nginx and PHP-FPM more then check following guide, Nginx and PHP-FPM Configuration and Optimizing Tips and Tricks

8. Test your Nginx and PHP-FPM setup

Create /srv/www/testsite.local/public_html/index.php file with following content:

<?php 
   phpinfo();
?>

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

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 /srv/www/testsite.local/public_html

 ## Or some apps might need httpd_sys_rw_content_t ##
chcon -R -t httpd_sys_rw_content_t /srv/www/testsite.local/public_html

Enable Remote Connection to Nginx Web Server (Open Port 80 on Iptables Firewall)

1. CentOS/Red Hat (RHEL) 6/5

1.1 Edit /etc/sysconfig/iptables file:

nano -w /etc/sysconfig/iptables

1.2 Add following INPUT rule:

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

1.3 Restart Iptables Firewall:

/sbin/service iptables restart## OR ##
/etc/init.d/iptables restart


Install Nginx/PHP-FPM on CentOS/RHEL,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。