一树的随想、生活与资料存档。
win2003下无法运行cronolog原因探究
cronolog官网:http://cronolog.org/
cronolog的安装很简单,把cronolog.exe扔进apache/bin目录就行了,在设置虚拟主机日志的时候,加入相应的格式即可。
问题是,完全正确的设置以后,Apache服务就不能重新启动了,在windows系统日志和Apache日志里都留下了错误信息,windows系统日志的错误信息看了没用,让人摸不到头脑,Apache日志里写的是Access is denied. : Couldn’t start ErrorLog process
Unable to open logs
初步分析应该是权限不够,什么权限?不外乎就是读和执行,无论是Apache安装目录还是日志存放目录,Apache进程的运行用户都有读写和运行权限,甚至所有磁盘为Apache进程加上读写运行权限,都行不通。显然,排除了NTFS权限导致的权限不够的原因。后来使用Apache自带的rotatelogs也行不通,而且网上千篇一律的说rotatelogs有漏洞,时间久了会产生大量同名的进程,累积起来就导致日志记录失败。
最后在cronolog的网站上仿佛z找到了答案:http://cronolog.org/security.html
在类Unix系统上运行cronolog,通常需要root权限。在查阅一些英文论坛的时候,提问者说在WinXP下运行Apache+cronolog没有问题,完全移植到win2003上就行不通了,win2003特殊在什么地方呢?
在Apache官方文档上是这样写的:http://httpd.apache.org/docs/2.2/platform/windows.html
windows平台上建议新建一个用户,赋予Users权限,让这个用户运行httpd服务。在winXP上,不会考虑权限等问题,因为几乎所有用户安装的应用程序都是administratiors权限。
受此启发,win2003上运行httpd服务的用户是apache,立即为这个用户赋予administratiors组权限,Apache立刻启动成功!在进程中,多了几个cmd.exe和cronolog.exe进程,所属用户正是apache,每份需要切割的日志会产生2个cmd和2个cronolog进程,切割四份日志就产生了16个进程,每个占用1M左右。
问题解决,但是Apache是不建议以administratiors权限运行的,会带来安全风险,linux上也大多建议以nobody运行Apache。windows上运行Apache还是有令人不爽的地方,凑合着用了。
| 打印文章 | 这篇文章由一树于2009-12-19 21:39发表在技术文档。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |