Каков правильный подход для редактирования конфигов?

Здравствуйте. Пишу небольшую программу, которая позволяла бы мне управлять веб-сайтами (редактирование, удаление, привязка и отвязка алиасов). Возник вопрос о том, как лучше выполнять редактирование конфигурационных файлов. Сейчас все сделано так: в базе данных хранится информация о каждом сайте (страницы ошибок, привязанные к сайту, алиасы и основной домен, кодировка, индексные файлы и пр.). При изменении данных я извлекаю из БД данные и формирую старую строку, затем читаю конфиг в строку и произвожу замену, очищаю файл и записываю обратно.
Мне сказали, что это плохой подход. Также появилась идея: при редактировании каждый раз генерировать новый конфиг, но тогда придётся тянуть много информации из базы данных (информация обо всех алиасах хоста, страницах ошибок и пр.) и писать это всё в конфиг.
Какой вариант кажется Вам наиболее правильным?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@pfg21
ex-турист
есть бд с сайтами, с бд твоя прога генерит набор конфигов формата %имя_проги%-%имя_сайта% в папку /etc/nginx/sites-enabled
после изменения сайта в бд, соотвествующий конфиг генерится заново и запускается nginx -s reload
плюс команда reload_all когда удаляются все конфиги формата %имя_проги%-* и все конфиги из базы генерятся заново.
алгоритм проги с структурой базы усложнятся, но зато исчезнет куча вероятных ошибок.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Руками заходить и в виме править
Если серверов много - использовать ансибл

Никогда не делать усложнения критических систем
Ответ написан
Комментировать
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Раскрою про IaaS Ansible way.
Репозиторий с шаблонами конфигов и плейбуком для деплоя
Данные для вставки в шаблоны пусть обновляются тем же приложением, что писало в БД, в отдельные файлы по vhost-ам (в идеале - ещё и пушило обновления в другой репозиторий), которые плейбук будет получать в начале модулем synchronize (в идеале - апдейтить локальный репозиторий данных).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы