Jak przeładować konfigurację Apache dla witryny bez ponownego uruchamiania Apache

141

Dokonałem edycji zmiennej AllowOverride dla jednej z moich witryn w katalogu z włączoną obsługą witryn . Jak przeładować nową konfigurację bez ponownego uruchamiania Apache? Czy to możliwe?

hpn
źródło
6
apache2 reload superuser.com/questions/192686/…
Christian Smorra
1
Wygląda na to, że wszystkie odpowiedzi są nieprawidłowe.
Tigran,

Odpowiedzi:

182

powinno być możliwe przy użyciu polecenia

sudo /etc/init.d/apache2 reload

mam nadzieję, że to pomoże

olly_uk
źródło
11
Jestem pewien, że to nie jest poprawne. Patrząc na skrypt init.d serwera Ubuntu, przeładowanie odnosi się do pełnego wdzięku ponownego uruchomienia. Oznacza to, że przeładowanie jest w rzeczywistości ponownym uruchomieniem, ale z wdziękiem. Uważam, że Apache nie da się przeładować bez przerywania usługi.
SteffenNielsen
4
Odpowiedź Arumana jest prawidłowa. Większość skryptów startowych Apache wysyła SIGHUP, co jest równoważne „restartowi apachectl”, o unikanie tego OP. Inne skrypty inicjujące Apache wysyłają SIGUSR1, co jest odpowiednikiem „apachectl graceful”, co jest również ponownym uruchomieniem, ale wykonanym bardziej wdzięcznie, i jest tym, co zapewnia odpowiedź Arumana.
Bryan Larsen
@SteffenNielsen Myślę, że masz rację ... Niektórym wystarczy użycie load balancera, wyłączenie tego, który ma być zrestartowany, restart, zajęcie się wersjami db, a następnie zrobienie tego samego dla drugiego serwera / kontenera Apache. K8s rozwiązuje niektóre z tych problemów.
Ray Foss,
1
Okay, oto co się dzieje, główny proces Apache2 się nie zmienia, ale dzieci lub pracownicy (nie znam właściwej terminologii) wszyscy restartują, te PID'y faktycznie się zmieniają.
Elijah Lynn
1
I myślę, że wdzięczność w tym przypadku oznacza po prostu, że te dzieci-pracownicy kończą spełnianie swoich żądań, zanim zostaną zabici i odrodzeni.
Elijah Lynn
114

inny sposób to:

sudo service apache2 reload
felixmpa
źródło
28

Robić

apachectl -k graceful

Sprawdź to łącze, aby uzyskać więcej informacji: http://www.electrictoolbox.com/article/apache/restart-apache/

Aruman
źródło
18
Spowoduje to ponowne uruchomienie demona httpd Apache, którego należy unikać w pytaniu.
cs01
6
@ cs01 Gdzie czytasz, że demon httpd zostanie zrestartowany? Wszystko, co przeczytałem pod linkiem podanym w odpowiedzi, mówi np.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.
Tyler Collier,
5
Pierwsze zdanie opublikowanej przez ciebie dokumentacji właśnie tak mówi, prawda?
cs01
3
@ cs01 Musisz zrozumieć, dlaczego martwią się o ponowne uruchomienie. Nie jest to określone, ale przypuszczam, że nie chcą przerywania połączeń, a nie samego restartu. W większości przypadków wystarczy wdzięczny restart. Jeśli istnieją długotrwałe połączenia, może to jednak stanowić problem. Potrzebujesz również dobrej definicji restartu, ponieważ wszystko, co robi wdzięczny restart, to ponowna inicjalizacja procesu nadrzędnego, tj. Pid się nie zmienia, gdzie normalny restart zrywa całe drzewo procesu i tworzy nowe. Dlatego odpowiedź Tylera Colliera jest całkowicie uzasadniona.
krad
7

Zaktualizowano dla Apache 2.4, dla non-systemd (np. CentOS 6.x, Amazon Linux AMI) i dla systemd (np. CentOS 7.x):

Istnieją dwa sposoby na ponowne załadowanie konfiguracji przez proces apache, w zależności od tego, co chcesz zrobić z jego bieżącymi wątkami, albo radzą zakończyć, gdy jest bezczynny, albo zabijają je bezpośrednio.

Zauważ, że Apache zaleca użycie apachectl -kjako polecenia, aw przypadku systemd polecenie jest zastępowane przezhttpd -k

apachectl -k graceful lub httpd -k graceful

Apache doradzi swoim wątkom, aby kończyły pracę, gdy są bezczynne, a następnie apache ponownie ładuje konfigurację (nie wychodzi sam), co oznacza, że ​​statystyki nie są resetowane.

apachectl -k restart lub httpd -k restart

Jest to podobne do zatrzymania, w którym proces zabija swoje wątki, ale potem proces przeładowuje plik konfiguracyjny, zamiast zabijać się.

Źródło: https://httpd.apache.org/docs/2.4/stopping.html

jeffmcneill
źródło
Apache 4.2.39 (wygrana) nie obsługuje httpd -k gracefultylko httpd -k restart: httpd /?=>-k restart : tell running Apache to do a graceful restart
Andreas Dietrich