Отличная связка nginx + php-fpm — работает быстро, настраивается быстро, разворачивается быстро, при работе с php по мне так, это отличная связка. Весь материал из данной статьи — настройка домашнего LEMP сервера для тестовых нужд т.е. ниже расскажу как развернуть такой стек, создать демо-страницу или страницы. По сути чтение + воплощение стати в жизнь, примерно 5 — 10 минут, в конце сатьти представлен рабочий скрипт, который создает, удаляет, отображает существующие сайты.
Установка Nginx + Php-fpm
Устанавливаем необходимые пакеты (собственно сам стек):
dnf install nginx php-fpm php-common
Стартуем, включаем nginx:
systemctl enable nginx && systemctl start nginx
Конфигурирование php-fpm
Немного правим конфиг php-fpm:
nano /etc/php-fpm.d/www.conf
Изменяя параметры:
user = nginx group = nginx listen = /var/run/php-fpm/php-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660
Включаем и стартуем php-fpm
systemctl enable php-fpm.service && systemctl start php-fpm.service
Создание тестового сайта
Создадим каталог сайта:
mkdir -p /srv/www/site1.local/public_html
Каталог для логов сайта:
mkdir /srv/www/site1.local/logs
Создадим индексный файл, который выводит информацию о php:
nano /srv/www/site1.local/public_html/index.php
С текстом:
<?php phpinfo();
Указываем разрешения для каталога сайта:
chown -R nginx:nginx /srv/www/site1.local
Конфигурирование nginx
Создаем необходимые каталоги:
mkdir -p /etc/nginx/sites-available/ && mkdir -p /etc/nginx/sites-enabled/
Подключаем каталог sites-available
в секцию http
в /etc/nginx/nginx.conf
:
include /etc/nginx/sites-available/*.conf;
Создаем файл-конфиг для нашего сайта:
nano /etc/nginx/sites-available/site1.local.conf
С параметрами:
server { server_name site1.local; access_log /srv/www/site1.local/logs/access.log; error_log /srv/www/site1.local/logs/error.log; root /srv/www/site1.local/public_html; location / { index index.html index.htm index.php; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Создаем симлинку для включения сайта:
cd /etc/nginx/sites-enabled/ ln -s /etc/nginx/sites-available/site1.local.conf
Создаем файл /var/run/php-fpm/php-fpm.sock, если его еще нет, и права на него выдаем*:
sudo touch /var/run/php-fpm/php-fpm.sock sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock
Задаем права на файл конфигурации*:
sudo chown nginx:nginx /etc/nginx/sites-available/site1.local.conf
Перезапускаем nginx:
systemctl restart nginx
Дополнительные настройки
Добавляем в /etc/hosts наш новоиспеченный сайт:
echo "xxx.xxx.xxx.x site1.local" >> /etc/hosts
Где xxx.xxx.xxx.x — IP сервера, где разворачивается LEMP.
Так, как сервер тестовый разрешаем контекст httpd_t для selinux:
semanage permissive -a httpd_t
Далее необходимо открыть http сервис в firewalld:
firewall-cmd --permanent --add-service=http firewall-cmd --reload
Проверку можно осуществить в браузере набрав в адресной строке http://site1.local
Автоматизация
Руками пилить все вышеописанные папки довольно долго и нудно, для облегчения задач был написан скрипт, который может:
- Создавать тестовые сайты (папки, конфиги, индексный файл)
- Удалять любой из тестовых сайтов
- Отображать информацию о существующих сайтах
Ропозиторий — https://github.com/m0zgen/create-lemp-site
Источник: https://sys-adm.in/sections/os-nix/830-fedora-linux-ustanovka-nastrojka-lemp-nginx-php-fpm.html
Примечание:
* — мои добавки, без которых у меня не завелось, по данному руководству
site1.local заменил на start.local
PMA (phpMyAdmin)
дальше расскажу как в CentOS / Fedora собственно быстро установить сабж.
Установка
В CentOS нужно установить epel-release:
yum install epel-release
Установить phpMyAdmin используя yum / dnf:
yum install phpmyadmin
Настройка разрешений
Настроить разрешения на PMA:
chgrp -R nginx /etc/phpMyAdmin
Настроить разрешения для каталога сессий:
chown -R nginx:nginx /var/lib/php/
Создание nginx конфига phpMyAdmin
Создать каталог для нашего сниппета:
mkdir -p /etc/nginx/snippets
Создать файл конфига:
nano /etc/nginx/snippets/phpMyAdmin.conf
С параметрами:
location /phpMyAdmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpMyAdmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^/phpMyAdmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpmyadmin { rewrite ^/* /phpMyAdmin last; }
Подключить в конфиг своего сайта в раздел server новый сниппет:
include /etc/nginx/snippets/phpMyAdmin.conf;
Перезапустить nginx:
systemctl restart nginx
Как открыть PMA
Здесь все просто, PMA будет доступен по ссылке:
http://test-site.local/phpMyAdmin
413 Request Entity Too Large
, в конфиг nginx в раздел http можно добавить параметр client_max_body_size 200M;
где 200M размер дампа или больше. Так же по теме — Импорт большого дампа базы MySQLDone!