Отличная связка 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!
					