@BloodVIRUS

Как через php перезагрузить nginx?

Здравствуйте. Продолжаю биться за возможность подключение пользователями своих доменов (и подключения к ним https). Смирился с тем, что единым конфигом мне не обойтись (как было в моем предыдущем вопросе), и абсолютно для каждого сайта нужно создать свой собственный конфиг.
Но вопрос, как можно из php скрипта перезапустить NGINX? exec не срабатывает, да и не хочется его использовать. Думается мне это крайне не безопасно.
А какие еще варианты могут существовать?
Вот искал бы он конфиги на лету, без перезагрузки..
  • Вопрос задан
  • 2156 просмотров
Пригласить эксперта
Ответы на вопрос 6
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Не занимайтесь фигнёй. Есть такая замечательная вещь как IaC (Infrastructure as Code). Инструментов под это куча, а обращение к этому уже можно делать через php ибо эти инструменты имеют свой API. Подготавливаете конфигурации, обновляете их на php и перезапускаете развертывание. Все счастливы
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
ну, вариантов есть много, вот например:
Создаете из пыха файл restart.ngx когда нужно перегрузить сервер, из крона каждую минуту дергаете баш скрипт перезагрузки сервера если файл есть + стираете файл. Физически пых никак при этом не дергает систему.
Вопросы устойчивости системы и прочие "безопасности" смотрите по месту.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега PHP
♬♬
Можно просто по крону раз в 15 минут делать не перезагрузку самого nginx, а только перечитку конфигов.

в кронтабе для root, с проверкой корректности конфигов:
15 0 0 0 0  nginx -t  &&  nginx -s reload > /dev/null 2>&1


Ещё лучше сделать bash-скрипт, где в случае непрохождения теста конфигов, отправлять письмо с восклицаниями.
Ответ написан
Комментировать
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Предлагаю вам смотреть в сторону inotify и похожих штук. Но вообще - в рамках одного веб-сервера это проблематично, поскольку если появится кривота хотя бы у одного клиента - нгинкс не поднимется. Соответственно, нужна верификация с последующим откатом.

Намного логичнее предоставить каждому пользователю свой экземпляр веб-сервера.
Ответ написан
Комментировать
Supme
@Supme
Просто системный администратор
При изменениях пишем файл в спец каталог. Подписка на событие файловой системы на изменение каталога. По изменению- nginx -t и в случае факапа отправка мэссэджа всем причастным, в случае хорошего завершения релоад энджи, именно релоад, а не рестарт.
Ответ написан
kotomyava
@kotomyava
Системный администратор
Проанализируйте, как работают и как сделаны панели управления хостингом, прежде чем делать собственный велосипед с квадратными колёсами.

Обычно, есть отдельно веб интерфейс, и отдельно инструментарий работающий с повышенными привилегиями, связанные через какое-то межпроцессное взаимодействие, в простейшем случае, например, через базу данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽