I've published some vanilla PHP 5.4.0 RPMs to make new feature testing easier.
Along with all the PHP 5.4 goodies, the php-fpm "FastCGI Process Manager" is available for the first time on oss.oracle.com. Php-fpm is an alternative FastCGI interface to PHP with various extra features such as load dependent spawning of processes. (For other features, see php-fpm.org). Php-fpm has been getting more and more traction in the PHP community and the EXPERIMENTAL flag was removed in PHP 5.4. You might want to test it out.
To use php-fpm with the default Apache web server, first install Oracle Linux 5.8 (64bit) using Oracle's free, public yum repository public-yum.oracle.com.
Install Apache, if not already installed:
yum install httpd
Download and install the PHP 5.4 RPMs from oss.oracle.com/projects/php:
rpm -i php54-common-5.4.0-1.el5.x86_64.rpm php54-fpm-5.4.0-1.el5.x86_64.rpm
Other extensions can also be installed, depending on the functionality you want to test.
Download and build FastCGI for Apache:
tar -zxf mod_fastcgi-current.tar.gz
cp Makefile.AP2 Makefile
Install FastCGI as root:
make top_dir=/usr/lib64/httpd install
/etc/httpd/conf/httpd.conf and comment out any existing references to PHP you might previously have added for testing:
# LoadModule php5_module modules/libphp5.so
# AddType application/x-httpd-php .php
Add the php-fpm configuration to
LoadModule fastcgi_module modules/mod_fastcgi.so
FastCGIExternalServer /usr/sbin/php-fpm -host 127.0.0.1:9000
AddHandler php-fastcgi .php
# SetHandler php-fastcgi-virt
# Action php-fastcgi-virt /usr/sbin/php-fpm.fcgi virtual
Action php-fastcgi /usr/sbin/php-fpm.fcgi
ScriptAlias /usr/sbin/php-fpm.fcgi /usr/sbin/php-fpm
Options ExecCGI FollowSymLinks
Allow from all
Start php-fpm and Apache:
service php-fpm start
service httpd start
Test it out with your favorite script or create a file
Save it in
/var/www/html/pi.php or in
$HOME/public_html/pi.php, if you have configured
In a browser load
This will show the PHP configuration values.
To test php-fpm's built-in statistics, edit
httpd.conf and uncomment the four lines of the
Action php-fastcgi-virt /usr/sbin/php-fpm.fcgi virtual
/etc/php-fpm.conf and uncomment the line:
pm.status_path = /status
Restart php-fpm and Apache:
service php-fpm restart
service httpd restart
Run some load on the system:
ab -c 10 -t 60 http://localhost/pi.php
http://localhost/status gives you the status of the server:
process manager: dynamic
start time: 13/Mar/2012:14:25:53 -0700
start since: 26
accepted conn: 50001
listen queue: 0
max listen queue: 6
listen queue len: 128
idle processes: 2
active processes: 1
total processes: 3
max active processes: 5
max children reached: 1
php-fpm.conf file documents other output formats for the statistics. It also shows the extensive functionality available with php-fpm.
Php-fpm is commonly used in conjunction with the nginx webserver. For this, you will need to compile nginx yourself. Because php-fpm is installed and managed separately from the webserver, the php-fpm RPM will still be usable. Now that Apache 2.4 has been released with claims of improved performance, it will be interesting to see if web server popularity swings back towards Apache.
Finally, remember that the PHP RPMs on oss.oracle.com are for testing purposes only. They are not supported.
Update: In the Underground PHP & Oracle Manual, I simplified the httpd.conf options to this (note PHP was installed in a different location):
FastCGIExternalServer /opt/php544/sbin/php-fpm -host 127.0.0.1:9000
AddHandler php-fastcgi .php
Action php-fastcgi /mycgi
ScriptAlias /mycgi /opt/php544/sbin/php-fpm