Fastcgi nginx php-fpm — настройка связки без Apache на Debian


Рассмотрим связку 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 nginx php-fpm


Читайте про одну из самых популярных конфигураций — настройку веб-сервера для отдачи скриптов в режиме fastcgi с Apache и без PHP-FPM как в данном случае.

Сказать спасибо