web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-php5-and-php-fpm-for-nginx
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версия | |||
| web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-php5-and-php-fpm-for-nginx [05.09.2025 12:05] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-php5-and-php-fpm-for-nginx [05.09.2025 12:05] (текущий) – ↷ Страница перемещена из unix-linux:ubuntu:ubuntu-14-04-lts-trusty-tahr:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-php5-and-php-fpm-for-nginx в web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-php5-and-php-fpm-for-nginx Алексей Максимов | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ===== Настройка веб-сервера на базе стека LEMP в Ubuntu Server 14.04 LTS. Часть 4. Установка и настройка PHP и PHP-FPM ===== | ||
| + | В этой части мы произведём установку пакетов **PHP5** и его модулей необходимых для работы наших сайтов. В качестве альтернативы веб-серверу **Apache** будет использован пакет **PHP-FPM** (PHP-FastCGI Process Manager). | ||
| + | |||
| + | \\ | ||
| + | ==== Установка PHP и PHP-FPM ==== | ||
| + | |||
| + | Установим **PHP5** и **PHP-FPM** через который **Nginx** будет работать с php-скриптами. | ||
| + | Вместе с установкой php нам потребуется установка ряда дополнительных пакетов, | ||
| + | Так, например, | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Для определения нужных модулей php для **phpBB3** может помочь ссылка: | ||
| + | |||
| + | |||
| + | Итак, мы определились с набором модулей php, и теперь выполняем их установку вместе с основным пакетом **php5** и пакетом **php5-fpm**: | ||
| + | |||
| + | < | ||
| + | sudo apt-get install php5 php5-fpm php-pear php5-mysql \ | ||
| + | | ||
| + | |||
| + | \\ | ||
| + | ==== Глобальные параметры сервисов PHP-FPM ==== | ||
| + | |||
| + | Настроим глобальные параметры сервисов php-fpm. | ||
| + | |||
| + | Откроем основной файл настроек php-fpm - **php-fpm.conf** | ||
| + | |||
| + | < | ||
| + | |||
| + | Убедимся в том, что в файле раскомментирована строка подключения конфигурационных файлов из подкаталога **pool.d**: | ||
| + | |||
| + | <file ini / | ||
| + | include=/ | ||
| + | ;</ | ||
| + | |||
| + | Это гарантирует запуск отдельных пулов php-fpm, которые мы в дальнейшем сделаем. | ||
| + | Подразумевается, | ||
| + | |||
| + | Настройки параметров **emergency_restart_threshold**, | ||
| + | |||
| + | <file ini / | ||
| + | emergency_restart_threshold = 10 | ||
| + | emergency_restart_interval = 1m | ||
| + | process_control_timeout = 10s | ||
| + | ;</ | ||
| + | |||
| + | Прочие параметры файла **php-fpm.conf** в большинстве случаев можно оставить в конфигурации по умолчанию. | ||
| + | |||
| + | Для вступления изменённых параметров в силу перезапустим службу **php5-fpm**: | ||
| + | |||
| + | < | ||
| + | |||
| + | \\ | ||
| + | ==== Глобальные параметры PHP для всех пулов PHP-FPM ==== | ||
| + | |||
| + | Одной из приятных особенностей php-fpm является то, что каждый отдельный пул может использовать собственные кастомизированные настройки конфигурации php (php.ini). То есть, как я понял, по умолчанию все пулы используют общий файл настроек **/ | ||
| + | |||
| + | Отредактируем глобальные параметры php для всех пулов php-fpm: | ||
| + | |||
| + | < | ||
| + | |||
| + | Сам по себе файл php.ini имеет множество параметров. Здесь приведены фрагментарные выдержки из этого файла только для тех параметров которые может потребоваться поменять в зависимости от потребностей ваших сайтов: | ||
| + | |||
| + | <file ini / | ||
| + | ; | ||
| + | ; Раскомментировать и перевести в 0 | ||
| + | ; Для устранения опасности неправильно трактования (и возникающей уязвимости) | ||
| + | ; запросов вида "/ | ||
| + | ; | ||
| + | cgi.fix_pathinfo=0 | ||
| + | |||
| + | ; Если требуется загрузка/ | ||
| + | ; Например до 256MB | ||
| + | ; Значения по умолчанию: | ||
| + | ; | ||
| + | post_max_size = 256M | ||
| + | upload_max_filesize = 256M | ||
| + | |||
| + | ; Запретить использование короткой формы записи тегов, т.е. <?, а не <?php. | ||
| + | ; Значение по умолчанию: | ||
| + | ; | ||
| + | short_open_tag = Off | ||
| + | |||
| + | ; Отключен показ ошибок. Может быть полезен лишь при отладке скриптов | ||
| + | ; и понижает безопасность системы в продуктивных средах | ||
| + | ; Значение по умолчанию: | ||
| + | ; | ||
| + | display_errors = Off | ||
| + | display_startup_errors = Off | ||
| + | |||
| + | ; Отключить запись последней произошедшей ошибки в переменную $php_errormsg | ||
| + | ; Значение по умолчанию: | ||
| + | ; | ||
| + | track_errors = Off | ||
| + | </ | ||
| + | |||
| + | Прочие параметры файла **php.ini** в большинстве случаев можно оставить в конфигурации по умолчанию. | ||
| + | |||
| + | Для вступления изменённых параметров в силу перезапустим службу php5-fpm: | ||
| + | |||
| + | < | ||
| + | |||
| + | \\ | ||
| + | ==== Подключение модулей PHP ==== | ||
| + | |||
| + | Посмотреть какие модули php будут загружаться можно в каталоге **/ | ||
| + | Доступные для загрузки модули можно найти в каталоге **/ | ||
| + | Большинство модулей подключаются автоматически при установке. | ||
| + | Пример подключения модуля вручную | ||
| + | |||
| + | < | ||
| + | |||
| + | Для вступления изменённых параметров в силу перезапустим службу **php5-fpm**: | ||
| + | |||
| + | < | ||
| + | |||
| + | \\ | ||
| + | ==== Настройка пулов PHP-FPM ==== | ||
| + | |||
| + | Дефолтный пул в файле sudo nano **/ | ||
| + | Если планируется запуск всего одного сайта, то можно ограничиться настройкой файла **www.conf**. | ||
| + | В нашем случае сайтов планируется к использованию несколько. | ||
| + | Создадим отдельные пулы под разные сайты скопировав их из дефолтного, | ||
| + | |||
| + | < | ||
| + | sudo cp / | ||
| + | sudo cp / | ||
| + | sudo cp / | ||
| + | sudo cp / | ||
| + | sudo rm / | ||
| + | </ | ||
| + | |||
| + | Перед настройкой пулов нужно определиться с выбором типа сокета для работы пулов. | ||
| + | Есть два варианта: | ||
| + | * **Unix-сокет** (по умолчанию / | ||
| + | * **TCP-сокет** (по умолчанию 127.0.0.1: | ||
| + | |||
| + | Чтобы определиться с тем, какой тип сокета выбрать можно поизучать всяческие дебаты по этому поводу, | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Я остановил свой выбор на Unix-сокете, | ||
| + | |||
| + | Для того, чтобы каждый отдельный сайт использовал свой сокет, создадим в системе пользователей, | ||
| + | |||
| + | < | ||
| + | sudo useradd -g www-pool-root www-pool-root | ||
| + | |||
| + | sudo groupadd www-pool-blog | ||
| + | sudo useradd -g www-pool-blog www-pool-blog | ||
| + | |||
| + | sudo groupadd www-pool-forum | ||
| + | sudo useradd -g www-pool-forum www-pool-forum | ||
| + | |||
| + | sudo groupadd www-pool-wiki | ||
| + | sudo useradd -g www-pool-wiki www-pool-wiki | ||
| + | </ | ||
| + | |||
| + | Пример конфигурационного файла пула под один из сайтов (блог Wordpress) **/ | ||
| + | |||
| + | <file bash / | ||
| + | [php-fpm-pool-blog] | ||
| + | |||
| + | # Пользователь запуска пула | ||
| + | user = www-pool-blog | ||
| + | |||
| + | # Группа запуска пула | ||
| + | group = www-pool-blog | ||
| + | |||
| + | # Расположение сокета | ||
| + | listen = / | ||
| + | |||
| + | # Очередь клиентских подключений | ||
| + | listen.backlog = 65535 | ||
| + | |||
| + | # Права назначаемые на файл сокета | ||
| + | listen.owner = www-pool-blog | ||
| + | |||
| + | # Права назначаемые на файл сокета | ||
| + | # Должна быть указана основная группа пользователя, | ||
| + | # от имени которого стартует nginx | ||
| + | listen.group = www-data | ||
| + | |||
| + | # Права назначаемые на файл сокета | ||
| + | listen.mode = 0660 | ||
| + | |||
| + | # Очередь запросов для каждого дочернего процесса внутри пула. | ||
| + | # Помогает предотвратить утечки памяти при использовании сторонних библиотек. | ||
| + | # По умолчанию 0, то есть неограничено. | ||
| + | pm.max_requests = 500 | ||
| + | |||
| + | # Ограничение выполнения файлов по расширению имени | ||
| + | security.limit_extensions = .php | ||
| + | |||
| + | # Переопределение глобальных параметров PHP. | ||
| + | # Запрет вызова запуска Linux-команд и функции PHP allow_url_fopen | ||
| + | php_admin_value[disable_functions] = exec, | ||
| + | php_admin_flag[allow_url_fopen] = off | ||
| + | </ | ||
| + | |||
| + | Все прочие параметры, | ||
| + | Помимо указанных параметров, | ||
| + | |||
| + | Пример конфигурационного файла пула под другой сайт (форум phpBB) **/ | ||
| + | (отображены только изменённые или добавленные параметры конфига). В целом параметры аналогичны вышеприведённому примеру и этот пример приведён лишь для того, что бы были понятны отличия для настройки пулов под разные сайты. | ||
| + | |||
| + | <file bash / | ||
| + | [php-fpm-pool-forum] | ||
| + | user = www-pool-forum | ||
| + | group = www-pool-forum | ||
| + | listen = / | ||
| + | listen.backlog = 65535 | ||
| + | listen.owner = www-pool-forum | ||
| + | listen.group = www-data | ||
| + | listen.mode = 0660 | ||
| + | pm.max_requests = 500 | ||
| + | security.limit_extensions = .php | ||
| + | php_admin_value[disable_functions] = exec, | ||
| + | php_admin_flag[allow_url_fopen] = off | ||
| + | </ | ||
| + | |||
| + | |||
| + | При таких настройках пулов, в группу вида **www-data** должен будет входить пользователь, | ||
| + | |||
| + | |||
| + | После редактирования конфигурационных файлов пулов, для вступления изменений в силу, перезагрузим **php-fpm**: | ||
| + | |||
| + | < | ||
| + | |||
| + | Служба должна перезапуститься без ошибок, | ||
| + | |||
| + | < | ||
| + | |||
| + | srw-rw---- 1 www-pool-blog | ||
| + | srw-rw---- 1 www-pool-forum www-data 0 Mar 23 16:38 / | ||
| + | srw-rw---- 1 www-pool-root | ||
| + | srw-rw---- 1 www-pool-wiki | ||
| + | |||
| + | Как видим, сокеты созданы и теперь можно переходить к установке и настройке **nginx**. | ||
| + | \\ | ||
| + | \\ | ||
| + | ==== Дополнительные источники информации ==== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{tag> | ||
| + | |||
| + | ~~DISCUSSION~~ | ||