<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lizongbo at 618119.com &#187; Apache</title>
	<atom:link href="http://618119.com/tag/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://618119.com</link>
	<description>工作,生活,java,apache,tomcat,Resin,mina,Hessian,Openfire,XMPP,RPC,Ubuntu</description>
	<lastBuildDate>Sat, 21 Aug 2010 08:34:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows下安装配置Apache cassandra 0.5.1</title>
		<link>http://618119.com/archives/2010/04/11/163.html</link>
		<comments>http://618119.com/archives/2010/04/11/163.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 06:34:32 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[cassandra]]></category>

		<guid isPermaLink="false">http://618119.com/?p=163</guid>
		<description><![CDATA[cassandra是facebook开源的，代码托管在apache,主页是：http://cassandra.apache.org/
目前版本0.5.1，首先下载最新版：
http://apache.freelamp.com/cassandra/0.5.1/apache-cassandra-0.5.1-bin.tar.gz
来源：
http://cassandra.apache.org/download/
解压到D:\Java\，生成到目录为：D:\Java\apache-cassandra-0.5.1
运行D:\Java\apache-cassandra-0.5.1\bin\cassandra.bat      ，提示错误信息如下：
D:\Java\apache-cassandra-0.5.1\bin&#62;cassandra.bat
找不到路径 &#8211; D:\Java\apache-cassandra-0.5.1\bin\lib
系统找不到指定的驱动器。
Starting Cassandra Server
Listening for transport dt_socket at address: 8888
Exception in thread &#8220;main&#8221; java.lang.NoClassDefFoundError: org/apache/cassandra/
service/CassandraDaemon
Caused by: java.lang.ClassNotFoundException: org.apache.cassandra.service.Cassan
draDaemon
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Could not find the main class: org.apache.cassandra.service.CassandraDaemon.  Pr
ogram will exit.
打开cassandra.bat一看，发现取的CASSANDRA_HOME是当前目录，估计cassandra的开发者不用windows操作系统开发，或者是已经配置过环境变量CASSANDRA_HOME。
于是对照Apache Tomcat的bat文件，在cassandra.bat的 SETLOCAL后面加上一行 “cd ..”。然后重新运行bat。程序启动成功。
(http://ahuaxuan.javaeye.com/blog/603106 这篇文章说&#8221;在环境变量配置中加入CD=xxxx/cassandra根目录&#8221;是不合理的，CD本身就是调用cd命令输出当前路径，
即使要加全局环境变量，也是直接配置类似CASSANDRA_HOME=D:\Java\apache-cassandra-incubating- 0.5.1即可)
cassandra-cli.bat在SETLOCAL后面加上两行：“cd ..
if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD%”
修改后，也能成功启动。
cassandra.bat 此时会发现“我的电脑”里多了一个磁盘目录P，从cassandra.bat中可以看到是运行了以下命令：
subst P: &#8220;%CASSANDRA_HOME%\lib&#8221;
P:
set CLASSPATH=P:\
这个命令将 [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2010/04/11/163.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Tomcat 6.0.14中安装配置awstats</title>
		<link>http://618119.com/archives/2007/12/07/41.html</link>
		<comments>http://618119.com/archives/2007/12/07/41.html#comments</comments>
		<pubDate>Fri, 07 Dec 2007 10:30:54 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[618119.com]]></category>
		<category><![CDATA[Apache Tomcat]]></category>
		<category><![CDATA[awstats]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2007/12/07/41.html</guid>
		<description><![CDATA[在Tomcat 6.0.x中配置awstats
需要下载的文件有:
perl : http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.msi
来源： http://www.activestate.com/store/activeperl/download/
http://update.cz88.net/soft/qqwry.rar
http://awstats.sourceforge.net/files/awstats-6.8.tar.gz
geoip插件相关:
http://www.maxmind.com/download/geoip/api/pureperl/Geo-IP-PurePerl-1.18.tar.gz
http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
http://www.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
安装过程可参考
参考: http://blog.zhangjianfeng.com/article/317
PurePerl.pm的安装可参考:
http://topic.csdn.net/u/20070323/11/903dd121-10d8-42d2-b4eb-a6cb60a22e8a.html
其它配置可参考:
http://www.chedong.com/blog/archives/000410.html
http://blogger.org.cn/blog/more.asp?name=chenjiejacky&#38;id=20464
安装perl之后,确认环境变量里PATH有perl的bin目录
Path=E:\oracle\product\10.2.0\client_1\bin;D:\Perl\bin;
D:\Java\jdk1.6.0_03\bin;E:\oracle\product\10.2.0\db_1\bin;
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\Program Files\Microsoft SQL Server\80\Tools\BINN
1.为了控制查看awstats的权限,我在
E:\apache-tomcat-6.0.14\conf\tomcat-users.xml的内容配置为:
&#60;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242;?&#62;
&#60;tomcat-users&#62;
&#60;role rolename=&#8221;awstats&#8221;/&#62;
&#60;user username=&#8221;awstats&#8221; password=&#8221;awstats&#8221; roles=&#8221;awstats&#8221;/&#62;
&#60;/tomcat-users&#62;
2.由于权限限制
E:\apache-tomcat-6.0.14\webapps\awstats\META-INF\context.xml,内容为:
&#60;!&#8211; tomcat 6.0 need privileged is true for CGIServlet &#8211;&#62;
&#60;Context  reloadable=&#8221;true&#8221; privileged=&#8221;true&#8221; &#62;
&#60;/Context&#62;
否则启动的时候会出下面的错误信息:
[ERROR]main-org.apache.catalina.startup.HostConfig-Error deploying web application directory awstats
java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.CGIServlet is privileged and cannot be loaded by this web application
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1134)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2007/12/07/41.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>给wordpress加上记录Combined格式日志的功能</title>
		<link>http://618119.com/archives/2007/12/06/40.html</link>
		<comments>http://618119.com/archives/2007/12/06/40.html#comments</comments>
		<pubDate>Thu, 06 Dec 2007 10:23:55 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[618119.com]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2007/12/06/40.html</guid>
		<description><![CDATA[由于我是合租的web主机,因此开通的ftp里没权限看到站点的access.log,
由于wordpress是通过.htaccess中配置的urlrewrite将http请求重定向到index.php 这个入口,
因此只要在index.php里加上记录日志的操作,基本上大部分请求都可以记录下来,
查了下资料,没看见现成的代码,于是对照着 Combined各式的日志,
自己写了一段代码来实现这个功能.
代码如下:
[code]
&#60;?php
/* Short and sweet */
define('WP_USE_THEMES', true);
/**
为我的wordpress增加记录web日志的功能
author: lizongbo
site: http://618119.com
*/
$webaccesslog="webaccess".gmdate("Y-m-d").".log";
$accesslog=$_SERVER['REMOTE_ADDR']." - - ".gmdate("[d/M/Y:H:i:s +0800] ");
$accesslog=$accesslog."\"".$_SERVER["REQUEST_METHOD"]." ".$_SERVER["REQUEST_URI"]." ";
$accesslog=$accesslog.$_SERVER["SERVER_PROTOCOL"]."\"";
$accesslog=$accesslog." 200 2007 \"";
if(!empty($_SERVER["HTTP_REFERER"])){
$accesslog=$accesslog.$_SERVER["HTTP_REFERER"];
}else{
$accesslog=$accesslog."-";
}
$accesslog=$accesslog."\" \"".$_SERVER["HTTP_USER_AGENT"]."\""."\r\n";
$webaccess=fopen($webaccesslog,"a");
fwrite($webaccess,$accesslog);
/*下面的写法 io 操作太多,被废弃了
fwrite($webaccess,$_SERVER['REMOTE_ADDR']);
fwrite($webaccess," - - ");
fwrite($webaccess,gmdate ("[d/M/Y:H:i:s +0800] "));//不知道怎么加时区,于是写死了
fwrite($webaccess,"\"");
fwrite($webaccess,$_SERVER["REQUEST_METHOD"]);
fwrite($webaccess," ");
fwrite($webaccess,$_SERVER["REQUEST_URI"]);
fwrite($webaccess," ");
fwrite($webaccess,$_SERVER["SERVER_PROTOCOL"]);
fwrite($webaccess,"\"");
fwrite($webaccess," 200 2007 \"");//强行写死了状态码和内容长度
if(!empty($_SERVER["HTTP_REFERER"])){
fwrite($webaccess,$_SERVER["HTTP_REFERER"]);
}else{
fwrite($webaccess,"-");
}
fwrite($webaccess,"\" \"");
fwrite($webaccess,$_SERVER["HTTP_USER_AGENT"]);
fwrite($webaccess,"\"");
fwrite($webaccess,"\r\n");
*/
fclose($webaccess);
require('./wp-blog-header.php');
?&#62;
[/code]
这样,记录下来的日志就可以通过ftp下载到本地,然后再用 awstats 进行分析了.

	Tags: 618119.com, Apache, log, php, Wordpress

	Related posts
	
	迁移blog到homezz的新服务器 (0)
	调整resin的resin.conf优化access-log输出日志 (0)
	用rawurldecode和iconv解决php的编码问题 (0)
	用JDBC连接Oracle 10g RAC遇到的问题 (1)
	服务器从jdk1.6.0升级到1.6.0_12的过程记录 (0)


]]></description>
		<wfw:commentRss>http://618119.com/archives/2007/12/06/40.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对tomcat cluster集群配置中session复制用法的一个误解</title>
		<link>http://618119.com/archives/2007/11/13/26.html</link>
		<comments>http://618119.com/archives/2007/11/13/26.html#comments</comments>
		<pubDate>Tue, 13 Nov 2007 00:34:48 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[distributable]]></category>
		<category><![CDATA[JGroups]]></category>
		<category><![CDATA[jvmRoute]]></category>
		<category><![CDATA[loadbalancer]]></category>
		<category><![CDATA[mod_jk]]></category>
		<category><![CDATA[session复制]]></category>
		<category><![CDATA[Tribes]]></category>
		<category><![CDATA[负载均衡]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2007/11/13/26.html</guid>
		<description><![CDATA[一直以来，我误解认为启动了n个tomcat，则Session需要同步复制到n个Tomcat中存在，因此在启动了6个以上的Tomcat，性能会大大下降。
而实际情况下，采取Apache 加Tomcat进行负载均衡集群的时候，是可以不用将Session复制到所有的节点里，
比如有六个Tomcat实例
Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6
是可以配置成 三组互相复制Session的群组，
比如Tomcat1和Tomcat2互相同步Session,
比如Tomcat3和Tomcat4互相同步Session,
比如Tomcat5和Tomcat6互相同步Session.
再在Apache的mod_jk模块里，对每个worker配置上redirect和activation属性。
将Tomcat1,Tomcat3,Tomcat5做为对外正常提供服务器的Tomcat,
Tomcat2,Tomcat4,Tomcat6作为分别对应的灾难恢复的备份Tomcat.
即比如Tomcat1当机之后，Apache会自动将发给Tomcat1的请求转发到Tomcat2上，
而Tomcat2因为同步了Tomcat1的Session信息，因此从用户的角度，是感觉不出任何差异的。
单纯的Tomcat测试如下：
Tomcat配置：
Tomcat1. port=&#8221;15080&#8243;, jvmRoute=&#8221;tomcat1&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.5&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat2. port=&#8221;16080&#8243;, jvmRoute=&#8221;tomcat2&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.5&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat3. port=&#8221;17080&#8243;, jvmRoute=&#8221;tomcat3&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.6&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat4. port=&#8221;18080&#8243;, jvmRoute=&#8221;tomcat4&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.6&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat5. port=&#8221;19080&#8243;, jvmRoute=&#8221;tomcat5&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.7&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat6. port=&#8221;20080&#8243;, jvmRoute=&#8221;tomcat6&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.7&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
所有的Tomcat webapp的web.xml加上&#60;distributable /&#62;
(例如D:\Java\Tomcat2\webapps\examples\WEB-INF\web.xml ，)
测试页面为：
第一组:
http://localhost:15080/examples/servlets/servlet/SessionExample
http://localhost:16080/examples/servlets/servlet/SessionExample
第二组:
http://localhost:17080/examples/servlets/servlet/SessionExample
http://localhost:18080/examples/servlets/servlet/SessionExample
第三组:
http://localhost:19080/examples/servlets/servlet/SessionExample
http://localhost:20080/examples/servlets/servlet/SessionExample
在每一组中，打开其中任何一个链接，然后设置属性值，
都可以在访问另外一个链接的时候得到。对应的sessionid的后缀会变成对应Tomcat的jvmRoute.
(以上测试的tomcat均在同一台服务器上)
接下来再配置Apache的mod_jk.
workers.properties的内容节选如下：
(重点是redirect和activation两个属性)
worker.tomcat1.port=15009
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat1.redirect=tomcat2
worker.tomcat2.port=16009
worker.tomcat2.host=10.108.20.126
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.tomcat2.redirect=tomcat1
worker.tomcat2.activation=disabled
详细参考：
http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html
备注：Tomcat6已经没有使用JGroups来实现集群复制，
而是使用Apache Tribes 来实现该效果的。
Apache Tribes的介绍在：
http://tomcat.apache.org/tomcat-6.0-doc/tribes/introduction.html
为了简便配置，因此只使用一份Tomcat,使用不同的cofig来启动，配置好的文件在：
http://618119.com/docs/Tomcat/TomcatCluster.zip
下载解压到Tomcat(例如D:\Java\apache-tomcat-6.0.14)目录里，运行对应的bat文件即可：
start15080.bat
start16080.bat
start17080.bat
start18080.bat
start19080.bat
start20080.bat

	Tags: Apache, Cluster, distributable, JGroups, jvmRoute, loadbalancer, mod_jk, session复制, Tomcat, Tribes, 负载均衡, 集群

	Related posts
	
	配置独立运行的jsp预编译ant脚本 (0)
	给wordpress加上记录Combined格式日志的功能 (0)
	开张了。 (0)
	在Tomcat 6.0.14中安装配置awstats (0)
	在Apache Tomcat上安装Wordpress 2.3 (0)


]]></description>
		<wfw:commentRss>http://618119.com/archives/2007/11/13/26.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache整合Tomcat的vhosts及mod_jk配置</title>
		<link>http://618119.com/archives/2007/10/26/17.html</link>
		<comments>http://618119.com/archives/2007/10/26/17.html#comments</comments>
		<pubDate>Fri, 26 Oct 2007 06:28:16 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[ajp13]]></category>
		<category><![CDATA[mod_jk]]></category>
		<category><![CDATA[vhost]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2007/10/26/17.html</guid>
		<description><![CDATA[httpd-vhosts.conf的配置例子如下：
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn&#8217;t need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# &#60;URL: http://httpd.apache.org/docs/2.2/vhosts/ &#62;
# [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2007/10/26/17.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
