tomcat下使用awstats 实现tomcat的cgi功能

1。环境
Linux RedHat AS 4
Perl 5.8 (必须5.2或更高,awstats是用perl写的)
Tomcat 5
awstats
2。下载
tomcat http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi
awstats http://awstats.sourceforge.net/
3。安装
解压
tar xzvf tomcatXX.tar.gz
tar xzvf awstatsXX.tar.gz
解压 tomcat 安装包到 /opt/tomcat
解压 awstats 安装包到 /opt/awstats
启动CGI
把servlets-cgi.renametojar (在CATALINA_HOME/server/lib/目录下)改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。
修改tomcat的配置文件%TOMCAT_HOME%/conf/web.xml,让tomcat可以支持cgi脚本
取消这段servlet的配置文件的注释
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>6</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
取消这段servlet mapping的配置文件的注释
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
tip:如果找不到这两段配置文件的话可以用vi的查找命令 :/cgi 然后按n,直到找到为止。
配置tomcat日志
修改tomcat的%TOMCAT_HOME%/conf/server.xml配置文件,让tomcat输出awstats可以支持的log日志。
修改
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
为:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".log"
pattern="combined" fileDateFormat="yyyy-MM-dd" resolveHosts="false"/>
tip:tomcat默认的配置文件这段配置信息被注释,需要取消注释。
部署awstats
拷贝并改名 awstats/wwwroor/cgi-bin 目录到 你的 /WEB-INF/cgi 目录
把 /WEB-INF/cgi/awstats.model.conf 改名为 awstats.localhost.conf
编辑awstats.localhost.conf 文件,修改以下几个配置项。
LogFile="/opt/tomcat/logs/localhost_access_log.%yyyy-%mm-%dd.log"
LogType=W
LogFormat=1
SiteDomain="localhost"
DirData="."
DirIcons="icon"
拷贝awstats/wwwroor/icon 到 你WEB的 /icon
分析日志
运行一下awstats
cd /opt/tomcat/webapps/localhost/WEB-INF/cgi/
./awstats.pl -config=localhost -update
启动tomcat
/opt/tomcat/bin/startup.sh
查看结果
http://localhost/cgi-bin/awstats.pl?config=localhost
自动更新
crontab -e
#Update AWStats
1 6 * * * (cd /opt/tomcat/webapps/localhost/WEB-INF/cgi/;./awstats.pl -update -config=localhost)
4。高级
多站点的配置文件
AWStats的配置文件可以用包含的方式配置,把通用的配置放在一个文档,然后用 Include 将通用配置包含在各个具体配置文件的头部,
而且具体的配置信息会覆盖通用配置中的相应属性。例如,具体的配置文件内容可以只有下面的三行:
Include="common.conf"
LogFile="/path/to/bbs/access_log"
SiteName="bbs.chedong.com"
添加权限控制
修改 awstats 所在站点的 web.xml 在 servlet-mapping 标签下添加下面的配置信息
<!-- Define reference to the user database for looking up roles -->
<resource-env-ref>
<description>
Awstats status
</description>
<resource-env-ref-name>users</resource-env-ref-name>
<resource-env-ref-type>
org.apache.catalina.UserDatabase
</resource-env-ref-type>
</resource-env-ref>

<!-- Define a Security Constraint on this Application -->
<security-constraint>
<web-resource-collection>
<web-resource-name>awstats statics</web-resource-name>
<url-pattern>/cgi-bin/*</url-pattern>

</web-resource-collection>
<auth-constraint>
<!-- NOTE: This role is not present in the default users file -->
<role-name>AwstatsAdmin</role-name>
</auth-constraint>
</security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Awstats status</realm-name>
</login-config>

<!-- Security roles referenced by this web application -->
<security-role>
<description>
leon
</description>
<role-name>AwstatsAdmin</role-name>
</security-role>
然后在 %TOMCAT%/conf/tomcat-user.xml 添加这些
<tomcat-users>
<role rolename="AwstatsAdmin"/>
<user username="anysoon" password="!QAZXSW@" roles="AwstatsAdmin"/>
</tomcat-users>

你可能感兴趣的:(tomcat,Web,servlet,cgi,perl)