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

Apache2 如何在不重新启动apache的情况下重新加载站点的apache配置?,apache2,Apache2,我已经在sites enabled目录中为我的一个网站编辑了变量AllowOverride。如何在不重新启动apache的情况下重新加载新配置?可能吗?应该可以使用命令 sudo /etc/init.d/apache2 reload 我希望这会有帮助。 apachectl -k graceful 有关详细信息,请查看此链接: 另一种方法是: sudo service apache2 reload 针对Apache 2.4、非systemd(如CentOS 6.x、Amazon Linux

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

应该可以使用命令

sudo /etc/init.d/apache2 reload
我希望这会有帮助。

apachectl -k graceful
有关详细信息,请查看此链接: 另一种方法是:

sudo service apache2 reload

针对Apache 2.4、非systemd(如CentOS 6.x、Amazon Linux AMI)和systemd(如CentOS 7.x)进行了更新:

有两种方法可以让apache进程重新加载配置,具体取决于您希望对其当前线程执行的操作,或者建议在空闲时退出,或者直接杀死它们

请注意,Apache建议使用
apachectl-k
作为命令,对于systemd,该命令被
httpd-k

apachectl-k优雅
httpd-k优雅

Apache将建议其线程在空闲时退出,然后Apache重新加载配置(它不会自行退出),这意味着统计信息不会重置

apachectl-k重启
httpd-k重启

这类似于stop,因为进程杀死了它的线程,但随后进程重新加载配置文件,而不是杀死自己


来源:

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

systemctl重新加载apache2

此处延迟回答,但如果您在
/etc/init.d/apache2
中搜索“重新加载”,您将发现如下内容:

do_reload(){
如果apache_conftest;那么
如果!pidofproc-p$PIDFILE“$DAEMON”>/dev/null 2>&1;那么
APACHE2_INIT_MESSAGE=“APACHE2未运行”
返回2
fi
$APACHE2CTL>/dev/null 2>&1
返回美元?
其他的
APACHE2_INIT_MESSAGE=“APACHE2$DIR_后缀配置测试失败。未执行任何操作。”
返回2
fi
}
基本上,建议使用init.d、systemctl等的答案调用的是一个薄包装器,它说:

  • 检查apache配置
  • 如果效果良好,请运行
    apachectl-mantegie
    (吞咽输出,并转发退出代码)
这表明@Aruman的回答也是正确的,前提是您确信配置中没有错误,或者已经手动运行了
apachctl configtest


还为优雅的重新启动提供了相同的命令(
apachectl-k优雅的
),并在其行为上添加了更多颜色。

apache2重新加载看起来所有答案都不正确。这将重新启动Apache httpd守护进程,这是特别要求避免的问题。@cs01您在哪里读到httpd守护进程将重新启动?我在回答中提供的链接上读到的所有内容都是这样的:
apachectl-grateful:通过发送一个SIGUSR1来优雅地重新启动Apache守护进程。如果守护进程未运行,则会启动它。这与正常重启不同,因为当前打开的连接不会中止。
您发布的文档的第一句话就是这样说的,不是吗?@cs01您需要理解他们为什么担心重启。这没有指定,但我猜他们不希望连接中止,而不是重启本身。在大多数情况下,优雅的重启可以很好地实现这一点。如果有长期存在的联系,这可能是一个问题。您还需要一个良好的重新启动定义,因为所有优雅的重新启动都是重新初始化父进程,即pid不变,正常的重新启动会撕裂整个进程树,并生成一个新的进程树。因此Tyler Collier的回答是完全合法的。@cs01这不会重新启动服务器。请参阅,其中说明此答案中的命令是如何执行优雅的重新启动。在我新增加的答案中也有更多的细节。我很确定这是不正确的。查看Ubuntu服务器的init.d脚本,reload指的是优雅的重启。这意味着重新加载实际上是一次重新启动,但很优雅。我的观点是,在不中断服务的情况下不能重新加载apache。Aruman的答案是正确的。大多数apacheinit脚本发送SIGHUP,这相当于“apachectl restart”,OP特别要求避免这种情况。其他ApacheInit脚本发送SIGUSR1,这相当于“apachectl-gratence”,这也是一个重新启动,但做得更优雅,这是Aruman的答案所提供的。@SteffenNielsen我认为你是对的。。。有些人可以使用负载平衡器,禁用要重新启动的负载平衡器,重新启动,处理db版本控制,然后对另一个apache服务器/容器执行同样的操作。K8s解决了其中一些问题。好吧,下面是发生的情况,主要的apache2流程没有改变,但是孩子或工人(我不知道正确的术语)都重新启动,事实上,这些PID确实发生了变化。我认为在这种情况下,优雅只是意味着这些儿童工作者在被杀死和重生之前完成了他们的请求。apache 2.4.39(win)不支持
httpd-k优雅
httpd-k重新启动
httpd/?
=>
-k重新启动:告诉运行中的Apache在ubuntu 18上进行优雅的重新启动
(至少),这是
/usr/sbin/apachectl优雅