Compare FastCGI, Spawn-FCGI & PHP-FPM for PHP5/Nginx: VPS BIBLE




new password?
login
X

Install PHP5 & MySQL – The One-Stop FastCGI Index Page

PHP FastCGI logo image

Welcome to the PHP5 (4 Nginx) index page.

Here are the options for installing, upgrading and extending PHP with FastCGI. Each installation method sets up MySQL alongside and is geared for serving mutiple blogs and websites.

This PHP index is a working document: it will be updated to consider new options when available.

This page is also home to PHP-related guides such as for caching, adding special third party extensions and benchmarking.

Setup Unmanaged VPS: The Ubuntu-Nginx Guide

Take your virtual private server from zero to hero

  .. from blank box to cute-as server ..  

with this easy-to-follow copy/paste guide.

22+ parts with video, here’s the index.

Installing PHP: What’s FastCGI?

Installing PHP itself is no big deal. The trick is to get it to talk to Nginx.

.. for that we use FastCGI – a kind of a middle-man negotiator – and this can be set up in, currently, one of four ways.

What’s more, we need FastCGI to start/stop/restart on demand and/or with a server reboot. To do that we use an initiation script, together with startup hooks.

Let’s consider FastCGI’s four flavors:-

I’m a speed freak, just show me the benchmarking!

Method Summary Pros Cons Tutorial
FastCGI with PHP Installed via Aptitude Traditional basic solution Easy setup Can be unreliable FastCGI
Spawn-CGI with PHP Installed via Aptitude Using the Lighttpd (web server) FastCGI package Easy setup, no longer needs extracting Spawn from Lighttpd Relies on Lighttpd’s future PHP support Spawn-FCGI
PHP-FPM (Integrated) Installed from Source PHP-integrating * solution, separate package. Installs all PHP modules Fast solid performer, PHP-adopted for future-proofing Unwanted PHP modules **
PHP-FPM (Separate) Installed from Source As above but installs only specified PHP modules As with integrated, benchmarks fastest Fiddly set-up to be truly bespoke PHP-FPM (separate)

* Note I say ‘integrating’, not ‘integrated’. PHP are working on the integration of PHP-FPM to core code for sometime in 2011.

** Unless I get requests I’m not going to bother. The only reason to go for this inferior alternative to PHP-FPM (separate) is because it’s supposed to be easier to set up but, with the PHP-FPM (separate) tutorial spelled out as it is, that argument is redundant. Of course, I am open to arm-twisting.

vpsBible Recommends and Why

PHP-FPM (Separate) followed by PHP-FPM (Integrated).

Why? Because:-

  1. PHP-adopted
  2. reliability
  3. speed

But PHP-FPM (Separate) is tricky to compile?

Well, it was. You are at vpsBible.com! The PHP-FPM (Separate) tutorial will work for the vast majority of scenarios.

.. That said, the PHP-FPM (Integrated) tutorial works for every scenario and is easier to set up.

Benchmarking FastCGI

Tested April 2010, this is the web’s most comprehensive and up-to-date FastCGI testing, period.

If you didn’t yet look, now check out the benchmark comparison to these four FastCGI methods serving PHP on Nginx.

Rebuilding PHP from Source

Maybe you’ve made a mistake on installing PHP? Or want to upgrade, say, from regular FastCGI to PHP-FPM?

Aptitude/apt-get

If you installed PHP using aptitude or apt-get, there’s a tutorial in the works about how to upgrade with no server downtime. Watch this space ‘cos I haven’t tested it yet!

If you just want to add a module to an existing PHP installation:-

sudo aptitude install [php5-MODULE]

.. and (probably not necessary) maybe edit /etc/php5/cgi/php.ini with any special config options.

Compiled PHP

If you compiled (using ./configure command) PHP from source files, and need to recompile – for example if you need to add an extra PHP module – this is quick and easy to do with no server downtime:-

Reconfigure PHP from Source

Extending PHP

Once PHP is setup or upgraded, there are third party extensions to consider adding on. Most importantly:-

Security

PHP has recognized vulnerabilities. Here’s the answer:-

Setup Suhosin to Protect PHP

Caching

Caching comes in various flavors and vpsBible will be adding to this list which, for now, comprises the most popular respected solution:-

Install XCache: FastCGI/Spawn-FCGI

Install XCache: PHP-FPM (integrated or separate)

Here endeth the PHP Index! Tx for reading.

Setup Unmanaged VPS: The Ubuntu-Nginx Guide

Take your virtual private server from zero to hero

with this easy-to-follow copy/paste guide.

“My local PC runs Windows” Show me for Linux

22+ parts with video, here’s the index ..

Manage Unmanaged VPS: Ubuntu-Nginx Administration

Already set it up? We’d best maintain it then.

Toggle to the ..  Ubuntu-Nginx Admin Index

Manage Unmanaged VPS: Ubuntu-Nginx Administration

Maintain your virtual private server with ..

.. cheatsheets, tutorials, tips & guides.

Head back to the ..  Ubuntu-Nginx Installation Index

Nginx Admin: In the Works ..

This lot’s marked for addition already:-

  • Setup or Edit DNS using Bind
  • Network Tools Troubleshooting Guide
  • The Comprehensive Permissions Guide
  • Configuring Nginx Rewrites
  • Custom Website Error Page
  • Setting up Cron Jobs
  • Rsync for Incremental Remote-to-Local Backup
  • Cron & Rsync for Automatic Backup
  • Cron & mysqldump for Auto DB Backup
  • Safeguard Bandwidth with Hotlink Protection
  • Block Access with Nginx’ IP Deny



Got a Question? Want to Comment?

This site has no comments system. We've got a better system!

Please use the link at the top of the post and goto this topic's forum thread:-

  • to help build community
  • for a superior knowledge base
  • to keep info in one place, not diluted between forum & comments.

For those posts ported from Guvnr.com (pre-Feb/2010), archive comments remain.

Handy info from these comments is in the process of being ported to the forum and attributed to the original author.

If you think this idea sucks, let me know.

Thank you.