PHP-FPM (FastCGI Process Manager) is a PHP FastCGI implementation and is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. PHP-FPM is a set of patches for PHP to work with the FastCGI process manager, turning PHP-FPM into a service rather than loading all of its libraries everytime a PHP request it’s made. In this post, i will show on how to install PHP-FPM on linux CentOS 6.2 server. Assume that you have configured EPEL and remi repositories on you linux CentOS 6.2 server
In this post, i will show you on how to install and configure the Extra Packages for Enterprise Linux (EPEL) repository on CentOS 6.2. EPEL repository is another extra repository that creates, maintains, and manages a high quality set of additional packages for Enterprise Linux, including, but not limited to, Red Hat Enterprise Linux (RHEL) and CentOS server. To install the repository, you can follow this steps :
1. First we import the GPG keys for EPEL software packages:
[root@centos62 ~]# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
[root@centos62 ~]# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
--2012-03-07 22:08:39-- http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
Resolving ftp.riken.jp... 134.160.38.1
Connecting to ftp.riken.jp|134.160.38.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1649 (1.6K) [text/plain]
Saving to: âRPM-GPG-KEY-EPEL-6â
100%[==========================================================>] 1,649 --.-K/s in 0.002s
2012-03-07 22:08:40 (929 KB/s) - âRPM-GPG-KEY-EPEL-6â
2. Then we enable the EPEL repositories using the following command :
[root@centos62 ~]# rpm --import RPM-GPG-KEY-EPEL-6
3. Download EPEL repository for 32-bit CentOS :
[root@centos62 ~]# wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
[root@centos62 ~]# wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
--2012-03-07 22:06:10-- http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
Resolving dl.fedoraproject.org... 209.132.181.27, 209.132.181.23, 209.132.181.24, ...
Connecting to dl.fedoraproject.org|209.132.181.27|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14064 (14K) [application/x-rpm]
Saving to: âepel-release-6-5.noarch.rpmâ
100%[==========================================================>] 14,064 36.7K/s in 0.4s
2012-03-07 22:06:14 (36.7 KB/s) - âepel-release-6-5.noarch.rpmâ
4. Install EPEL repository on 32-bit CentOS :
[root@centos62 ~]# rpm -ivh epel-release-6-5.noarch.rpm
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]
5. Edit the the EPEL repository file and Set priority for the EPEL repository as below :
[root@centos62 ~]# vi /etc/yum.repos.d/epel.repo
6. Add priority=3 to the [epel] section, under enabled=1 :
[epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=3 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [epel-debuginfo] name=Extra Packages for Enterprise Linux 6 - $basearch - Debug #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux 6 - $basearch - Source #baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 gpgcheck=1
There are several 3rd party repositories for CentOS 6 server. One of the popular one is remi repository. The Remi repository is a repository containing updated PHP and MySQL packages and is maintained by Remi. In this post, i will show you on how to install remi repository on linux CentOS 6.2 server
Import the RPM-GPG-KEY key and install remi rpm package :
[root@centos62 ~]# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@centos62 ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Preparing... ########################################### [100%]
1:remi-release ########################################### [100%]
To enable this repo, please change “enabled” value to 1 :
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
三、
1. How to install PHP and other php extensions :
[root@centos62 ~]# yum --enablerepo=remi install php php-fpm php-common php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
Output :
Installing : libmemcached-1.0.4-1.el6.remi.i686 8/23
Installing : php-pecl-memcached-2.0.1-2.el6.remi.i686 9/23
Installing : php-mysql-5.4.0-1.el6.remi.i686 10/23
Installing : php-gd-5.4.0-1.el6.remi.i686 11/23
Installing : php-pecl-mongo-1.2.10-2.el6.remi.i686 12/23
Installing : php-pecl-apc-3.1.10-2.el6.remi.i686 13/23
Installing : php-pecl-memcache-3.0.6-3.el6.remi.i686 14/23
Installing : php-pecl-sqlite-2.0.0-0.1.svn313074.el6.remi.i686 15/23
Installing : php-5.4.0-1.el6.remi.i686 16/23
Installing : php-pgsql-5.4.0-1.el6.remi.i686 17/23
Installing : php-mcrypt-5.4.0-1.el6.remi.i686 18/23
Installing : php-xml-5.4.0-1.el6.remi.i686 19/23
Installing : php-fpm-5.4.0-1.el6.remi.i686 20/23
Installing : php-mbstring-5.4.0-1.el6.remi.i686 21/23
Installing : compat-mysql51-5.1.54-1.el6.remi.i686 22/23
Cleanup : mysql-libs-5.1.61-1.el6_2.1.i686 23/23
Installed:
php.i686 0:5.4.0-1.el6.remi php-cli.i686 0:5.4.0-1.el6.remi
php-common.i686 0:5.4.0-1.el6.remi php-fpm.i686 0:5.4.0-1.el6.remi
php-gd.i686 0:5.4.0-1.el6.remi php-mbstring.i686 0:5.4.0-1.el6.remi
php-mcrypt.i686 0:5.4.0-1.el6.remi php-mysql.i686 0:5.4.0-1.el6.remi
php-pdo.i686 0:5.4.0-1.el6.remi php-pear.noarch 1:1.9.4-7.el6.remi
php-pecl-apc.i686 0:3.1.10-2.el6.remi php-pecl-memcache.i686 0:3.0.6-3.el6.remi
php-pecl-memcached.i686 0:2.0.1-2.el6.remi php-pecl-mongo.i686 0:1.2.10-2.el6.remi
php-pecl-sqlite.i686 0:2.0.0-0.1.svn313074.el6.remi php-pgsql.i686 0:5.4.0-1.el6.remi
php-xml.i686 0:5.4.0-1.el6.remi
Dependency Installed:
compat-mysql51.i686 0:5.1.54-1.el6.remi libmemcached.i686 0:1.0.4-1.el6.remi
php-pecl-igbinary.i686 0:1.1.2-0.1.git3b8ab7e.el6.remi t1lib.i686 0:5.1.2-6.el6_2.1
Dependency Updated:
mysql-libs.i686 0:5.5.22-1.el6.remi
Complete!
2. How to check PHP Version :
[root@centos62 ~]# php -v
PHP 5.4.0 (cli) (built: Mar 2 2012 17:49:53)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
3. Proceed to configure PHP-FPM to meet your requirement :
[root@centos62 ~]# vi /etc/php-fpm.d/www.conf
4. Start PHP-FPM :
[root@centos62 ~]# service php-fpm start
Starting php-fpm: [ OK ]