我已在 sites-enabled 目录中编辑了我的网站之一的变量 AllowOverride。如何在不重新启动 apache 的情况下重新加载新配置?可以吗?
使用命令应该可以
sudo /etc/init.d/apache2 reload
另一种方法是:
sudo service apache2 reload
做
apachectl -k graceful
如果 Apache 尚未运行,它将启动。如果它已经在运行,那么它将重新加载新的更改,但不会中止活动连接,这意味着任何正在下载某些内容的人都可以继续下载它。
查看此链接了解更多信息: http://www.electrictoolbox.com/article/apache/restart-apache/
如果您使用的是Ubuntu服务器,则可以使用systemctl
systemctl reload apache2
针对 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 类似,进程会终止其线程,但随后进程会重新加载配置文件,而不是终止自身。
这里的答案很晚,但是如果您搜索
/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 等的答案所调用的是一个薄包装器,上面写着:
apachectl graceful
(吞掉输出,并转发退出代码)
apachctl configtest
。
apache 文档还提供了相同的命令来实现正常重启(apachectl -k graceful
),并对其行为进行了更多说明。