如何在不重新启动apache的情况下重新加载站点的apache配置


Answers:


182

应该可以使用以下命令

sudo /etc/init.d/apache2 reload

希望能有所帮助


11
我很确定这是不正确的。在Ubuntu服务器的init.d脚本中,重载是指正常重启。这意味着重新加载实际上是重新启动,但是很正常。我的意见是,不中断服务就无法重新加载apache。
SteffenNielsen'3

4
阿鲁曼的答案是正确的。大多数Apache初始化脚本都会发送SIGHUP,相当于“ apachectl restart”,OP专门要求避免这种情况。其他Apache初始化脚本会发送SIGUSR1,它等效于“ apachectl graceful”,这也是重新启动,但执行得更优雅,这是Aruman的回答。
布赖恩·拉尔森

@SteffenNielsen我认为您是对的...使用负载均衡器,禁用要重新启动的负载均衡器,重新启动,处理数据库版本控制,然后对另一个apache服务器/容器执行相同操作,可能会很好。K8s消除了其中一些问题。
雷·福斯

1
好的,这就是发生的情况,主要的apache2进程没有改变,但是孩子或工人(我不知道正确的术语)都重新启动,而那些PID实际上却在改变。
伊利亚·林恩

1
我认为,在这种情况下,优美的举动仅意味着这些童工在被杀和重生之前已经完成了他们的要求。
伊利亚·林恩


28

apachectl -k graceful

检查此链接以获取更多信息:http : //www.electrictoolbox.com/article/apache/restart-apache/


18
这将重新启动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不变,正常的重新启动会破坏整个进程树,并生成一个新的进程树。因此,Tyler Collier的回答是完全合理的。
krad

7

已针对Apache 2.4,非系统版本(例如CentOS 6.x,Amazon Linux AMI)和系统版本(例如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 restarthttpd /?=>-k restart : tell running Apache to do a graceful restart
Andreas Dietrich'Apr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.