Установка PHP-FPM и Nginx обеспечивает гораздо более отзывчивый веб-сервер, чем типичная связка LAMP (Linux, Apache, MySQL и PHP). Статические файлы подаются с молниеносной скоростью и результат более довольные пользователи, лучшие места для поиска и вообще быстрый сайт.
Долгое время при рекомендации перейти на Nginx, пользователи беспокоились, что это будет затруднительно в установке и поддержке. Но в случае с современными операционными системами Ubuntu (актуально для версии до 14.04+) это просто. Несколько команд и несколько минут вашего времени это все, что потребуется, чтобы получить полностью функционирующий LNMP-сервер (Linux, Nginx, MySQL и PHP5), поднятый и работающий.
Здесь представлены 10 шагов к готовой связке LNMP.
Все команды выполняются с правами суперпользователя (root
, sudo
).
- Шаг 1: Проверка OS на наличие обновлений и их установка.
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
- Шаг 2: Перезагрузка OS.
shutdown -r now
- Шаг 3: Установка Nginx.
-
apt-get install nginx -y
- Шаг 4: Установка PHP с необходимым (минимальным) набором модулей.
apt-get install php5-fpm php5-gd php5-json php5-xcache php5-mysql php5-mcrypt php5-imap php5-geoip php5-sqlite php5-curl php5-cli -y
- Шаг 5: Установка MySQL.
-
apt-get install mysql-client mysql-server -y
Примечание:
Установите пароль для root-пользователя MySQL, когда вас попросит установщик. Вы можете, по желанию, выполнить в будущем эту команду для защиты сервер MySQL:mysql_secure_installation
- Шаг 6: Быстрое обновление конфигурации Nginx (nginx.conf).
-
replace "worker_processes 4" "worker_processes 2" -- /etc/nginx/nginx.conf
replace "keepalive_timeout 65" "keepalive_timeout 5" -- /etc/nginx/nginx.conf
replace "index index.html index.htm" "index index.php index.html index.htm" -- /etc/nginx/sites-available/default
Примечание:
Мы заменили количество процессов с 2 на 4.
Можно установить количество равное количеству ядер, или 2х количества ядер.
- Шаг 7: Редактируем вручную конфикурацию сайтов по-умолчанию, чтобы подключить PHP.
-
vim /etc/nginx/sites-available/default
Помещаем это в блокserver {}
# pass the PHP scripts to PHP-FPM server listening on unix socket location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # deny access to ‘.’ files location ~ /\. { deny all; access_log off; log_not_found off; }
Примечание:
Что-то подобное там уже есть (скорее всего), заключенное в #, но нужно именно это, т.к. там указан IP: 127.0.0.1:9000, а в этой сборке используется сокет.
- Шаг 8: Быстрое обновление конфигурации PHP-FPM, для 'www'-пула по-умолчанию.
replace "listen = 127.0.0.1:9000" "listen = /var/run/php5-fpm.sock;" -- /etc/php5/fpm/pool.d/www.conf
- Шаг 9: Перезагрузка сервисов.
service nginx restart && service php5-fpm restart
- Шаг 10: Проверяем работоспособность.
-
echo "<?php phpinfo(); ?>" > /usr/share/nginx/www/index.php
Теперь вы можете ввести IP-адрес своего сервера (или для локального сервера 127.0.0.1) или имя хоста в браузер и должна быть представлена на страница phpinfo.
Готово.
Перевод с английского. Оригинальный текст взят с просторов Интернета.
P.S.
С последними обновления возможна ошибка с правами доступа в PHP5-FPM (13: Permission denied), решение может стать раскомментирование параметров "listen.owner = nginx" и "listen.group = nginx", где nginx - имя пользователя, от которого работает nginx.