Как перезагрузить конфигурацию apache для сайта без перезапуска apache


149

Я отредактировал переменную AllowOverride для одного из моих веб-сайтов в каталоге с поддержкой сайтов . Как мне перезагрузить новую конфигурацию без перезапуска apache? Является ли это возможным?



2
Похоже, все ответы неверны.
Тигран

Ответы:


192

должно быть возможно с помощью команды

sudo /etc/init.d/apache2 reload

надеюсь, это поможет


12
Я почти уверен, что это неверно. В сценарии init.d сервера Ubuntu под перезагрузкой понимается плавный перезапуск. Это означает, что перезагрузка на самом деле является перезапуском, но изящно. Я считаю, что apache нельзя перезагрузить без прерывания работы службы.
SteffenNielsen 03

5
Ответ Арумана правильный. Большинство сценариев инициализации Apache отправляют SIGHUP, что эквивалентно «перезапуску apachectl», которого OP специально просил избегать. Другие сценарии инициализации Apache отправляют SIGUSR1, что эквивалентно 'apachectl graceful', что также является перезапуском, но выполняется более изящно, и это то, что дает ответ Арумана.
Брайан Ларсен

@SteffenNielsen Я думаю, что вы правы ... Некоторым будет хорошо использовать балансировщик нагрузки, отключив тот, который нужно перезапустить, перезапустить, иметь дело с управлением версиями db, а затем сделать то же самое для другого сервера / контейнера apache. K8s решает некоторые из этих проблем.
Рэй Фосс

1
Хорошо, вот что происходит: основной процесс apache2 не изменяется, но все дочерние или рабочие (я не знаю правильной терминологии) перезапускаются, эти PID фактически меняются.
Элайджа Линн

1
И я считаю, что изящность в данном случае означает, что эти дети-работники завершают выполнение своих требований, прежде чем их убьют и возродят.
Элайджа Линн


28

Делать

apachectl -k graceful

Для получения дополнительной информации перейдите по этой ссылке: http://www.electrictoolbox.com/article/apache/restart-apache/


21
Это приведет к перезапуску демона Apache httpd, которого специально задавался вопрос, чтобы избежать этого.
cs01

6
@ cs01 Где вы читаете, что демон httpd будет перезапущен? Все, что я прочитал по ссылке, приведенной в ответе, говорит о таких вещах, какapachectl graceful: Gracefully restarts the Apache daemon by sending it a SIGUSR1. If the daemon is not running, it is started. This differs from a normal restart in that currently open connections are not aborted.
Тайлер Коллиер

5
Первое предложение опубликованной вами документации говорит именно об этом, не так ли?
cs01

3
@ cs01 Вам нужно понять, почему они беспокоятся о перезагрузке. Это не указано, но я предполагаю, что они не хотят, чтобы соединения прерывались, а не перезапускался сам по себе. В большинстве случаев с этим справится постепенный перезапуск. Если есть долгоживущие связи, это может быть проблемой. Вам также нужно хорошее определение перезапуска, так как все, что делает постепенный перезапуск, - это повторная инициализация родительского процесса, то есть pid не меняется, тогда как при обычном перезапуске все дерево процессов разрушается и порождается новое. Поэтому ответ Тайлера Коллиера совершенно законен.
крад

7

Обновлено для Apache 2.4, для не-systemd (например, CentOS 6.x, Amazon Linux AMI) и для systemd (например, CentOS 7.x):

Существует два способа перезагрузки конфигурации процессом apache, в зависимости от того, что вы хотите сделать с его текущими потоками: либо посоветовать выйти в режиме ожидания, либо уничтожить их напрямую.

Обратите внимание, что Apache рекомендует использовать apachectl -kв качестве команды, а для systemd команда заменяется наhttpd -k

apachectl -k graceful или httpd -k graceful

Apache посоветует своим потокам выйти в режиме ожидания, а затем apache перезагрузит конфигурацию (он не завершит работу сам), это означает, что статистика не сбрасывается.

apachectl -k restart или httpd -k restart

Это похоже на остановку, поскольку процесс завершает свои потоки, но затем процесс перезагружает файл конфигурации, а не завершает работу.

Источник: https://httpd.apache.org/docs/2.4/stopping.html


apache 2.4.39 (win) не поддерживает httpd -k gracefulтолько httpd -k restart: httpd /?=>-k restart : tell running Apache to do a graceful restart
Андреас Дитрих

1

Если вы используете сервер Ubuntu, вы можете использовать systemctl

systemctl reload apache2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.