31111111111Rating 3.00 (1 Vote)

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

Перезапускаем 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

 

Добавить комментарий


Защитный код
Обновить

Сейчас 860 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз