Сначала ставим из портов php
cd /usr/ports/lang/php5
make install clean
rehash
При установке вылезет окно, в нем выбираем FPM (да, этот модуль к счатью включен в базовую поставку и уже не надо качать патч как раньше).
Когда php установится ставим рассширения для него (врядли вам нужен голый php)
cd /usr/ports/lang/php5-extensions
make install clean
rehash
Выбираем нужные вам (если что потом можно легко доставить).
Отлично, у нас уставновлен php и рассширения к нему.
Пропишем php-fpm в автозагрузку
echo 'php_fpm_enable="YES"' >> /etc/rc.conf
Теперь самое время поставить веб-сервер nginx
cd /usr/ports/www/nginx
make install clean
rehash
Можно выбрать что-то из дополнительных модулей, но обычно это не надо, хотя в любом случаи можно потом будет пересобрать с ними за пять минут.
Когда nginx установился необходимо тоже прописать его в автозагрузку
echo 'nginx_enable="YES"' >> /etc/rc.conf
Теперь когда у нас есть установленные php и веб сервер можно заняться конфигурацией всего этого добра.
В файле /usr/local/etc/php-fpm.conf заставляем php-fpm работать через unix сокет, а не по tcp, это даст небольшой прирост производительности
;listen = 127.0.0.1:9000
listen = /tmp/php-fpm.sock
Больше в этом файле можно ничего не править
Далее идем в конфигурацию nginx (/usr/local/etc/nginx/nginx.conf)
#user nobody;
#это число выставляется по количеству ядер вашего процессора
worker_processes 1;
#тут можно настроить логи
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
#для FreeBsd включайте это
use kqueue;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#обозначим, что php-fpm у нас работает через юникс сокет
#лучше задавать именно так, потому что в будущем можно легко будет сменить этот параметр сразу для всех сайтов
upstream fpm {
server unix:/tmp/php-fpm.sock;
}
server {
listen 80;
server_name _;
charset utf-8;
root /home/www/site;
location / {
index index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php$ {
#здесь задается путь к обработчику php, который мы задали выше в upstream
fastcgi_pass fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#ну и на всякий случай, отдавая дань апаче, скроем его .htaccess
location ~ /\.ht {
deny all;
}
}
}
Параметр server_name _ задан так, чтобы nginx обрабатывал любой домен.
Если у вас несколько доменов делайте несколько секций server{} и в server_name указывайте домены и алиасы через пробел.
Параметр root /home/www/site; это аналог DOCUMENT_ROOT, именно в этой директории будет находиться ваш сайт.
Теперь запускаем nginx и php-fpm
service nginx start
service php-fpm start
В /home/www/site создаем index.php со стандартным и пробуем зайти через браузер.
Вопросы засылайте в коментах.