==== PHP-FPM Installation on Ubuntu Server ====
apt-get install software-properties-common
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install nginx
apt-get install php5.6-cgi php5.6-mysql php5.6-fpm php5.6-curl php5.6-gd php5.6-imap php5.6-mbstring php5.6-mcrypt php5.6-pspell php5.6-recode php5.6-sqlite php5.6-tidy php5.6-xmlrpc php5.6-xsl
==== IonCube ====
wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64_5.1.2.tar.gz
tar xf ioncube_loaders_lin_x86-64_5.1.2.tar.gz
cp ioncube/ioncube_loader_lin_5.6.so /usr/lib/php/20131226/ioncube.so
cat > /etc/php/5.6/cli/conf.d/00-ioncube.ini << EOF
zend_extension=ioncube.so
EOF
cp /etc/php/5.6/cli/conf.d/00-ioncube.ini /etc/php/5.6/fpm/conf.d/00-ioncube.ini
service php5.6-fpm restart
==== PHP-FPM Nginx Integration ====
tee /etc/nginx/conf.d/php.conf << EOF
upstream php {
server unix:/var/run/php/php5.6-fpm.sock;
}
EOF
In any site configurations:
location ~ \.php?$ {
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_pass php;
}
==== Fix Blank Page Problem ====
Append to /etc/nginx/fastcgi_params:
fastcgi_param SCRIPT_FILENAME $request_filename;
==== Restart Server ====
service nginx restart
service php5.6-fpm restart
==== FPM Tuning ====
=== For Low Memory Server ===
pm = dynamic ;Dynamic allocate child-processes for php-fpm
pm.max_children = 5 ;Limit number of child-processes
pm.start_servers = 2 ;Start 2 child-processes when server starts
pm.min_spare_servers = 2 ;Remain at least 2 when spare
pm.max_spare_servers = 5 ;Remain at most 5 when spare
pm.max_requests = 300 ;300 requests the most per child-process(and then exit and start new one)
(The config file is at ''/etc/php/5.6/fpm/pool.d/www.conf'' by default)
==== Nginx Tuning For Fastcgi ====
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
==== Remove ::ffff: From IPv4 Compatible Addresses ====
set $remote_addr_new $remote_addr;
if ($remote_addr ~* ^::ffff:(.*))
{
set $remote_addr_new $1;
}
fastcgi_param REMOTE_ADDR $remote_addr_new;
==== Increase POST Size Limit ====
Edit /etc/php5/fpm/php.ini:
upload_max_filesize = 100M
post_max_size = 100M
References:
* http://apt-blog.net/best-practise-nginx-php-via-php-fpm-on-ubuntu
* http://wiki.beyondhosting.net/PHP-FPM_and_Nginx
* http://wiki.ptsang.net/Debian%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE
* http://www.wenzk.com/archives/1239
* http://hi.baidu.com/lizhm/blog/item/6c7e359bcfd515a2c8eaf434.html
* http://rtcamp.com/wordpress-nginx/tutorials/php/increase-file-upload-size-limit/
* https://blog.felixc.at/2014/05/fix-debian-wheezy-blank-page-issue-when-using-nginx-official-deb-and-php-fpm/