nginx-conf-maker — автоматическая генерации конфигурационных файлов Nginx на основе шаблона и параметров из INI-файла с помощью скрипта на Python
- 
Проверка среды
Скрипт (script.py) убеждается, что все необходимые файлы и директории существуют:template.conf— шаблон конфига Nginxparams.ini— параметры для генерации- Директория для вывода (
/etc/nginx/conf.d) 
 - 
Чтение шаблона
Из шаблона (template.conf) считывается содержимое для последующего форматирования. - 
Парсинг параметров
Используется файлparams.iniв формате INI. Каждая секция — отдельный сайт.
Проверяется наличие обязательных ключей в каждой секции:listenserver_nameroot
 - 
Генерация конфигов
Для каждой секции:- Подставляются параметры в шаблон
 - Если файл уже существует и не изменился — пропускается
 - Иначе — создаётся новый конфиг с именем 
<section>.conf - Создаётся директория сайта вида 
/storage/www/<server_name> 
 - 
Проверка и перезагрузка Nginx
Если были изменения:- Выполняется проверка синтаксиса: 
nginx -t - Если всё корректно — выполняется 
systemctl reload nginxЕсли изменений не было, nginx не уходит в reload 
 - Выполняется проверка синтаксиса: 
 
- Запустите 
install.shс root-правами:sudo bash install.sh
 - Скрипт:
- Копирует файлы в 
/opt/nginx-conf-maker - Настраивает права на необходимые директории для работы группы 
nginx - Устанавливает systemd unit и таймер, чтобы генерация выполнялась ежедневно автоматически
 
 - Копирует файлы в 
 
script.py— основной скрипт генерацииinstall.sh— автоматическая установка и настройкаtemplate.conf— шаблон конфига nginxparams.ini— параметры для разных сайтов
- Скрипт запускается автоматически каждый день через systemd timer
 - Все действия производятся от пользователя и группы 
nginx, с нужными правами для редактирования конфигов и директорий. 
- 
Откройте
params.iniи добавьте новую секцию:[mysite] listen = 192.168.1.1:80 server_name = mysite.local root = /var/www/mysite
 - 
Скрипт автоматически создаст конфиг на основе шаблона и секции. Вызов скрипта через systemd.service
systemctl start nginx-conf-maker.service
 
Важно! Чтобы пользователь запускающий сервис, входил в группу nginx
- Python 3
 - Nginx
 - Доступ к sudo (для перезагрузки nginx и настройки прав)
 - Система с поддержкой systemd
 
server {{
    listen {listen};
    server_name {server_name};
    root {root};
}}LLIILLEEDD