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

hpn*_*hpn 128 apache2

我已经在启用站点的目录中为我的一个网站编辑了变量AllowOverride.如何在不重新启动apache的情况下重新加载新配置?可能吗?

oll*_*_uk 161

应该可以使用命令

sudo /etc/init.d/apache2 reload
Run Code Online (Sandbox Code Playgroud)

希望有所帮助

  • 我很确定这不正确.查看Ubuntu服务器的init.d脚本,重新加载是指正常重启.这意味着重新加载实际上是重新启动,但优雅.我的观点是,在不中断服务的情况下无法重新加载apache. (8认同)
  • 阿鲁曼的回答是正确的.大多数Apache init脚本发送SIGHUP,相当于'apachectl restart',OP特别要求避免.其他Apache init脚本发送SIGUSR1,相当于'apachectl graceful',这也是一个重启,但做得更优雅,是Aruman的答案提供的. (4认同)

小智 106

另一种方式是:

sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)


Aru*_*man 25

apachectl -k graceful
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问此链接:http: //www.electrictoolbox.com/article/apache/restart-apache/

  • 这将重新启动Apache httpd守护程序,该问题特别要求避免. (16认同)
  • @ cs01你在哪里读到httpd守护进程会重启?我在答案中提供的链接上读到的所有内容都说"apachectl graceful":通过向它发送SIGUSR1来优雅地重新启动Apache守护程序.如果守护程序未运行,则启动它.这与正常重启不同,因为当前打开的连接不会中止 (6认同)
  • 您发布的文档的第一句话就是这样,不是吗? (3认同)
  • @ cs01您需要了解为什么他们担心重启.这没有指定,但我的猜测是他们不希望连接中止,而不是重启.在大多数情况下,优雅的重启会做到这一点.如果有长期存在的连接,这可能是一个问题.您还需要一个良好的重启定义,因为所有正常重启都会重新初始化父进程,即pid不会改变,正常重启会撕掉整个进程树,并生成一个新进程树.因此Tyler Collier的回答是完全合法的. (3认同)

car*_*kod 12

如果您使用的是 Ubuntu 服务器,则可以使用 systemctl

systemctl reload apache2
Run Code Online (Sandbox Code Playgroud)


jef*_*ill 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