Рассмотрим связку Fastcgi nginx php-fpm. Она хороша тем, что используются php-fpm дающий высокую скорость выполнения PHP скриптов и nginx обрабатывающий статическое содержимое.
Установка и настройка связки Fastcgi nginx php-fpm на Debian
При необходимости добавляем репозитории в /etc/apt/sources.list
Устанавливаем необходимые пакеты (php):
apt-get install php5-fpm php5-mysql php5-cli php5-common php5-suhosin php5-gd php5-fpm php5-cgi php-pear php5-mcrypt -y
-y добавляем для того чтобы при установке не система не задавала дополнительных вопросов
Конфигурационный файл php5-fpm, который будем редактировать, находится по адресу
/etc/php5/fpm/pool.d/www.conf
Устанавливаем nginx:
apt-get install nginx -y
Создаем конфигурационный файл нового виртуального хоста:
mcedit /etc/nginx/sites-enabled/example.ru
server { listen 80; root /path/to/the/folder; server_name example.ru www.example.ru index index.html index.php; access_log /home/user/logs/nginx.access.log; location ~ \.(php)$ { fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; # fastcgi_connect_timeout 60; fastcgi_send_timeout 60; fastcgi_read_timeout 60; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; include fastcgi_params; client_max_body_size 10m; client_body_buffer_size 128k; expires off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; fastcgi_pass unix:/var/run/php5-fpm.sock; } location / { proxy_redirect off; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 1024k; proxy_buffers 8 5120k; proxy_busy_buffers_size 10240k; proxy_temp_file_write_size 10240k; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; expires off; } }
Заменяем в конфиге виртуального хоста имя сайта и путь к каталогу с файлами.
В /etc/php5/fpm/php.ini устанавливаем значение cgi.fix_pathinfo=0, по умолчанию стоит 1, и знак комментария перед директивой
Создаем нового пользователя:
useradd web -b /home/ -m -U
Задаем пароль созданного пользователя:
passwd web
Создаем каталоги необходимые для запуска сайта (работать веб-сервер будет от имени пользователя web):
mkdir -p -m 755 /home/web/www
mkdir -p -m 754 /home/web/logs
Устанавливаем необходимые права на каталоги:
chown -R web: /home/web/www/
chown -R web: /home/web/logs/
Добавляем web в группу www-data:
usermod -a -G user www-data
Перезапускаем nginx
/etc/init.d/nginx restart
Теперь можно загружать в каталог, указанный в качестве DoumentRoot в виртуальном хосте phpinfo.php с простейшим кодом <?php phpinfo(); ?> и тестировать обращаясь к файлу через браузер
Читайте про одну из самых популярных конфигураций — настройку веб-сервера для отдачи скриптов в режиме fastcgi с Apache и без PHP-FPM как в данном случае.