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

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


webserver-nginx-phpfpm

Различия

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

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

webserver-nginx-phpfpm [07.01.2012 16:08]
vdsadmin@lazutov.ru [Настройка nginx]
webserver-nginx-phpfpm [02.11.2014 23:49]
Строка 1: Строка 1:
-=== Сборка php === 
  
-Прежде всего переходим в папку, куда мы скачаем (http://www.php.net/downloads.php) исходники php  
-<code> 
-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* 
-</code> 
-Далее сконфигурируем php для последующей сборки. Нужные модули мы поставим позже. 
-<code> 
-./configure --enable-fpm 
-</code> 
-Тут вам скорее не хватит каких-либо библиотек. \\ 
-Это решается очень просто: ищите по пакетам соответствующую библиотеку и повторяйте сборку заново.\\ 
-Например. Вам конфигуратор сообщает об отсутствии libxml2  
-<code> 
-#Ищем по пакетам 
-apt-cache search libxml2  
-# и ставим соответствующий dev-пакет. 
-apt-get install libxml2-dev 
-</code> 
-Но, видимо, все нужные библиотеки у меня были и конфигуратор мне ничего не сказал.\\ 
- 
-собираем: 
-<code> 
-make 
-make install 
-</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> 
-Всё. Библиотека собрана установлена. 
-Для вступления в силу изменений скорее всего потребуется перезапуск спавнера. 
webserver-nginx-phpfpm.txt · Последнее изменение: 02.11.2014 23:49 (внешнее изменение)

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