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

问题描述 投票:0回答:6

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

apache2
6个回答
239
投票

使用命令应该可以

sudo /etc/init.d/apache2 reload

154
投票

另一种方法是:

sudo service apache2 reload

49
投票

apachectl -k graceful

如果 Apache 尚未运行,它将启动。如果它已经在运行,那么它将重新加载新的更改,但不会中止活动连接,这意味着任何正在下载某些内容的人都可以继续下载它。

查看此链接了解更多信息: http://www.electrictoolbox.com/article/apache/restart-apache/


12
投票

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

systemctl reload apache2

10
投票

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

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

请注意,Apache 建议使用

apachectl -k
作为命令,对于 systemd,该命令替换为
httpd -k

apachectl -k graceful
httpd -k graceful

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

apachectl -k restart
httpd -k restart

这与 stop 类似,进程会终止其线程,但随后进程会重新加载配置文件,而不是终止自身。

来源:https://httpd.apache.org/docs/2.4/stopping.html


3
投票

这里的答案很晚,但是如果您搜索

/etc/init.d/apache2
“重新加载”,您会发现类似这样的内容:

do_reload() { if apache_conftest; then if ! pidofproc -p $PIDFILE "$DAEMON" > /dev/null 2>&1 ; then APACHE2_INIT_MESSAGE="Apache2 is not running" return 2 fi $APACHE2CTL graceful > /dev/null 2>&1 return $? else APACHE2_INIT_MESSAGE="The apache2$DIR_SUFFIX configtest failed. Not doing anything." return 2 fi }
基本上,建议使用 init.d、systemctl 等的答案所调用的是一个薄包装器,上面写着:

    检查 apache 配置
  • 如果没问题,运行
  • apachectl graceful
    (吞掉输出,并转发退出代码)
这表明@Aruman的答案也是正确的,前提是您确信您的配置没有错误或已经手动运行

apachctl configtest

apache 文档还提供了相同的命令来实现正常重启(apachectl -k graceful

),并对其行为进行了更多说明。

© www.soinside.com 2019 - 2024. All rights reserved.