Comment recharger la configuration d'Apache pour un site sans redémarrer Apache
142
J'ai modifié la variable AllowOverride pour l'un de mes sites Web dans le répertoire compatible avec les sites . Comment recharger la nouvelle configuration sans redémarrer Apache? C'est possible?
Je suis presque sûr que ce n'est pas correct. En regardant dans le script init.d d'un serveur Ubuntu, recharger fait référence au redémarrage progressif. Cela signifie que le rechargement est en fait un redémarrage, mais gracieusement. Mon opinion est qu'apache ne peut pas être rechargé sans interrompre le service.
SteffenNielsen
4
La réponse d'Aruman est la bonne. La plupart des scripts d'initialisation Apache envoient SIGHUP, ce qui équivaut à «redémarrage apachectl», ce que l'OP a spécifiquement demandé d'éviter. D'autres scripts d'initialisation Apache envoient SIGUSR1 qui est équivalent à «apachectl graceful», qui est aussi un redémarrage, mais fait plus gracieusement, et c'est ce que fournit la réponse d'Aruman.
Bryan Larsen
@SteffenNielsen Je pense que vous avez raison ... Certains conviendront bien à l'utilisation d'un équilibreur de charge, à la désactivation de celui à redémarrer, au redémarrage, au contrôle de version de la base de données, puis à faire de même pour l'autre serveur / conteneur Apache. K8s élimine certains de ces problèmes.
Ray Foss
1
Bon, voici ce qui se passe, le processus principal d'apache2 ne change pas, mais les enfants ou les travailleurs (je ne connais pas la bonne terminologie) redémarrent tous, ces PID changent en fait.
Elijah Lynn
1
Et je pense que gracieux dans ce cas signifie simplement que ces enfants travailleurs finissent de répondre à leurs demandes avant d'être tués et réapparus.
Cela redémarrera le démon Apache httpd, que la question a spécifiquement demandé d'éviter.
cs01
6
@ cs01 Où lisez-vous que le démon httpd sera redémarré? Tout ce que j'ai lu sur le lien fourni dans la réponse dit des choses commeapachectl 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
La première phrase de la documentation que vous avez publiée le dit, n'est-ce pas?
cs01
3
@ cs01 Vous devez comprendre pourquoi ils s'inquiètent d'un redémarrage. Ce n'est pas spécifié, mais je suppose qu'ils ne veulent pas que les connexions soient interrompues, plutôt qu'un redémarrage en soi. Un redémarrage progressif fera l'affaire dans la plupart des cas. S'il y a des connexions de longue durée, c'est peut-être un problème. Vous avez également besoin d'une bonne définition du redémarrage, car tout le redémarrage gracieux fait est de réinitialiser le processus parent, c'est-à-dire que le pid ne change pas, où comme un redémarrage normal détruit tout l'arborescence du processus et en génère un nouveau. La réponse de Tyler Collier est donc parfaitement légitime.
krad
7
Mise à jour pour Apache 2.4, pour non-systemd (par exemple, CentOS 6.x, Amazon Linux AMI) et pour systemd (par exemple, CentOS 7.x):
Il y a deux façons de faire recharger la configuration par le processus apache, selon ce que vous voulez faire avec ses threads actuels, soit conseiller de quitter quand il est inactif, soit les tuer directement.
Notez qu'Apache recommande d'utiliser apachectl -kcomme commande, et pour systemd, la commande est remplacée parhttpd -k
apachectl -k graceful ou httpd -k graceful
Apache conseillera à ses threads de se fermer lorsqu'ils sont inactifs, puis apache recharge la configuration (il ne se ferme pas), cela signifie que les statistiques ne sont pas réinitialisées.
apachectl -k restart ou httpd -k restart
Ceci est similaire à stop, en ce que le processus tue ses threads, mais ensuite le processus recharge le fichier de configuration, plutôt que de se tuer.
apache 2.4.39 (win) ne prend pas en charge httpd -k gracefuluniquement httpd -k restart: httpd /?=>-k restart : tell running Apache to do a graceful restart
Réponses:
devrait être possible en utilisant la commande
J'espère que cela pourra aider
la source
l'autre façon est:
la source
Faire
Consultez ce lien pour plus d'informations: http://www.electrictoolbox.com/article/apache/restart-apache/
la source
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.
Mise à jour pour Apache 2.4, pour non-systemd (par exemple, CentOS 6.x, Amazon Linux AMI) et pour systemd (par exemple, CentOS 7.x):
Il y a deux façons de faire recharger la configuration par le processus apache, selon ce que vous voulez faire avec ses threads actuels, soit conseiller de quitter quand il est inactif, soit les tuer directement.
Notez qu'Apache recommande d'utiliser
apachectl -k
comme commande, et pour systemd, la commande est remplacée parhttpd -k
apachectl -k graceful
ouhttpd -k graceful
Apache conseillera à ses threads de se fermer lorsqu'ils sont inactifs, puis apache recharge la configuration (il ne se ferme pas), cela signifie que les statistiques ne sont pas réinitialisées.
apachectl -k restart
ouhttpd -k restart
Ceci est similaire à stop, en ce que le processus tue ses threads, mais ensuite le processus recharge le fichier de configuration, plutôt que de se tuer.
Source: https://httpd.apache.org/docs/2.4/stopping.html
la source
httpd -k graceful
uniquementhttpd -k restart
:httpd /?
=>-k restart : tell running Apache to do a graceful restart