Posts Tagged ‘apache’
用rotatelogs实现日志轮循 Apache 提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力。 这样就大大加强了对日志进行处理的能力。这个通过管道得到的程序可以是任何程序,如日志分析、压缩日志等。 要实现将日志写到管道的操作,只需要将配置中日志文件部分的内容替换为“|程序名”即可,例如: # compressed logs $ CustomLog “|/usr/bin/gzip -c >> /var/log/access_log.gz” common 这样就可以使用Apache自带的轮循工具rotatelogs来对日志文件进行轮循。rotatelogs基本是按时间或大小来控制日志的。 $ CustomLog “|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400″ common 上面的示例中,Apache访问日志被发送给程序rotatelogs;rotatelogs将日志写入 /www/logs/secfocus/access_log, 并每隔86400秒(1天)对日志进行一次轮循。轮循以后的文件名为 /www/logs/secfocus/access_log.nnn, 这里nnn是开始记录日志的时间。因此,为了将日志按天对齐需要在凌晨00:00 启动服务, 使得每天轮循得到的日志刚好是完整一天的日志,以提供给访问统计分析程序进行处理。 如果是00:00开始生成新的日志,那么轮循得到的日志就是 access_log.0000。 用cronolog实现日志轮循 www.cronolog.org Cronolog是一个小巧高效的日志文件处理工具,可以实现自动的按规则生成周期性的日志文件 首先需要下载和安装cronolog,可以到http://www.cronolog.org下载最新版本的cronolog。 下载完毕以后,解压安装即可。方法如下所示: tar xvfz cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure make make check make install 这样就完成了cronolog的配置和安装,默认情况下cronolog是安装在/usr/local/sbin下。 修改Apache日志配置命令如下所示: $ CustomLog “|/usr/local/sbin/cronolog /www/logs/secfocus/%w/access_log” combined 这里%w表示按照日期在不同的目录下保存日志,这种方式会保存一周的日志。 [...]
LogFormat和CustomLog指 令的格式化参数是一个字符串。这个字符串会在每次请求发生的时候,被记录到日志中去。它可以包含将被原样写入日志的文本字符串以及C风格的控制字 符”\n”和”\t”以实现换行与制表。文本中的引号和反斜杠应通过”\”来转义。 请求本身的情况将通过在格式字符串中放置各种”%“转义符的方法来记录,它们在写入日志文件时,根据下表的定义 进行转换: 格式字符串 描述 %% 百分号(Apache2.0.44或更高的版本) %a 远端IP地址 %A 本机IP地址 %B 除HTTP头以外传送的字节数 %b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’-‘ 而不是0。 %{Foobar}C 在请求中传送给服务 端的cookieFoobar的内容。 %D 服务器处理本请求所用时间,以微为单位。 %{FOOBAR}e 环境变量FOOBAR的 值 %f 文件名 %h 远端主机 %H 请求使用的协议 %{Foobar}i 发送到服务器的请求 头Foobar:的内容。 %l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设 为”On“,否则将得到一个”-”。 %m 请求的方法 %{Foobar}n 来自另一个模块的注解Foobar的 内容。 %{Foobar}o 应答头Foobar:的 内容。 %p 服务器服务于该请求的标准端口。 %P 为本请求提供服务的子进程的PID。 %{format}P 服务于该请求的PID或TID(线程ID),format的 取值范围为:pid和tid(2.0.46及以后版本)以及hextid(需 要APR1.2.0及以上版本) %q [...]
ubuntu下使用新力德安装了apache后,一般文件路径是在/etc/apache2里面,该目录下有几个目录和文件,apache2.conf conf.d envvars httpd.conf magic mods-available mods-enabled ports.conf sites-available sites-enabled。 apache2.conf就是apache的配置文件,这个跟平时我们自己安装的apache有点不太一样,不过内容是差不多,sites-enabled里面的000-default文件对应的是我们平时自己安装的apache里面的conf/extra/http-vhost.conf,用来设置虚拟主机的,mods-avialabel目录存放了你预先安装的模块但不是所有模块都开启使用的,如果要开启某个模块,其实很简单,只要作一个软连接到mods-enables下面就可以,比如我要开启rewrite功能,我在mods-enables里面执行ln -s ../mods-available/rewrite.load rewrite.load,然后重启下apache服务,就ok了,顺便说一下,重启apache服务有多种方法,不过最简单的就是直接从/etc/init.d/apache2这里直接restart就ok了。 ubuntu下的apache的配置感觉确实比自己编译安装的目录形式差别有点大,不过,只要理解了,其实也很容易掌握的。
最近把家里的台式机作成了服务器,,用的是centos,在下面安装了apache作为web server,当然了,后期肯定会装nginx的。记得之前在虚拟机上就尝试安装过mod_python,可惜一直没有成功,今天在上面装一样的无法成功,下载的是mod_python-3.3.1.tgz,完全按照说明安装,却在第二步make的时候就过不去了,报了一大堆的错误,导致我想看最开始的错误都无法找到。后来google了好半天,还是没能找到合适的解决方案,最后只好使用最简单的安装方式了,使用yum。 一句yum -y install mod_python搞定一切, 然后vi http.conf在里面加上 LoadModule python_module /usr/lib64/httpd/modules/mod_python.so <Directory /usr/local/apache/htdocs/py> AddHandler mod_python .py PythonHandler mptest PythonDebug On </Directory> 重启apache oh yeah!!搞定了python模块的加载安装。剩下的具体的事情就慢慢再研究了。
晚上编译mod_python.so模块老报错: connobject.c:142: 错误: 在非结构或联合中请求成员’next’ apxs:Error: Command failed with rc=65536 后来终于找到了解决方案,将src里面的connobject.c文件的第112行: !(b == APR_BRIGADE_SENTINEL(b) || 修改为: !(b == APR_BRIGADE_SENTINEL(bb) || 于是编译便通过了,没有仔细去看源码,不过先过了再说,呵呵。 接着打开apache下面的httpd.conf文件,在里面增加 LoadModule python_module modules/mod_python.so 同时加上 <Directory /some/directory/htdocs/trac> AddHandler mod_python .py PythonHandler mptest PythonDebug On </Directory> /some/directory/htdocs/trac为你的python程序目录

