Skip to content

LLIILLEEDD/nginx-conf-maker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nginx-conf-maker

Описание

nginx-conf-maker — автоматическая генерации конфигурационных файлов Nginx на основе шаблона и параметров из INI-файла с помощью скрипта на Python


Логика работы скрипта

  1. Проверка среды
    Скрипт (script.py) убеждается, что все необходимые файлы и директории существуют:

    • template.conf — шаблон конфига Nginx
    • params.ini — параметры для генерации
    • Директория для вывода (/etc/nginx/conf.d)
  2. Чтение шаблона
    Из шаблона (template.conf) считывается содержимое для последующего форматирования.

  3. Парсинг параметров
    Используется файл params.ini в формате INI. Каждая секция — отдельный сайт.
    Проверяется наличие обязательных ключей в каждой секции:

    • listen
    • server_name
    • root
  4. Генерация конфигов
    Для каждой секции:

    • Подставляются параметры в шаблон
    • Если файл уже существует и не изменился — пропускается
    • Иначе — создаётся новый конфиг с именем <section>.conf
    • Создаётся директория сайта вида /storage/www/<server_name>
  5. Проверка и перезагрузка Nginx
    Если были изменения:

    • Выполняется проверка синтаксиса: nginx -t
    • Если всё корректно — выполняется systemctl reload nginx Если изменений не было, nginx не уходит в reload

Установка

  1. Запустите install.sh с root-правами:
    sudo bash install.sh
  2. Скрипт:
    • Копирует файлы в /opt/nginx-conf-maker
    • Настраивает права на необходимые директории для работы группы nginx
    • Устанавливает systemd unit и таймер, чтобы генерация выполнялась ежедневно автоматически

Структура файлов

  • script.py — основной скрипт генерации
  • install.sh — автоматическая установка и настройка
  • template.conf — шаблон конфига nginx
  • params.ini — параметры для разных сайтов

Автоматизация

  • Скрипт запускается автоматически каждый день через systemd timer
  • Все действия производятся от пользователя и группы nginx, с нужными правами для редактирования конфигов и директорий.

Как добавить новый сайт

  1. Откройте params.ini и добавьте новую секцию:

    [mysite]
    listen = 192.168.1.1:80
    server_name = mysite.local
    root = /var/www/mysite
  2. Скрипт автоматически создаст конфиг на основе шаблона и секции. Вызов скрипта через systemd.service

    systemctl start nginx-conf-maker.service

Важно! Чтобы пользователь запускающий сервис, входил в группу nginx


Требования

  • Python 3
  • Nginx
  • Доступ к sudo (для перезагрузки nginx и настройки прав)
  • Система с поддержкой systemd

Пример шаблона (template.conf)

server {{
    listen {listen};
    server_name {server_name};
    root {root};
}}

Автор

LLIILLEEDD

About

Automatic generation of Nginx configuration files

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published