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?
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.
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ę.
Odpowiedzi:
powinno być możliwe przy użyciu polecenia
mam nadzieję, że to pomoże
źródło
inny sposób to:
źródło
Robić
Sprawdź to łącze, aby uzyskać więcej informacji: http://www.electrictoolbox.com/article/apache/restart-apache/
źródło
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.
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 -k
jako polecenia, aw przypadku systemd polecenie jest zastępowane przezhttpd -k
apachectl -k graceful
lubhttpd -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
lubhttpd -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
źródło
httpd -k graceful
tylkohttpd -k restart
:httpd /?
=>-k restart : tell running Apache to do a graceful restart