中关村村草 发表于 2012-03-02 17:42

自定义进程在apache中加载方式

自定义进程在apache中加载方式






之前一个apache模块工作了好多年,它需要在apache启动时同时启动一个子进程和该模块通讯,模块拦截请求中一些信息由该进程子进程收集然后做处理。

在http.conf中使用 CustomLog "|subprocesspath -k start -f xxx.conf "来启动这个子进程。




昨天有一兄弟公司在部署该模块,却发现死活不工作。经过反复分析,原来他们在第个虚拟主机中又设置了不同 CustomLog,而我们之前一直用一个统一的

CustomLog,根据apache配置文件两阶段加载的原理,虚拟主机使用了该虚拟节点的CustomLog,所以发向虚拟主机的请求不会触发全局定义的

CustomLog "|subprocesspath -k start -f xxx.conf ",所以日志也不可能被subprocesspath所捕获。

定位了原因后,两种方式解决:

一是直接虚拟主机直接使用全局的CustomLog,在log中增加${Host}来识别来自哪个虚拟主机。这样成本最低。

二是在每个虚拟主机里修改CustomLog为 CustomLog "|subprocesspath -k start -f xxx.conf ",这样做的缺点是每个虚拟主机都会启动一个子进程,这样多个

子进程同时启动对原来的逻辑是否会有影响,要充分评估。

健康木乃伊 发表于 2012-03-02 17:42

谢谢分享

luckfly 发表于 2012-03-03 19:41

感谢分享了。
页: [1]
查看完整版本: 自定义进程在apache中加载方式