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

本文探讨了一个Apache模块在配置文件中通过CustomLog启动子进程进行日志收集的问题,当部署到多虚拟主机环境时遇到日志无法正确捕获的挑战。通过分析配置原理,发现原因是虚拟主机配置了不同的CustomLog导致全局定义的日志配置失效。文章提供了两种解决方案:直接在虚拟主机中使用全局日志配置或为每个虚拟主机单独配置日志路径,以确保日志能够被正确收集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一个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 ",这样做的缺点是每个虚拟主机都会启动一个子进程,这样多个

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值