Прежде всего переходим в папку, куда мы скачаем (http://www.php.net/downloads.php) исходники php
mkdir -p /usr/src/php cd $_ wget http://www.php.net/get/php-5.3.8.tar.gz/from/de.php.net/mirror -O php.tar.gz tar -xvf p* cd p*
Далее сконфигурируем php для последующей сборки. Нужные модули мы поставим позже.
./configure --enable-fpm
Тут вам скорее не хватит каких-либо библиотек. 
Это решается очень просто: ищите по пакетам соответствующую библиотеку и повторяйте сборку заново.
Например. Вам конфигуратор сообщает об отсутствии libxml2 
#Ищем по пакетам apt-cache search libxml2 # и ставим соответствующий dev-пакет. apt-get install libxml2-dev
Но, видимо, все нужные библиотеки у меня были и конфигуратор мне ничего не сказал.
собираем:
make make install
Скопируем скрипт запуска-остановки и установим права на запуск
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm
Добавим в автозапуск
update-rc.d php-fpm defaults
Спавнер – процесс, который управляет пулом(множеством) процессов php (распределяет запросы, перезапускает процессы и т.д).
А теперь настроим планировщик. Его конфигурация находится в файле /etc/php-fpm.conf
Важно: в текущей версии php-fpm не обрабатывает никаких php.ini , а обрабатывает только указанный выше конфиг.
О синтаксисе этого файла написано много и хорошо в официальной документации: http://www.php.net/manual/ru/install.fpm.configuration.php
Предполагаю, что пользователь и группа web у вас уже созданы:
[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm-error.log
[web]
# настройка пула, который я назвал web. Вы можете называть как удобно.
php_admin_value[date.timezone] = Europe/Moscow
php_admin_flag[cgi.fix_pathinfo] = off
# см. ниже. 
listen = 127.0.1.1:9000
# запомните адрес, на который мы вешаем спавнер
user = web
group = web
pm = dynamic
pm.max_children = 50
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500
# пример управления логированием
access.log = /var/log/fpm/www.access.log
access.format = %R - %u %t "%m %r%Q%q" %s %f %{mili}d %{kilo}M %C%%
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/fpm/fpm-php.www.log
php_admin_flag[log_errors] = on
# пример изменения других опций
php_admin_flag[memory_limit] = 32M
Всё. Перезапускаем спавнер service php-fpm restart и смотрим netstat -na | grep 9000 на предмет наличия спавнера на нужном порту.
Вы должны увидеть что-то похожее на 
netstat -na | grep 9000 tcp 0 0 127.0.1.1:9000 0.0.0.0:* LISTEN
cgi.fix_pathinfo  – параметр, внедренный в php в 2005 году, отвечал за хм… костыль к php в условиях отсутствия рерайта на вебсервере.
Например: чтобы в случае запроса example.com/index.php/someparams.abx запрос был обработан скриптом index.php, а не сброшен с 404 ошибкой. 
Но представим себе ситуацию, что мы загрузили на сервер вполне валидную картинку, с комментарием в exif-теге вида <? phpinfo(); ?>. 
При запросе /pic.gif/index.php запрос придёт в php (pic.gif существует, а index.php нет), поэтому, интерепетаор попытается выполнить pic.gif и, как читатель уже догадался,  наш скрипт будет выполнен.
Мораль. Всегда проверяйте это значение. оно должно быть выключено (off/false/0) .
Тут всё стандартно (взято с офсайта nginx): а файле /etc/nginx/conf.d/default.conf необхожимо задать свой root и раскментировать блок с настройками проброса.
server {
    listen       80;
    server_name  _;
    # _ - сервер по-умолчанию. Исправьте на свой или если он у вас один на этом порту, используйте его
    access_log  /var/log/nginx/log/host.access.log  main;
    root   /home/web/default ; # ваш document root
    location / {
        index  index.php index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    # вот это наш блок. Убедитесь, что у вас указан верный IP.
    location ~ \.php$ {
        fastcgi_pass   127.0.1.1:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
    location ~ /\.ht {
        deny  all;
    }
}
Помещаем в index.php стандарнтный скрипт <? phpinfo(); ?>, перезапускаем nginx, заожно добаваив его в автозапуск
update-rc.d nginx defaults service nginx restart
Всё. Настройка завершена.
Помните, мы собирали php? Переходим в папку ext исходников. Там мы видим все доступные дополнения
Допустим, нам необходим mbstring. Переходим в папку mbstring, и выполняем три простых действия
phpize make make install
Всё. Библиотека собрана и установлена.
Для вступления в силу изменений скорее всего потребуется перезапуск спавнера php-fpm.