Files
php-doc-ru/install/unix/nginx.xml
2021-01-05 20:16:26 +03:00

287 lines
9.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: dcd5448282973a659f62e4240fb6e50aae0eb78b Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<sect1 xml:id="install.unix.nginx" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Установка Nginx 1.4.x на систему Unix</title>
<para>
Данная документация описывает процесс установки и настройки PHP с
PHP-FPM для Nginx 1.4.x HTTP сервера.
</para>
<para>
Данное руководство подразумевает, что вы собрали Nginx из исходников, следовательно,
все бинарные файлы и файлы конфигурации располагаются в
<literal>/usr/local/nginx</literal>. Если нет, и вы получили Nginx другим способом, тогда,
пожалуйста, обратитесь к <link xlink:href="&url.nginx;">Nginx Wiki</link>, чтобы перевести
данное руководство для вашей установки.
</para>
<para>
Данное руководство охватывает азы настройки Nginx сервера, для обработки PHP приложений
и отображения их на порту 80. Рекомендуется изучить документацию Nginx и PHP-FPM, если
вы хотите оптимизировать вашу установку за рамками данной документации.
</para>
<para>
Пожалуйста, обратите внимание, что во всей данной документации номера версий были
заменены на 'x', чтобы данная документация оставалась корректной в будущем.
Пожалуйста, замените 'x' на необходимый вам номер версии.
</para>
<orderedlist>
<listitem>
<para>
Рекомендуется посетить
<link xlink:href="&url.nginx.wiki.install;">страницу установки</link> на Nginx Wiki,
для информации о получении и установке Nginx.
</para>
</listitem>
<listitem>
<para>
Получение и распаковка исходники PHP:
</para>
<informalexample xml:id="install.unix.nginx.extract.php">
<screen>
<![CDATA[
tar zxf php-x.x.x
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Настройка и сборка PHP. В этом разделе описывается настройка и сборка PHP из
исходных кодов.
Запустите ./configure --help для получения списка доступных опций. В нашем примере
мы сделаем простые настройки с PHP-FPM и поддержкой MySQLi.
</para>
<informalexample xml:id="install.unix.nginx.build.php">
<screen>
<![CDATA[
cd ../php-x.x.x
./configure --enable-fpm --with-mysqli
make
sudo make install
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Перемещение файлов настройки в нужные директории
</para>
<informalexample xml:id="install.unix.nginx.configure.php">
<screen>
<![CDATA[
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
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Важно, что мы запрещаем Nginx от отправлять запросы в бэкенд PHP-FPM, если файл не
существует, что помогает избежать атаки инъекции скрипта.
</para>
<para>
Мы может исправить это путём установки директивы
<link linkend="ini.cgi.fix-pathinfo">cgi.fix_pathinfo</link>
равной <literal>0</literal> в нашем php.ini файле.
</para>
<para>
Редактирование php.ini:
</para>
<informalexample xml:id="install.unix.nginx.configure.ini">
<screen>
<![CDATA[
vim /usr/local/php/php.ini
]]>
</screen>
</informalexample>
<para>
Найдите опцию <literal>cgi.fix_pathinfo=</literal> и измените её следующим образом:
</para>
<informalexample xml:id="install.unix.nginx.configure.pathinfo">
<screen>
<![CDATA[
cgi.fix_pathinfo=0
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
php-fpm.conf должен быть модифицирован, чтобы точно определить, что php-fpm должен
работать под пользователем www-data и группой www-data до того, как мы запустим сервис:
</para>
<informalexample xml:id="install.unix.nginx.modify.phpfpm">
<screen>
<![CDATA[
vim /usr/local/etc/php-fpm.d/www.conf
]]>
</screen>
</informalexample>
<para>
Найдите и измените следующее:
</para>
<informalexample xml:id="install.unix.nginx.modify.phpfpm.usergroup">
<screen>
<![CDATA[
; Unix user/group of processes
; Замечание: Пользователь является обязательным. Если группа не установлена,
; то будет использована стандартная группа пользователя.
user = www-data
group = www-data
]]>
</screen>
</informalexample>
<para>
Теперь можно запускать сервис php-fpm:
</para>
<informalexample xml:id="install.unix.nginx.start.phpfpm">
<screen>
<![CDATA[
/usr/local/bin/php-fpm
]]>
</screen>
</informalexample>
<para>
Более в этом руководстве мы не будет касаться настройки php-fpm. Если вам
необходимо произвести дополнительные настройки - обратитесь к документации по php-fpm.
</para>
</listitem>
<listitem>
<para>
Теперь Nginx должен быть настроен на поддержку выполнения PHP:
</para>
<informalexample xml:id="install.unix.nginx.configure.nginx">
<programlisting>
<![CDATA[
vim /usr/local/nginx/conf/nginx.conf
]]>
</programlisting>
</informalexample>
<para>
Измените блок "location", заданный по умолчанию, так, чтобы
можно было обрабатывать .php файлы:
</para>
<informalexample xml:id="install.unix.nginx.configure.nginx.location">
<programlisting role="nginx-conf">
<![CDATA[
location / {
root html;
index index.php index.html index.htm;
}
]]>
</programlisting>
</informalexample>
<para>
Следующий шаг - убедиться, что .php файлы отправляются в бэкенд PHP-FPM.
Введите следующее:
</para>
<informalexample xml:id="install.unix.nginx.configure.nginx.php">
<programlisting role="nginx-conf">
<![CDATA[
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;
}
]]>
</programlisting>
</informalexample>
<para>
Перезапустите Nginx.
</para>
<informalexample xml:id="install.unix.nginx.restart.nginx">
<screen>
<![CDATA[
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<para>
Создайте тестовый файл
</para>
<informalexample xml:id="install.unix.nginx.test.nginx.php">
<screen>
<![CDATA[
rm /usr/local/nginx/html/index.html
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
]]>
</screen>
</informalexample>
<para>
Теперь откройте в браузере http://localhost. Должна отобразиться информация phpinfo().
</para>
</listitem>
</orderedlist>
<para>
Следуя вышеуказанным шагам, вы получите рабочий Nginx сервер с
поддержкой PHP как модуля <literal>FPM</literal> <literal>SAPI</literal>. Конечно, доступно
большое число опций настроек для Nginx и PHP. Для более
подробной информации наберите <command>./configure --help</command>
в соответствующем дереве исходных кодов.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->