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