<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Установка Nginx 1.4.x на систему Unix',
    2 => 'Установка Nginx 1.4.x на систему Unix',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Установка в Unix-системы',
  ),
  'prev' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x на Unix системах',
  ),
  'next' => 
  array (
    0 => 'install.unix.lighttpd-14.php',
    1 => 'Установка PHP на Lighttpd 1.4 на Unix-системах',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'install/unix/nginx.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.nginx" class="sect1">
 <h2 class="title">Установка Nginx 1.4.x на систему Unix</h2>

 <p class="para">
  Эта документация описывает установку и настройку PHP с
  менеджером процессов PHP-FPM для HTTP-сервера Nginx 1.4.x.
 </p>

 <p class="para">
  Это краткое руководство предполагает, что Nginx собран из исходного кода
  и поэтому бинарные файлы и файлы конфигурации лежат в директории
  <code class="literal">/usr/local/nginx</code>. Если нет, и вы получили Nginx другим способом, тогда,
  пожалуйста, обратитесь к <a href="https://www.nginx.com/resources/wiki/" class="link external">&raquo;&nbsp;Nginx Wiki</a>, чтобы получить
  похожее на это руководство для вашей установки.
 </p>

 <p class="para">
  В этом кратком руководстве будут рассмотрены основы настройки Nginx-сервера для обработки PHP-приложений
  и их обслуживания на порту 80. Рекомендовано изучить документацию Nginx и PHP-FPM, если
  нужно оптимизировать установку за рамками этой документации.
 </p>

 <p class="para">
  Пожалуйста, обратите внимание, что в этой документации номера версий были
  заменены на символ «x», чтобы документация оставалась корректной в будущем.
  Пожалуйста, замените «x» на необходимый номер версии.
 </p>

 <ol type="1">
  <li class="listitem">
   <p class="para">
    Рекомендовано зайти
    <a href="https://www.nginx.com/resources/wiki/start/topics/tutorials/install/" class="link external">&raquo;&nbsp;на страницу установки</a> Nginx Wiki,
    чтобы получить и установить HTTP-сервер Nginx на свою систему.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Распаковать полученный исходный код PHP:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar zxf php-x.x.x
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Настроить и собрать PHP. Здесь вы настраиваете PHP
    с нужными параметрами.
    Запустите команду ./configure --help, чтобы получить список доступных опций.
    В примере будут сделаны простые настройки для включения менеджера процессов PHP-FPM
    с поддержкой модуля MySQLi.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd ../php-x.x.x
./configure --enable-fpm --with-mysqli
make
sudo make install
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Переместить файлы конфигурации в правильные места
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cp php.ini-development /usr/local/php/php.ini
cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp sapi/fpm/php-fpm /usr/local/bin
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Важно запретить серверу Nginx передавать запросы в бэкенд менеджера PHP-FPM,
    если файл не существует, что помогает предотвратить атаки произвольного внедрения скрипта.
   </p>
   <p class="para">
    Это исправляют установкой для директивы
    <a href="ini.core.php#ini.cgi.fix-pathinfo" class="link">cgi.fix_pathinfo</a>
    значения <code class="literal">0</code> в файле php.ini.
   </p>
   <p class="para">
    Отредактировать файл php.ini:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
vim /usr/local/php/php.ini
</pre></div>
    </div>
   </div>

   <p class="para">
    Найти директиву <code class="literal">cgi.fix_pathinfo=</code> и изменить вот так:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cgi.fix_pathinfo=0
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Файл php-fpm.conf нужно изменить, чтобы указать, что модуль php-fpm должен
    работать от имени пользователя www-data и группы www-data, до того как мы запустим сервис:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
vim /usr/local/etc/php-fpm.d/www.conf
</pre></div>
    </div>
   </div>

   <p class="para">
    Найти и изменить следующее:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
; Unix user/group of processes
; Замечание: Пользователь обязателен. Если группа не установлена,
; будет использована стандартная группа пользователя.
user = www-data
group = www-data
</pre></div>
    </div>
   </div>

   <p class="para">
    Теперь можно запускать сервис php-fpm:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/bin/php-fpm
</pre></div>
    </div>
   </div>

   <p class="para">
    Это руководство не рассматривает другие настройки модуля php-fpm.
    Обратитесь к документации по php-fpm, если нужны дополнительные настройки.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Настроить Nginx на поддержку обработки PHP-приложений:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="cdata"><pre>
vim /usr/local/nginx/conf/nginx.conf
</pre></div>
    </div>

   </div>

   <p class="para">
    Измените блок «location» по умолчанию так, чтобы HTTP-сервер знал,
    что он должен обслуживать файлы .php:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="nginx-confcode"><pre class="nginx-confcode">location / {
    root   html;
    index  index.php index.html index.htm;
}</pre>
</div>
    </div>

   </div>

   <p class="para">
    Следующий шаг — убедиться, что файлы .php передаются в бэкенд PHP-FPM.
    Введите следующее:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="nginx-confcode"><pre class="nginx-confcode">location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}</pre>
</div>
    </div>

   </div>

   <p class="para">
    Перезапустите Nginx.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Создайть тестовый файл
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
rm /usr/local/nginx/html/index.html
echo &quot;&lt;?php phpinfo(); ?&gt;&quot; &gt;&gt; /usr/local/nginx/html/index.php
</pre></div>
    </div>
   </div>

   <p class="para">
    Теперь откройте в браузере адрес http://localhost.
    Должна отобразиться информация, которую выводит функция phpinfo().
   </p>
  </li>
 </ol>

 <p class="para">
  Выполнив описанные шаги, вы получите работающий Nginx-сервер с
  поддержкой PHP в качестве модуля интерфейса <code class="literal">FPM</code> <code class="literal">SAPI</code>.
  Конечно, для Nginx и PHP доступно больше параметров конфигурации.
  Наберите в директории с исходным кодом команду <strong class="command">./configure --help</strong>,
  чтобы получить больше информации.
 </p>

</div><?php manual_footer($setup); ?>