我正在开发一个简单的Perl应用程序,它可以复制另一个Perl应用程序并构建所有必需的Apache配置文件。
我似乎无法弄清楚的是如何动态重新加载apache配置。我知道我可以在那里进行系统调用并重新加载apache,但这意味着我必须获得root访问权限,这有点可怕。
有没有办法让apache从CGI容器中重新加载配置文件?
-------------------------其他信息-------------------- ----------
我做了一些更多的研究,问题是Apache必须以提升的权限运行才能绑定到端口80.因此,一种解决方案是将Apache设置为在另一个端口上运行,并通过iptables将该端口转发到80。 (这可能是最后的手段,但却是一个非常混乱的解决方案)。
这就是我得到的,Apache应该能够维护其当前的端口绑定并重新检查其配置文件,我所做的只是添加另一个脚本别名。
有没有办法在重新加载时添加新的脚本别名?
答案 0 :(得分:3)
您还可以选择重新加载配置:
/etc/init.d/httpd reload
或
apachectl -k graceful
但不幸的是,那些人也需要root
。这与正常重启不同,当前打开的连接不会中止。副作用是旧的日志文件不会立即关闭。这意味着如果在日志轮换脚本中使用,可能需要大量延迟才能确保在处理旧日志文件之前将其关闭。
此外,如果使用daemontools运行Apache,您可以通过以下方式执行此操作:
svc -h /service/apache
答案 1 :(得分:0)
很抱歉提出问题,然后不给其他人一个机会回答,但我想出了一个解决方案,我希望它可以帮助其他人。
我必须做的是单独保留配置,不能以我所需的方式重新加载root权限或某些奇特的端口转发(这会使这个应用程序的可移植性低于我想要的)。
因此,Apache似乎唯一可以动态加载的是文件系统。
我所做的是使用mod_rewrite重定向脚本请求,只需将它们放在/ var / www / appname / copyname / cgi-bin /
中