Инструменты пользователя

Инструменты сайта


webserver-nginx-phpfpm

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
webserver-nginx-phpfpm [07.01.2012 14:59]
vdsadmin@lazutov.ru создано
webserver-nginx-phpfpm [02.11.2014 23:49] (текущий)
Строка 1: Строка 1:
 +=== Сборка php ===
 +
 Прежде всего переходим в папку, куда мы скачаем (http://www.php.net/downloads.php) исходники php  Прежде всего переходим в папку, куда мы скачаем (http://www.php.net/downloads.php) исходники php 
 <code> <code>
Строка 27: Строка 29:
 make install make install
 </code> </code>
- +Скопируем скрипт запуска-остановки и установим права на запуск 
 +<code> 
 +cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 
 +chmod +x /etc/init.d/php-fpm 
 +</code> 
 +Добавим в автозапуск 
 +<code>update-rc.d php-fpm defaults</code> 
 +==== Настройка спавнера==== 
 +Спавнер -- процесс, который управляет пулом(множеством) процессов php (распределяет запросы, перезапускает процессы и т.д). 
 +А теперь настроим планировщик. Его конфигурация находится в файле /etc/php-fpm.conf\\ 
 +Важно: в текущей версии php-fpm не обрабатывает никаких php.ini , а обрабатывает только указанный выше конфиг.\\ 
 +О синтаксисе этого файла написано много и хорошо в официальной документации: http://www.php.net/manual/ru/install.fpm.configuration.php\\ 
 +Предполагаю, что пользователь и группа web у вас уже созданы: 
 +<code> 
 +[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
 +</code>
 +Всё. Перезапускаем спавнер ''service php-fpm restart'' и смотрим ''netstat -na | grep 9000'' на предмет наличия спавнера на нужном порту.\\
 +Вы должны увидеть что-то похожее на 
 +<code>netstat -na | grep 9000
 +tcp        0      0 127.0.1.1:9000          0.0.0.0:              LISTEN
 +</code>
 +
 +==== cgi.fix_pathinfo ====
 +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====
 +Тут всё стандартно (взято с офсайта nginx): а файле /etc/nginx/conf.d/default.conf необхожимо задать свой root и раскментировать блок с настройками проброса.   
 +<code>
 +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;
 +    }
 +}</code>
 +Помещаем в index.php стандарнтный скрипт ''<? phpinfo(); ?>'', перезапускаем nginx, заожно добаваив его в автозапуск
 +<code>
 +update-rc.d nginx defaults
 +service nginx restart
 +</code>
 +
 +Всё. Настройка завершена.
 +
 +==== Сборка модулей php. phpize  ====
 +Помните, мы собирали php? Переходим в папку ext исходников. Там мы видим все доступные дополнения\\
 +Допустим, нам необходим mbstring. Переходим в папку mbstring, и выполняем три простых действия\\
 +<code>
 +phpize
 +make
 +make install 
 +</code>
 +Всё. Библиотека собрана и установлена.\\
 +Для вступления в силу изменений скорее всего потребуется перезапуск спавнера php-fpm.
webserver-nginx-phpfpm.1325933979.txt.gz · Последнее изменение: 02.11.2014 23:49 (внешнее изменение)

Инструменты страницы