gpt4 book ai didi

apache - 在 Lion Server 上正常重启 Apache

转载 作者:行者123 更新时间:2023-12-02 08:05:34 26 4
gpt4 key购买 nike

我最近将 Mac 操作系统从 Lion 升级到 Lion Server,这改变了 Apache 启动时读取 httpd.conf 设置的方式。特别是,诸如 WEBSHARING_ON 和 MACOSXSERVER 之类的环境变量是由 Server.app 进程设置的,以便在 Apache 启动时读取额外的模块和文件。

现在,要重新启动 Apache 服务器并加载所有正确的设置和模块,我必须使用以下命令:-

sudo serveradmin stop web && sudo serveradmin start web

以前,我会运行:-

sudo apachectl -S
sudo apachectl graceful

到目前为止我更喜欢后一种方法。一方面,命令返回得更快,而且我还想象 apache/httpd 服务器进程不会完全终止,只是重新加载设置。

那么,有没有办法在 Lion Server 中优雅地重新启动 Apache?

最佳答案

简单的回答是否定的。
“apachectl”程序实际上只是一个 shell 脚本,因此(意识到这一点之后)很容易看出它在做什么,以及为什么它没有按照我的预期进行。

在 Mac 上重新启动 Apache(正常或以其他方式)时,相关的 launchctl 作业只是卸载并重新加载,我想这与 official Apache description 不一样。优雅重启:

The USR1 or graceful signal causes the parent process to advise the children to exit after their current request (or to exit immediately if they're not serving anything)

apachectl -S 不显示配置的虚拟服务器的原因是因为该命令不是由 launchctl 运行的,因此/System/Library/LaunchDaemons/org.apache 中设置的环境变量.httpd.plist 未加载。

因此,apachectl Gracefulapachectl restart 和其他命令确实加载了正确的变量,因此可以正确读取配置文件,但并非所有命令默认都会这样做。

为了克服这个问题,我手动编辑了/usr/sbin/apachectl,如下所示。我所做的只是在适当的地方添加“-D MACOSXSERVER -D WEBSERVICE_ON”。

case $ARGV in
start)
run_launchctl load -w $LAUNCHD_JOB
ERROR=$?
;;
stop|graceful-stop)
run_launchctl unload -w $LAUNCHD_JOB
ERROR=$?
;;
restart|graceful)
run_launchctl unload -w $LAUNCHD_JOB 2> /dev/null
run_launchctl load -w $LAUNCHD_JOB
ERROR=$?
;;
startssl|sslstart|start-SSL)
echo The startssl option is no longer supported.
echo Please edit httpd.conf to include the SSL configuration settings
echo and then use "apachectl start".
ERROR=2
;;
configtest)
$HTTPD -t -D MACOSXSERVER -D WEBSERVICE_ON
ERROR=$?
;;
status|fullstatus)
echo Go to $STATUSURL in the web browser of your choice.
echo Note that mod_status must be enabled for this to work.
;;
*)
$HTTPD $ARGV -D MACOSXSERVER -D WEBSERVICE_ON
ERROR=$?
esac

关于apache - 在 Lion Server 上正常重启 Apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com