<?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>Java堂 &#187; Web&amp;Server</title>
	<atom:link href="http://www.javatang.com/archives/category/web-and-server/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javatang.com</link>
	<description>Java Tang</description>
	<lastBuildDate>Thu, 08 Dec 2011 08:29:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Apache+Resin发布程序时一直出现403错误的解决办法</title>
		<link>http://www.javatang.com/archives/2011/09/20/2831546.html</link>
		<comments>http://www.javatang.com/archives/2011/09/20/2831546.html#comments</comments>
		<pubDate>Tue, 20 Sep 2011 15:28:31 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[Web&Server]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=546</guid>
		<description><![CDATA[今天在Linux下面把Apach和Resin整合之后，程序发布的时候总是出现403错误。首先检查了一下Apache和Resin的配置文件，新建一个webapp显示解析成功，这样证明二者整合是正确的；另外还有一个现象，就是同样的程序在Windows下也是使用Apache和Resin进行整合的，但是运行正常，这样就排除了程序自身的问题。 因为页面总是显示403错误，又想到Windows和Linux下面最大的区别就是对文件权限的设置，于是使用 ls -l 命令查看了目录的权限，果然发现目录的权限只是 drwx&#8212;&#8212;，应该设置为 drwxr-xr-x，于是使用 chmod -R 755 directory 其中-R参数用于使设定的权限用于该目录及子目录下所有文件和目录。 另外再复习一下权限的基础知识： “rwx”表示 4(r)+2(w)+1(x)=7 “rw-”表示 {4(r)+2(w)+0(-)=6 参考资料： linux修改文件夹-文件目录权限 Related Posts:Apache+Resin下如何写伪静态和301跳转Resin 3.0.x 经验总结Apache和Resin产生大容量日志的解决办法Windows下安装zip包版本的MySQLApache+Resin泛域名的设置]]></description>
			<content:encoded><![CDATA[<p>今天在Linux下面把<a href="http://www.javatang.com/index.php?s=apache+resin">Apach和Resin整合</a>之后，程序发布的时候总是出现403错误。首先检查了一下Apache和Resin的配置文件，新建一个webapp显示解析成功，这样证明二者整合是正确的；另外还有一个现象，就是同样的程序在Windows下也是使用Apache和Resin进行整合的，但是运行正常，这样就排除了程序自身的问题。</p>
<p>因为页面总是显示403错误，又想到Windows和Linux下面最大的区别就是对文件权限的设置，于是使用 <strong>ls -l</strong> 命令查看了目录的权限，果然发现目录的权限只是 drwx&#8212;&#8212;，应该设置为 drwxr-xr-x，于是使用</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">chmod -R 755 directory</li></ol></div>
<p>其中-R参数用于使设定的权限用于该目录及子目录下所有文件和目录。</p>
<p>另外再复习一下权限的基础知识：</p>
<blockquote><p>
“rwx”表示 4(r)+2(w)+1(x)=7<br />
“rw-”表示 {4(r)+2(w)+0(-)=6
</p></blockquote>
<p>参考资料：<br />
<a href="http://blog.ixm.me/archives/320.html" target="_blank">linux修改文件夹-文件目录权限</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2008/10/18/1942276.html" rel="bookmark" class="crp_title">Apache+Resin下如何写伪静态和301跳转</a></li><li><a href="http://www.javatang.com/archives/2006/08/21/010658.html" rel="bookmark" class="crp_title">Resin 3.0.x 经验总结</a></li><li><a href="http://www.javatang.com/archives/2007/06/20/1513177.html" rel="bookmark" class="crp_title">Apache和Resin产生大容量日志的解决办法</a></li><li><a href="http://www.javatang.com/archives/2007/03/30/1025157.html" rel="bookmark" class="crp_title">Windows下安装zip包版本的MySQL</a></li><li><a href="http://www.javatang.com/archives/2008/03/18/2532264.html" rel="bookmark" class="crp_title">Apache+Resin泛域名的设置</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2011/09/20/2831546.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2.x中设置gzip</title>
		<link>http://www.javatang.com/archives/2010/12/01/2805477.html</link>
		<comments>http://www.javatang.com/archives/2010/12/01/2805477.html#comments</comments>
		<pubDate>Wed, 01 Dec 2010 05:28:05 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[gzip]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=477</guid>
		<description><![CDATA[在Apache2.x中使用mod_deflate进行gzip压缩，配置信息如下： LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so &#160; # gzip 设置 # Only compress specified content type # see also http://www.devside.net/guides/config/compression &#60;IfModule mod_deflate.c&#62; &#160;&#160; &#160;# The value must between 1 (less compression) and 9 (more compression) &#160;&#160; &#160;DeflateCompressionLevel 7 &#160;&#160; &#160;# compress content with type html, text, and css &#160;&#160; &#160;AddOutputFilterByType DEFLATE text/html text/plain text/xml [...]]]></description>
			<content:encoded><![CDATA[<p>在Apache2.x中使用mod_deflate进行gzip压缩，配置信息如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">LoadModule deflate_module modules/mod_deflate.so</li>
<li>LoadModule headers_module modules/mod_headers.so</li>
<li>&nbsp;</li>
<li># gzip 设置</li>
<li># Only compress specified content type</li>
<li># see also http://www.devside.net/guides/config/compression</li>
<li>&lt;IfModule mod_deflate.c&gt;</li>
<li>&nbsp;&nbsp; &nbsp;# The value must between 1 (less compression) and 9 (more compression)</li>
<li>&nbsp;&nbsp; &nbsp;DeflateCompressionLevel 7</li>
<li>&nbsp;&nbsp; &nbsp;# compress content with type html, text, and css</li>
<li>&nbsp;&nbsp; &nbsp;AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json</li>
<li>&nbsp;&nbsp; &nbsp;# place filter 'DEFLATE' on all outgoing content</li>
<li>&nbsp;&nbsp; &nbsp;SetOutputFilter DEFLATE</li>
<li>&nbsp;&nbsp; &nbsp;# Properly handle old browsers that do not support compression</li>
<li>&nbsp;&nbsp; &nbsp;BrowserMatch ^Mozilla/4 gzip-only-text/html</li>
<li>&nbsp;&nbsp; &nbsp;BrowserMatch ^Mozilla/4\.0[678] no-gzip</li>
<li>&nbsp;&nbsp; &nbsp;BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</li>
<li>&lt;/IfModule&gt;</li></ol></div>
<p>参考资料：<br />
<a href="http://jackyrong.javaeye.com/blog/797656" target="_blank">apache 2.2.15中配置mod_deflate</a><br />
<a href="http://www.devside.net/guides/config/compression" target="_blank">httpd.conf &#8212; compression</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/03/10/3018122.html" rel="bookmark" class="crp_title">使Apache实现gzip压缩</a></li><li><a href="http://www.javatang.com/archives/2008/04/20/5034268.html" rel="bookmark" class="crp_title">Javascript的国际化方案</a></li><li><a href="http://www.javatang.com/archives/2007/11/11/5611239.html" rel="bookmark" class="crp_title">两个PHP的Warning及解决方法</a></li><li><a href="http://www.javatang.com/archives/2007/10/06/5104204.html" rel="bookmark" class="crp_title">Javascript怎样设置文本框的readonly属性？</a></li><li><a href="http://www.javatang.com/archives/2010/03/21/1529393.html" rel="bookmark" class="crp_title">ExtJS hack: Add multiple toolbars to a Panel</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/12/01/2805477.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resin中对日志输出的配置</title>
		<link>http://www.javatang.com/archives/2010/11/14/1752494.html</link>
		<comments>http://www.javatang.com/archives/2010/11/14/1752494.html#comments</comments>
		<pubDate>Sun, 14 Nov 2010 06:17:52 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[JavaPlateform]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[resin]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=494</guid>
		<description><![CDATA[Resin中对日志的设置主要有如下参数：log、logger、access-log、stdout-log和stderr-log。前两个放在&#60;resin&#62;标签，也就是主标签下面，其中log主要用于配置JDK logging API，logger用于指定需要log的包及level，跟log4j中的用法相似，只不过resin中level有个特殊的选项就是off，用于关闭日志输出；而后面三个*-log放在&#60;host&#62;或&#60;host-default&#62;下面，access用于HTTP输出，stdout用于标准输出(System.out)，stderr用于错误输出(System.err，对应log4j中的log.error)。 三个*-log中间的属性是相同的，所以我们集中来说明一下： path: 用于设定日志文件的路径，非常有意思的是它支持所谓的El Variables and Functions，也就是resin中的变量，比如${host.name}就是虚拟站点的id名称，所以如果将它放在&#60;host-default&#62;下面的话，将path设置为 logs/${host.name}/access.log的话可以将不同站点的日志存放在不同的目录下面。 archive-format: 这个参数可以设置日志归档的格式，如设置为access-%Y%m%d.log可以在归档的时候自动按日期进行归档命名。另外还有一个特性需要说明的是，resin竟然支持自动压缩log文件，而且设置的方法非常简单，只要后缀名是gz就可以了，如access-%Y%m%d.log.gz，这样归档的时候会自动压缩，而且支持windows和linux系统。 format: 用于设置每条日志输出的格式，这个非常简单，而且通常使用系统内置的格式就可以了。 rollover-size: 用来设置归档日志文件的最小尺寸，单位可以设置成kb、mb等等，默认为1mb。 rollover-period: 用来设置归档日志文件的周期，单位可以是1D（一天）、1W(一周)、1M（一个月）等。 最后给出一个范例供大家参考： &#60;!-- &#160;&#160; - Resin 3.1 configuration file. &#160; --&#62; &#60;resin&#160;xmlns=&#34;http://caucho.com/ns/resin&#34; &#160; &#160; &#160;&#160; xmlns:resin=&#34;http://caucho.com/ns/resin/core&#34;&#62; &#160; &#60;!-- &#160; &#160;&#160; - Logging configuration for the JDK logging API. &#160; &#160; --&#62; &#160; &#60;log&#160;name=&#34;&#34; level=&#34;off&#34; path=&#34;stdout:&#34; &#160; &#160; &#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Resin中对日志的设置主要有如下参数：log、logger、access-log、stdout-log和stderr-log。前两个放在&lt;resin&gt;标签，也就是主标签下面，其中log主要用于配置JDK logging API，logger用于指定需要log的包及level，跟log4j中的用法相似，只不过resin中level有个特殊的选项就是off，用于关闭日志输出；而后面三个*-log放在&lt;host&gt;或&lt;host-default&gt;下面，access用于HTTP输出，stdout用于标准输出(System.out)，stderr用于错误输出(System.err，对应log4j中的log.error)。</p>
<p>三个*-log中间的属性是相同的，所以我们集中来说明一下：</p>
<blockquote>
<li><b>path:</b> 用于设定日志文件的路径，非常有意思的是它支持所谓的<a href="http://caucho.com/resin-3.1/doc/el-var.xtp" target="_blank">El Variables and Functions</a>，也就是resin中的变量，比如${host.name}就是虚拟站点的id名称，所以如果将它放在&lt;host-default&gt;下面的话，将path设置为 logs/${host.name}/access.log的话可以将不同站点的日志存放在不同的目录下面。</li>
<li><b>archive-format:</b> 这个参数可以设置日志归档的格式，如设置为access-%Y%m%d.log可以在归档的时候自动按日期进行归档命名。另外还有一个特性需要说明的是，resin竟然支持自动压缩log文件，而且设置的方法非常简单，只要后缀名是gz就可以了，如access-%Y%m%d.log.gz，这样归档的时候会自动压缩，而且支持windows和linux系统。</li>
<li><b>format:</b> 用于设置每条日志输出的格式，这个非常简单，而且通常使用系统内置的格式就可以了。</li>
<li><b>rollover-size:</b> 用来设置归档日志文件的最小尺寸，单位可以设置成kb、mb等等，默认为1mb。</li>
<li><b>rollover-period:</b> 用来设置归档日志文件的周期，单位可以是1D（一天）、1W(一周)、1M（一个月）等。</li>
</blockquote>
<p>最后给出一个范例供大家参考：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">&lt;!--</span></li>
<li><span style="color: #ffa500;">&nbsp;&nbsp; - Resin 3.1 configuration file.</span></li>
<li><span style="color: #ffa500;">&nbsp; --&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">resin</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">xmlns</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://caucho.com/ns/resin</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #00008b;">xmlns:resin</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://caucho.com/ns/resin/core</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #ffa500;">&lt;!--</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; - Logging configuration for the JDK logging API.</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">log</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">level</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">off</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">stdout:</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #00008b;">timestamp</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">[%H:%M:%S.%s] {%{thread}} </span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #ffa500;">&lt;!--</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; - 'info' for production</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; - 'fine' or 'finer' for development and troubleshooting</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">logger</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">com.caucho</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">level</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">info</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">logger</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">com.caucho.java</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">level</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">config</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">logger</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">com.caucho.loader</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">level</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">config</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">host-default</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">&lt;!--</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; - With another web server, like Apache, this can be commented out</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; - because the web server will log this information.</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">access-log</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">logs/${host.name}/access.log</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">archive-format</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">access-%Y%m%d.log.gz</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">format</span><span style="color: Gray;">='%</span><span style="color: #00008b;">h</span><span style="color: Gray;"> %</span><span style="color: #00008b;">l</span><span style="color: Gray;"> %</span><span style="color: #00008b;">u</span><span style="color: Gray;"> %</span><span style="color: #00008b;">t</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%r</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> %</span><span style="color: #00008b;">s</span><span style="color: Gray;"> %</span><span style="color: #00008b;">b</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%{Referer}i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%{User-Agent}i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">'</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">rollover-size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10mb</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">rollover-period</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1D</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">&lt;!--</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; - stdout log and stderr log</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">stdout-log</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">logs/${host.name}/stdout.log</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">archive-format</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">stdout-%Y%m%d.log.gz</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">timestamp</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">[%Y.%m.%d %H:%M:%S.%s]</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">rollover-size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10mb</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">rollover-period</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1D</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">stderr-log</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">logs/${host.name}/stderr.log</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">archive-format</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">stderr-%Y%m%d.log.gz</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">timestamp</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">[%Y.%m.%d %H:%M:%S.%s]</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">rollover-size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10mb</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">rollover-period</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1D</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">host-default</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">resin</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>最后还有一个事情需要说明一下，如果在windows系统下<a href="http://www.javatang.com/archives/2007/06/20/1513177.html">将resin注册成服务程序</a>之后就会在log目录下产生jvm-defautl.log文件，而且这个文件会一直累加，所以会变的文件非常大而影响resin的性能。原来在<a href="http://www.javatang.com/archives/2007/06/20/1513177.html">Apache和Resin产生大容量日志的解决办法</a>这篇文件中提到的使用httpd -jvm-log NUL的方法在3.1中无法使用，而且查找了大量的文档也没有找到合适的方法，后来索性将log目录中的写入权限去掉了，重启resin也没有任何影响，算是解决了这个问题。</p>
<p>参考资料：</p>
<p>http://caucho.com/resin-3.1/doc/config-log.xtp</p>
<p>http://caucho.com/resin-3.1/doc/el-var.xtp#host</p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2008/03/18/2532264.html" rel="bookmark" class="crp_title">Apache+Resin泛域名的设置</a></li><li><a href="http://www.javatang.com/archives/2007/06/20/1513177.html" rel="bookmark" class="crp_title">Apache和Resin产生大容量日志的解决办法</a></li><li><a href="http://www.javatang.com/archives/2010/08/27/3629451.html" rel="bookmark" class="crp_title">Apache和Resin组合时UrlRewriteFilter失效的解决方法</a></li><li><a href="http://www.javatang.com/archives/2010/11/13/1228487.html" rel="bookmark" class="crp_title">Apache和Resin组合时间歇性出现503错误的解决方法</a></li><li><a href="http://www.javatang.com/archives/2008/10/18/1942276.html" rel="bookmark" class="crp_title">Apache+Resin下如何写伪静态和301跳转</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/11/14/1752494.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache和Resin组合时间歇性出现503错误的解决方法</title>
		<link>http://www.javatang.com/archives/2010/11/13/1228487.html</link>
		<comments>http://www.javatang.com/archives/2010/11/13/1228487.html#comments</comments>
		<pubDate>Sat, 13 Nov 2010 09:12:28 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[JavaPlateform]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[resin]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=487</guid>
		<description><![CDATA[使用Apache和Resin进行组合时，如果Resin关闭或中断的时会出现如下的HTTP 503错误： Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 造成这个错误的原因是因为Resin无法启动，可以单独访问resin（如8080端口）查看具体的错误。 我这里要说的是，在Resin和Apache都非常非常正常的情况下，间歇性的出现上述错误，也就是说不是一直有，而是偶尔出现这个错误，刷新下页面就好了。这个问题非常郁闷，后来在resin的bug报告中（见参考资料）竟然发现了解决的办法： The important configuration are load-balance-socket-timeout, socket-timeout, load-balance-idle-time and keepalive-timeout. The two load-balance-* configure mod_caucho. socket-timeout and keepalive-timeout configure the Resin side. load-balance-socket-timeout needs to be large enough to [...]]]></description>
			<content:encoded><![CDATA[<p>使用Apache和Resin进行组合时，如果Resin关闭或中断的时会出现如下的HTTP 503错误：</p>
<blockquote><p>
Service Temporarily Unavailable<br />
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
</p></blockquote>
<p>造成这个错误的原因是因为Resin无法启动，可以单独访问resin（如8080端口）查看具体的错误。</p>
<p>我这里要说的是，在Resin和Apache都非常非常正常的情况下，<strong>间歇性</strong>的出现上述错误，也就是说不是一直有，而是偶尔出现这个错误，刷新下页面就好了。这个问题非常郁闷，后来在resin的bug报告中（见参考资料）竟然发现了解决的办法：</p>
<blockquote><p>
The important configuration are load-balance-socket-timeout, socket-timeout, load-balance-idle-time and keepalive-timeout. The two load-balance-* configure mod_caucho. socket-timeout and keepalive-timeout configure the Resin side.</p>
<p>load-balance-socket-timeout needs to be large enough to handle any server-side processing delays before the first data.</p>
<p>socket-timeout and keepalive-timeout need to be larger than load-balance-idle-time because they need to keep the connection open for a keepalive request. </p>
<p>For a diagram, see</p>
<p>http://caucho.com/resin/admin/load-balancing.xtp</p>
</blockquote>
<p>也就是说，Resin在同Apache进行组合通讯的时候主要依靠四个参数：load-balance-socket-timeout, socket-timeout, load-balance-idle-time 和 keepalive-timeout，其中两个load-balance-*参数用来设置mod_caucho（就是与Apache组合的so文件），socket-timeout和keepalive-timeout用来设置Resin。至于参数数值的大小顺序依此是：load-balance-socket-timeout &gt; socket-timeout 和 keepalive-timeout &gt; load-balance-idle-time。上述四个参数的官方说明地址为：<a href="http://caucho.com/resin-3.1/doc/server-tags.xtp" target="_blank">http://caucho.com/resin-3.1/doc/server-tags.xtp</a></p>
<p>那为什么会间歇性出现503错误呢？这个是因为resin默认的socket-timeout为65s，时间太短了，有些比较大的请求在这个时间之内还没有进行完。综合上面所说，参考的配置如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">resin</span><span style="color: Gray;"> ...</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">cluster</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">app-tier</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">server-default</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">socket-timeout</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">180s</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">socket-timeout</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">keepalive-max</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">3000</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">keepalive-max</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">keepalive-timeout</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">180s</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">keepalive-timeout</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">load-balance-idle-time</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">120s</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">load-balance-idle-time</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">server-default</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">cluster</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">resin</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>从此，这个世界清净了。</p>
<p>参考资料：<br />
<a href="http://bugs.caucho.com/view.php?id=2715" target="_blank">Apache 2.2.x + Resin 3.1.x: frequent 503 status error messages (Service Temporarily Unavailable)</a><br />
<a href="http://bugs.caucho.com/view.php?id=2862" target="_blank">0002862: Apache + Resin and 503 HTTP Error</a><br />
<a href="http://aiter.javaeye.com/blog/391456" target="_blank">resin apache问题</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2011/10/18/1847563.html" rel="bookmark" class="crp_title">Ext中设置Ajax超时时间</a></li><li><a href="http://www.javatang.com/archives/2007/07/04/1548182.html" rel="bookmark" class="crp_title">PHP中出现“Unable to load dynamic library”问题的解决方法</a></li><li><a href="http://www.javatang.com/archives/2010/11/14/1752494.html" rel="bookmark" class="crp_title">Resin中对日志输出的配置</a></li><li><a href="http://www.javatang.com/archives/2008/10/18/1942276.html" rel="bookmark" class="crp_title">Apache+Resin下如何写伪静态和301跳转</a></li><li><a href="http://www.javatang.com/archives/2007/11/02/0146237.html" rel="bookmark" class="crp_title">“终端服务超出最大允许连接数”问题产生原因及解决方法</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/11/13/1228487.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache和Resin组合时UrlRewriteFilter失效的解决方法</title>
		<link>http://www.javatang.com/archives/2010/08/27/3629451.html</link>
		<comments>http://www.javatang.com/archives/2010/08/27/3629451.html#comments</comments>
		<pubDate>Fri, 27 Aug 2010 09:36:29 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[resin]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=451</guid>
		<description><![CDATA[目前在Spring3.0的官方example中都使用UrlRewriteFilter来做伪静态，单独运行在Resin等JavaEE Web容器中的时候一切都OK，但是一旦与Apache一起组合的时候总是会出现404或403错误，当然UrlRewriteFilter所设定的规则也无效。 造成这种现象的原因是因为在默认情况下，静态的资源均由Apache进行处理，而jsp或者由web.xml所映射的servlet均交给resin进行处理。如果web项目没有使用UrlRewriteFilter则一切OK，但是使用了UrlRewriteFilter之后，由servlet所映射的地址并不是/*即所有资源了，而是类似/app/*这样的设置。也就是说，用户所请求的资源首先由Apache判断一下，然后再由选择的交给Resin，最后才执行UrlRewriteFilter的规则。 知道了原因，解决的方法也就出来了，只要告诉Apache将所有的资源都交由Resin来处理就可以了，可以使用Resin的servlet-mapping方法进行配置，配置如下： &#60;servlet-mapping url-pattern='/*' servlet-name='plugin_match'/&#62; 其中plugin_match是Resin内置的servlet，按照resin官方的解释就是Resin告诉Apache将所有的符合url-pattern规则要求的请求都发送给它进行处理。 因为servlet-mapping是resin特有的，所以建议将此也放在resin-web.xml中，然后放在项目中的WEB-INF目录下： &#60;web-app xmlns=&#34;http://caucho.com/ns/resin&#34; &#160; &#160; &#160; &#160;&#160; xmlns:resin=&#34;http://caucho.com/ns/resin/core&#34;&#62; &#160; &#160; &#60;servlet-mapping&#160;url-pattern='/*' servlet-name='plugin_match'/&#62; &#60;/web-app&#62; 参考资料： Apache的UrlRewrite和Resin的配置问题 Resin官方对servlet-mapping的说明 Related Posts:Resin 3.0.x 经验总结DWR文档之开始使用 DWR如何使用DWR2.0的注解功能Apache+Resin下如何写伪静态和301跳转Resin中对日志输出的配置]]></description>
			<content:encoded><![CDATA[<p>目前在Spring3.0的官方example中都使用UrlRewriteFilter来做伪静态，单独运行在Resin等JavaEE Web容器中的时候一切都OK，但是一旦与Apache一起组合的时候总是会出现404或403错误，当然UrlRewriteFilter所设定的规则也无效。</p>
<p>造成这种现象的原因是因为在默认情况下，静态的资源均由Apache进行处理，而jsp或者由web.xml所映射的servlet均交给resin进行处理。如果web项目没有使用UrlRewriteFilter则一切OK，但是使用了UrlRewriteFilter之后，由servlet所映射的地址并不是/*即所有资源了，而是类似/app/*这样的设置。也就是说，用户所请求的资源首先由Apache判断一下，然后再由选择的交给Resin，最后才执行UrlRewriteFilter的规则。</p>
<p>知道了原因，解决的方法也就出来了，只要告诉Apache将所有的资源都交由Resin来处理就可以了，可以使用Resin的servlet-mapping方法进行配置，配置如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet-mapping</span><span style="color: Gray;"> </span><span style="color: #00008b;">url-pattern</span><span style="color: Gray;">='/*' </span><span style="color: #00008b;">servlet-name</span><span style="color: Gray;">='</span><span style="color: #00008b;">plugin_match</span><span style="color: Gray;">'</span><span style="color: Olive;">/&gt;</span></li></ol></div>
<p>其中plugin_match是Resin内置的servlet，按照resin官方的解释就是Resin告诉Apache将所有的符合url-pattern规则要求的请求都发送给它进行处理。</p>
<p>因为servlet-mapping是resin特有的，所以建议将此也放在resin-web.xml中，然后放在项目中的WEB-INF目录下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">web-app</span><span style="color: Gray;"> </span><span style="color: #00008b;">xmlns</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://caucho.com/ns/resin</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #00008b;">xmlns:resin</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://caucho.com/ns/resin/core</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet-mapping</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">url-pattern</span><span style="color: Gray;">='/*' </span><span style="color: #00008b;">servlet-name</span><span style="color: Gray;">='</span><span style="color: #00008b;">plugin_match</span><span style="color: Gray;">'</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">web-app</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>参考资料：<br />
<a href="http://highbird.blog.sohu.com/70318160.html" target="_blank">Apache的UrlRewrite和Resin的配置问题</a><br />
<a href="http://www.caucho.com/resin-3.0/config/webapp.xtp#servlet-mapping" target="_blank">Resin官方对servlet-mapping的说明</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2006/08/21/010658.html" rel="bookmark" class="crp_title">Resin 3.0.x 经验总结</a></li><li><a href="http://www.javatang.com/archives/2006/10/20/254879.html" rel="bookmark" class="crp_title">DWR文档之开始使用 DWR</a></li><li><a href="http://www.javatang.com/archives/2008/07/07/5648271.html" rel="bookmark" class="crp_title">如何使用DWR2.0的注解功能</a></li><li><a href="http://www.javatang.com/archives/2008/10/18/1942276.html" rel="bookmark" class="crp_title">Apache+Resin下如何写伪静态和301跳转</a></li><li><a href="http://www.javatang.com/archives/2010/11/14/1752494.html" rel="bookmark" class="crp_title">Resin中对日志输出的配置</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/08/27/3629451.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决Firefox及Firebug内存泄漏的问题</title>
		<link>http://www.javatang.com/archives/2010/08/21/0946448.html</link>
		<comments>http://www.javatang.com/archives/2010/08/21/0946448.html#comments</comments>
		<pubDate>Sat, 21 Aug 2010 02:09:46 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web&Server]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=448</guid>
		<description><![CDATA[Firebug现在基本是调试Javascript脚本必备的工具，但是由于Firefox运行机制的原因，通常在使用一段时间之后会发现Firefox变得非常慢，在任务管理器中也会发现firefox.exe进程占用了不小的内容。 这里综合自己使用的情况强烈推荐三种方式，可以根据自己的喜好进行选择： 1. 进行系统设置 在地址栏中使用about:config打开FF的配置页面，右键添加一个属性：名称为config.trim_on_minimize，值类型为boolean，值为true，然后将FF关闭之后再打开，这样该设置就生效了。该属性的作用是当Firefox最小化之后会自动释放内容，可以打开任务管理器进行验证。该方法操作和设置都最简单。 2. 使用RAMBack扩展 FF中有一个非常不错的自动释放内存的扩展：RAMBack，这个扩展的基本原理也是上述第一条中的方法，只不过使用插件的方式将这个动作进行自动操作了，安装好扩展并重启FF就可以了，操作更方便。 这里顺便在推荐一个不错的扩展：StatusbarEx，该扩展是用来监视FF内存使用情况的，另外还可以监视系统内存的使用情况、CPU的使用率、FF CPU的使用率等等。 3. 使用SweepRAM软件 确切地来说，SweepRAM并非专门用来释放FF内存的，而是释放系统中所有未被使用但驻留在内存中的数据，据我的使用来看，他对javaw的释放效果也很明显，如果使用Eclipse或NetBeans等做开发的朋友可以试一试。 这个软件是使用VB开发的，所以通常需要在上面的网站上下载vb6fr.dll，然后拷贝到 %SystemRoot%\system32 目录下，另外默认执行SweepRAM.exe完成后会出现一个done的对话框，可以在后面加上 /s 参数禁止显示该对话框。我是在快速启动栏里面创建了一个快捷方式，使用的时候直接点一下，非常方便。 参考资料： SweepRAM – Firefox3 内存释放工具 Related Posts:PHP中出现“Unable to load dynamic library”问题的解决方法C++基础之字符串处理函数2007年邮政贺卡开奖功能强大的在线编辑器-FCKeditor今天看到一句话，很是喜欢]]></description>
			<content:encoded><![CDATA[<p>Firebug现在基本是调试Javascript脚本必备的工具，但是由于Firefox运行机制的原因，通常在使用一段时间之后会发现Firefox变得非常慢，在任务管理器中也会发现firefox.exe进程占用了不小的内容。</p>
<p>这里综合自己使用的情况强烈推荐三种方式，可以根据自己的喜好进行选择：</p>
<p><strong>1. 进行系统设置</strong><br />
在地址栏中使用about:config打开FF的配置页面，右键添加一个属性：名称为config.trim_on_minimize，值类型为boolean，值为true，然后将FF关闭之后再打开，这样该设置就生效了。该属性的作用是当Firefox最小化之后会自动释放内容，可以打开任务管理器进行验证。该方法操作和设置都最简单。</p>
<p><strong>2. 使用RAMBack扩展</strong><br />
FF中有一个非常不错的自动释放内存的扩展：<a href="https://addons.mozilla.org/zh-CN/firefox/addon/5972/" target="_blank">RAMBack</a>，这个扩展的基本原理也是上述第一条中的方法，只不过使用插件的方式将这个动作进行自动操作了，安装好扩展并重启FF就可以了，操作更方便。</p>
<p>这里顺便在推荐一个不错的扩展：<a href="https://addons.mozilla.org/en-US/firefox/addon/3271/" target="_blank">StatusbarEx</a>，该扩展是用来监视FF内存使用情况的，另外还可以监视系统内存的使用情况、CPU的使用率、FF CPU的使用率等等。</p>
<p><strong>3. 使用SweepRAM软件</strong><br />
确切地来说，<a href="http://88.191.26.34/computers_are_fun/sweepram/" target="_blank">SweepRAM</a>并非专门用来释放FF内存的，而是释放系统中所有未被使用但驻留在内存中的数据，据我的使用来看，他对javaw的释放效果也很明显，如果使用Eclipse或NetBeans等做开发的朋友可以试一试。</p>
<p>这个软件是使用VB开发的，所以通常需要在上面的网站上下载vb6fr.dll，然后拷贝到 %SystemRoot%\system32 目录下，另外默认执行SweepRAM.exe完成后会出现一个done的对话框，可以在后面加上 /s 参数禁止显示该对话框。我是在快速启动栏里面创建了一个快捷方式，使用的时候直接点一下，非常方便。</p>
<p>参考资料：<br />
<a href="http://www.appinn.com/sweepram/" target="_blank">SweepRAM – Firefox3 内存释放工具</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/07/04/1548182.html" rel="bookmark" class="crp_title">PHP中出现“Unable to load dynamic library”问题的解决方法</a></li><li><a href="http://www.javatang.com/archives/2007/10/30/2016233.html" rel="bookmark" class="crp_title">C++基础之字符串处理函数</a></li><li><a href="http://www.javatang.com/archives/2007/03/05/3646109.html" rel="bookmark" class="crp_title">2007年邮政贺卡开奖</a></li><li><a href="http://www.javatang.com/archives/2007/03/16/4052133.html" rel="bookmark" class="crp_title">功能强大的在线编辑器-FCKeditor</a></li><li><a href="http://www.javatang.com/archives/2006/10/18/570575.html" rel="bookmark" class="crp_title">今天看到一句话，很是喜欢</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/08/21/0946448.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>彻底修改Google Chrome浏览器的安装目录</title>
		<link>http://www.javatang.com/archives/2010/07/11/4201420.html</link>
		<comments>http://www.javatang.com/archives/2010/07/11/4201420.html#comments</comments>
		<pubDate>Sun, 11 Jul 2010 09:42:01 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[谷歌浏览器]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=420</guid>
		<description><![CDATA[谷歌浏览器以其简洁的界面和快速的Javascript解析速度v8引擎，很快在浏览器市场中占有了一席之地，我们公司的绝大多数系统就建议用户选择使用谷歌浏览器。但是说起他的安装绝对是个杯具：一是默认下载的是在线安装版的；另外一个就是默认的安装目录在系统盘，而且不能选择！！ 本文就针对这两点分别给出一个解决方案。 一、下载谷歌的离线安装包 谷歌浏览器的默认下载地址是：http://www.google.com/chrome/eula.html，其实这个地址后面可以跟很多的参数，最关键的一个参数就是standalone，将它的值设置为1就可以下载离线版了，具体的地址是：http://www.google.com/chrome/eula.html?hl=en&#038;standalone=1，里面的hl是设定语言的，可以不用。 二、修改谷歌浏览器的安装目录 因为谷歌浏览器的安装程序很难进行定制，所以我们没有办法直接修改安装程序来实现修改安装目录的目的，但是可以通过一个小的技巧来制作绿色版的谷歌浏览器。 首先使用上面的方法下载离线版的谷歌浏览器，然后默认安装，安装完之后最好不要允许浏览器。谷歌浏览器的默认安装目录如下： Win7: C:\Users\系统用户名\AppData\Local\Google\Chrome\Application WinXP : C:\Documents and Settings\系统用户名\Local Settings\Application Data\Google\Chrome 进入上述目录之后，首先将chrome.exe放到包含版本号的目录中，然后将这个目录拷贝到你所想要放的地方，最后修改这个目录名就可以了，比如可以修改成GoogleChrome。 还有最后一步，就是设置UserData。可以在刚才那个GoogleChrome目录下面创建一个新的目录UserData，然后创建chrome.exe的一个快捷方式，在快捷“目标”后面加上下面的参数： &#8211;user-data-dir=UserData 然后启动的时候直接运行这个快捷方式就可以了。 最后卸载刚才安装在系统盘下的Google浏览器就可以了。 注意几点： 1. 如果不将chrome拷贝到版本号的目录下，直接运行chrome.exe则无效； 2. 如果不在添加了&#8211;user-data-dir参数的快捷方式下运行程序，则默认情况下的User Data目录还是在系统盘下面。 参考资料： 简单制作自己的Google Chrome (谷歌浏览器)绿化版 修改chrome的安装目录 Related Posts:离线版Google Chrome Frame下载解决Google浏览器自动更新后一直提示重启浏览器的问题GOOGLE服务列表Google发布“网站导航”谈谈网络存储服务]]></description>
			<content:encoded><![CDATA[<p>谷歌浏览器以其简洁的界面和快速的Javascript解析速度v8引擎，很快在浏览器市场中占有了一席之地，我们公司的绝大多数系统就建议用户选择使用谷歌浏览器。但是说起他的安装绝对是个杯具：一是默认下载的是在线安装版的；另外一个就是默认的安装目录在系统盘，而且不能选择！！ 本文就针对这两点分别给出一个解决方案。</p>
<p>一、下载谷歌的离线安装包<br />
谷歌浏览器的默认下载地址是：http://www.google.com/chrome/eula.html，其实这个地址后面可以跟很多的参数，最关键的一个参数就是standalone，将它的值设置为1就可以下载离线版了，具体的地址是：<a href="http://www.google.com/chrome/eula.html?hl=en&#038;standalone=1" target="_blank">http://www.google.com/chrome/eula.html?hl=en&#038;standalone=1</a>，里面的hl是设定语言的，可以不用。</p>
<p>二、修改谷歌浏览器的安装目录<br />
因为谷歌浏览器的安装程序很难进行定制，所以我们没有办法直接修改安装程序来实现修改安装目录的目的，但是可以通过一个小的技巧来<a href="http://www.javatang.com/archives/2010/07/11/1906420.html">制作绿色版的谷歌浏览器</a>。</p>
<p>首先使用上面的方法下载离线版的谷歌浏览器，然后默认安装，安装完之后最好不要允许浏览器。谷歌浏览器的默认安装目录如下：</p>
<blockquote><p>
Win7:<br />
C:\Users\系统用户名\AppData\Local\Google\Chrome\Application<br />
WinXP :<br />
C:\Documents and Settings\系统用户名\Local Settings\Application Data\Google\Chrome
</p></blockquote>
<p>进入上述目录之后，首先<strong>将chrome.exe放到包含版本号的目录中</strong>，然后将这个目录拷贝到你所想要放的地方，最后修改这个目录名就可以了，比如可以修改成GoogleChrome。</p>
<p>还有最后一步，就是设置UserData。可以在刚才那个GoogleChrome目录下面创建一个新的目录UserData，然后创建chrome.exe的一个快捷方式，在快捷“目标”后面加上下面的参数：</p>
<blockquote><p>
&#8211;user-data-dir=UserData
</p></blockquote>
<p>然后启动的时候直接运行这个快捷方式就可以了。</p>
<p>最后卸载刚才安装在系统盘下的Google浏览器就可以了。</p>
<p>注意几点：<br />
1. 如果不将chrome拷贝到版本号的目录下，直接运行chrome.exe则无效；<br />
2. 如果不在添加了&#8211;user-data-dir参数的快捷方式下运行程序，则默认情况下的User Data目录还是在系统盘下面。</p>
<p>参考资料：<br />
<a href="http://m0618.com/?p=814" target="_blank">简单制作自己的Google Chrome (谷歌浏览器)绿化版</a><br />
<a href="http://blog.csdn.net/sdpdww/archive/2010/02/24/5323723.aspx" target="_blank">修改chrome的安装目录</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/01/19/4754372.html" rel="bookmark" class="crp_title">离线版Google Chrome Frame下载</a></li><li><a href="http://www.javatang.com/archives/2011/01/14/3017542.html" rel="bookmark" class="crp_title">解决Google浏览器自动更新后一直提示重启浏览器的问题</a></li><li><a href="http://www.javatang.com/archives/2006/09/18/365065.html" rel="bookmark" class="crp_title">GOOGLE服务列表</a></li><li><a href="http://www.javatang.com/archives/2007/03/12/5833125.html" rel="bookmark" class="crp_title">Google发布“网站导航”</a></li><li><a href="http://www.javatang.com/archives/2007/11/28/1236247.html" rel="bookmark" class="crp_title">谈谈网络存储服务</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/07/11/4201420.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE6下使png透明的完美解决方式</title>
		<link>http://www.javatang.com/archives/2010/07/08/4615417.html</link>
		<comments>http://www.javatang.com/archives/2010/07/08/4615417.html#comments</comments>
		<pubDate>Thu, 08 Jul 2010 11:46:15 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[RIA]]></category>
		<category><![CDATA[Web&Server]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=417</guid>
		<description><![CDATA[众所周知，在IE6下面无法使用png透明的效果，虽然IE6的市场份额逐渐下滑，但是在国内依然保持最旺盛的占有率，这一点无法进行忽视。下午的时候Google了一下目前的解决方案，发现IE PNG Fix 2.0 Alpha 4虽然使用非常比较方便而且可以打到预期的效果，但是在加载页面的时候非常的缓慢，这一点是无法容忍的。还有使用滤镜的，但是效果一般，而且没有通用性。 最后在蓝色理想的一个帖子里面有网友提到使用Unit PNG Fix，结果用下来发现效果和速度都非常令人满意，调用方法我简单的说一下吧： 首先在http://labs.unitinteractive.com/unitpngfix.php页面的下面下载unitpngfix.zip文件。 接下来将压缩包里面的两个文件：unitpngfix.js和clear.gif拷贝到站点的某个位置，假设将unitpngfix.js拷贝到scripts目录，clear.gif放到images目录，这个时候需要特别注意的是，必须修改unitpngfix.js文件中clear变量的值，也就是clear.gif相对于unitpngfix.js文件的路径，上面的情况就要修改成： var clear=&#34;../images/clear.gif&#34;; //path to clear.gif 最后在页面中进行调用unitpngfix.js文件就可以了。 &#60;!--[if lt IE 7]&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;scripts/unitpngfix.js&#34;&#62;&#60;/script&#62; &#60;![endif]--&#62; 到这里其实已经看到效果了，不过默认情况下unitpngfix会对页面中所有的元素进行渲染处理，这样的话未免有些影响页面加载的效率，有一种方法就是可以将所要渲染的元素后面使用名为unitPng的style进行限定。 延伸阅读：IE6下使png透明的完美解决方式（续） OK，Enjoy It！ 参考资料： 老问题重提：IE6下png背景透明 ie6处理png透明图片问题 ie6 png透明解决方法简单高效 Related Posts:IE6下使png透明的完美解决方式（续）Javascript的国际化方案JSEclipse现在是Adodb的项目了使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法Javascript怎样设置文本框的readonly属性？]]></description>
			<content:encoded><![CDATA[<p>众所周知，在IE6下面无法使用png透明的效果，虽然IE6的市场份额逐渐下滑，但是在国内依然保持最旺盛的占有率，这一点无法进行忽视。下午的时候Google了一下目前的解决方案，发现<a href="http://www.twinhelix.com/css/iepngfix/" target="_blank">IE PNG Fix 2.0 Alpha 4</a>虽然使用非常比较方便而且可以打到预期的效果，但是在加载页面的时候非常的缓慢，这一点是无法容忍的。还有使用滤镜的，但是效果一般，而且没有通用性。</p>
<p>最后在<a href="http://bbs.blueidea.com/viewthread.php?tid=2892826&#038;page=1#pid4266799" target="_blank">蓝色理想的一个帖子里面</a>有网友提到使用<a href="http://labs.unitinteractive.com/unitpngfix.php" target="_blank">Unit PNG Fix</a>，结果用下来发现效果和速度都非常令人满意，调用方法我简单的说一下吧：</p>
<p>首先在<a href="http://labs.unitinteractive.com/unitpngfix.php" target="_blank">http://labs.unitinteractive.com/unitpngfix.php</a>页面的下面下载<a href="http://labs.unitinteractive.com/downloads/unitpngfix.zip" target="_blank">unitpngfix.zip文件</a>。</p>
<p>接下来将压缩包里面的两个文件：unitpngfix.js和clear.gif拷贝到站点的某个位置，假设将unitpngfix.js拷贝到scripts目录，clear.gif放到images目录，这个时候需要特别注意的是，<strong>必须修改unitpngfix.js文件中clear变量的值，也就是clear.gif相对于unitpngfix.js文件的路径</strong>，上面的情况就要修改成：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">clear</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">../images/clear.gif</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//path to clear.gif</span></li></ol></div>
<p>最后在页面中进行调用unitpngfix.js文件就可以了。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;!--[if lt IE 7]&gt; </li>
<li>&lt;script type=&quot;text/javascript&quot; src=&quot;scripts/unitpngfix.js&quot;&gt;&lt;/script&gt; </li>
<li>&lt;![endif]--&gt;</li></ol></div>
<p>到这里其实已经看到效果了，不过默认情况下unitpngfix会对页面中所有的元素进行渲染处理，这样的话未免有些影响页面加载的效率，有一种方法就是可以将所要渲染的元素后面使用名为unitPng的style进行限定。</p>
<p>延伸阅读：<a href="http://www.javatang.com/archives/2010/07/19/0824428.html" target="_blank">IE6下使png透明的完美解决方式（续）</a></p>
<p>OK，Enjoy It！</p>
<p>参考资料：<br />
<a href="http://bbs.blueidea.com/thread-2892826-1-1.html" target="_blank">老问题重提：IE6下png背景透明</a><br />
<a href="http://ninggy.javaeye.com/blog/559643" target="_blank">ie6处理png透明图片问题</a><br />
<a href="http://buliangniu.javaeye.com/blog/556735" target="_blank">ie6 png透明解决方法简单高效</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/07/19/1736428.html" rel="bookmark" class="crp_title">IE6下使png透明的完美解决方式（续）</a></li><li><a href="http://www.javatang.com/archives/2008/04/20/5034268.html" rel="bookmark" class="crp_title">Javascript的国际化方案</a></li><li><a href="http://www.javatang.com/archives/2007/01/30/303293.html" rel="bookmark" class="crp_title">JSEclipse现在是Adodb的项目了</a></li><li><a href="http://www.javatang.com/archives/2008/07/10/1954272.html" rel="bookmark" class="crp_title">使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法</a></li><li><a href="http://www.javatang.com/archives/2007/10/06/5104204.html" rel="bookmark" class="crp_title">Javascript怎样设置文本框的readonly属性？</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/07/08/4615417.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache下FastCGI模块的众多版本</title>
		<link>http://www.javatang.com/archives/2010/01/07/3629356.html</link>
		<comments>http://www.javatang.com/archives/2010/01/07/3629356.html#comments</comments>
		<pubDate>Thu, 07 Jan 2010 08:36:29 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[OS]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[fastcgi]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=356</guid>
		<description><![CDATA[这两天在Apache上配置以FastCGI方式来加载PHP和Perl，连续花了三天的时间才正式配置好并且稳定了，配置的话到不是很麻烦，关键是配置好之后还要稳定。后续我会将整个过程记录下来给大家分享，今天我要先说的是FastCGI的版本问题。 目前我们在网上能够找到的FastCGI有三个版本： (1) mod_fastcgi：官方地址是http://www.fastcgi.com/。这个可以说是最初始的FastCGI的版本，可惜的是现在作者已经好久没有维护了，现存编译好的版本非常少，其官方网站更多的是以一个“标准”的姿态出现的。现在给出通过官方网站没法直接找到的两个地址，一个是下载地址http://www.fastcgi.com/dist/，另外一个是相关的配置参数的文档http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html。虽然是官方标准，但是不建议在生产环境中直接使用，因为它特别的不稳定，而且兼容性极差。 (2) mod_fcgid v2.2：官方地址是http://fastcgi.coremail.cn/，不过网站现在打不开了，所幸的是可以在http://www.apachelounge.com/download/网站上下载。fcgid是在fastcgi的基础上进行了扩展和优化，并且针对Apache的新版本做了及时的更新，使得可以在生产环境下使用，二者具体的区别可以阅读下面的参考资料。原来在coremail上所提供的文件因为现在网站没法访问，所以具体的关于ApacheLounge上所提供的mod_fcgid2.2和coremail上所提供的有什么区别我不是很了解。所幸我找到了作者的邮箱，通过跟作者邮件沟通了解到，原来作者在做完第一个版本的fcgid之后就将源代码发布到了网上，后来ApacheLounge的Steffen使用源代码重新在Windows下面编译后发布了可以直接使用的二进制版本的mod_fcgid.so文件。同时，Steffen也是Apache Windows版本的一个维护者。经过试用，我感觉这个版本的mod_fcgid是最适合在Windows环境下使用的。 (3) mod_fcgid v2.3.x +：官方地址为http://httpd.apache.org/mod_fcgid/，相关文档地址为：http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html。这个是目前Apache官方所提供的mod_fcgid，目前最新版本为2.3.4。通过作者了解到，这个是作者将原来放在coremail上的mod_fcgid代码捐献给Apache之后由Apache官方来维护的一个版本，可以说是2.2版本之后的后续版本。但是我在Windows上面使用之后感觉不是很稳定，Apache总是隔一段时间就自动关闭，不知道是我设置的问题还是其他问题。 综合来看，上面三个版本的情况如下： mod_fastcgi：最初始的标准版本，适合开发，不适合直接在生产环境中使用； mod_fcgid v2.2：目前在Apache Lounge上提供下载，个人认为是最适合在Windows环境下使用的一个版本，缺点是因为原来的fastcgi.coremail.cn网站已经不能访问，所以所参考的文档极少； mod_fcgid v2.3.x +：最新最稳定的官方版本，其特点是目前mod_fcgid中最新的版本，而且是有官方来维护，文档内容也非常丰富。但以我个人使用来看，在Windows环境下不是很稳定。 更新(2010.1.8)：经过同mod_fcgid原作者Ryan Pan (Pan Qingfeng, pqf or 潘庆峰)沟通，他已经答应将原来在http://fastcgi.coremail.cn/的内容放到本站做镜像，详细说明见http://www.javatang.com/mod_fcgid-v2-2-mirror 附同mod_fcgid作者沟通的邮件内容(经本人允许)： 庆峰，你好！ 很冒昧的给你发mail，我是mod_fcgid的使用者，有个疑问一直未知，就是关于mod_fcgid版本的问题。我现在在网络上找到三种mod_fcgid的版本： (1) 在http://www.apachelounge.com/download/上列出的两个mod_fcgid-2.2b-w32.zip(用于Apache 2.2.9+)和 mod_fcgid-2.2a-w32.zip(用于Apache 2.2.0到2.2.8)，作者好像是Steffen。 (2) 在http://fastcgi.coremail.cn/index.cn.htm(现在无法访问了)上也有一个mod_fcgid，作者的信息我只在ChinaUnix找到一个帖子http://bbs3.chinaunix.net/thread-320106-1-1.html，有人说跟上面的是同一个，但因为网站无法访问，所以没有办法看到。 (3) 最后一个就是你写的mod_fcgid了，官方地址是http://httpd.apache.org/mod_fcgid/，现在的版本是2.3.4，详细文档地址是http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html。 因为想在实际的项目中使用mod_fcgid加载PHP，所以还望解答我的疑问，非常感谢！ 顺颂商祺！ 马志勇 (Jet Ma) ========================= Hi, 马先生 （1）其实是专门维护Windows版Apache的一位外国朋友做的，源代码也是来自标准的mod_fcgid, 不过Steffen维护的是Windows版的编译好的mod_fcgid.so，方便大家直接使用（Windows很多人没有安装编译工具，直接给源代码大家基本上没多少人可以用的上) (2) 之前做mod_fcgid的时候，代码和文档一直放在这里的，但是后来代码捐献了给Apache之后，这里就不再维护了，另外最近公司服务器做了一些调整，我也改不了redirect到apache网站了 (3) 这是当前官方的mod_fcgid, 维护的是最新最稳定的mod_fcgid, Apache软件基金会的程序员（我也是其中之一）正在维护这个项目，如果您有什么问题，可以直接在Apache的邮件列表提出的（不过使用问题最好不要在开发邮件列表提出了) [...]]]></description>
			<content:encoded><![CDATA[<p>这两天在Apache上配置以FastCGI方式来加载PHP和Perl，连续花了三天的时间才正式配置好并且稳定了，配置的话到不是很麻烦，关键是配置好之后还要稳定。后续我会将整个过程记录下来给大家分享，今天我要先说的是FastCGI的版本问题。</p>
<p>目前我们在网上能够找到的FastCGI有三个版本：<br />
(1) <strong>mod_fastcgi</strong>：官方地址是<a href="http://www.fastcgi.com/" target="_blank">http://www.fastcgi.com/</a>。这个可以说是最初始的FastCGI的版本，可惜的是现在作者已经好久没有维护了，现存编译好的版本非常少，其官方网站更多的是以一个“标准”的姿态出现的。现在给出通过官方网站没法直接找到的两个地址，一个是下载地址<a href="http://www.fastcgi.com/dist/" target="_blank">http://www.fastcgi.com/dist/</a>，另外一个是相关的配置参数的文档<a href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html" target="_blank">http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html</a>。虽然是官方标准，但是<strong>不建议在生产环境中直接使用</strong>，因为它特别的不稳定，而且兼容性极差。</p>
<p>(2) <strong>mod_fcgid v2.2</strong>：官方地址是<a href="http://fastcgi.coremail.cn/" target="_blank">http://fastcgi.coremail.cn/</a>，不过网站现在打不开了，所幸的是可以在<a href="http://www.apachelounge.com/download/" target="_blank">http://www.apachelounge.com/download/</a>网站上下载。fcgid是在fastcgi的基础上进行了扩展和优化，并且针对Apache的新版本做了及时的更新，使得可以在生产环境下使用，二者具体的区别可以阅读下面的参考资料。原来在coremail上所提供的文件因为现在网站没法访问，所以具体的关于ApacheLounge上所提供的mod_fcgid2.2和coremail上所提供的有什么区别我不是很了解。所幸我找到了作者的邮箱，通过跟作者邮件沟通了解到，原来作者在做完第一个版本的fcgid之后就将源代码发布到了网上，后来ApacheLounge的Steffen使用源代码重新在Windows下面编译后发布了可以直接使用的二进制版本的mod_fcgid.so文件。同时，Steffen也是Apache Windows版本的一个维护者。经过试用，我感觉这个版本的mod_fcgid是最适合在Windows环境下使用的。</p>
<p>(3) <strong>mod_fcgid v2.3.x +</strong>：官方地址为<a href="http://httpd.apache.org/mod_fcgid/" target="_blank">http://httpd.apache.org/mod_fcgid/</a>，相关文档地址为：<a href="http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html" target="_blank">http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html</a>。这个是目前Apache官方所提供的mod_fcgid，目前最新版本为2.3.4。通过作者了解到，这个是作者将原来放在coremail上的mod_fcgid代码捐献给Apache之后由Apache官方来维护的一个版本，可以说是2.2版本之后的后续版本。但是我在Windows上面使用之后感觉不是很稳定，Apache总是隔一段时间就自动关闭，不知道是我设置的问题还是其他问题。</p>
<p>综合来看，上面三个版本的情况如下：</p>
<li>mod_fastcgi：最初始的标准版本，适合开发，不适合直接在生产环境中使用；</li>
<li>mod_fcgid v2.2：目前在Apache Lounge上提供下载，个人认为是最适合在Windows环境下使用的一个版本，缺点是因为原来的fastcgi.coremail.cn网站已经不能访问，所以所参考的文档极少；</li>
<li>mod_fcgid v2.3.x +：最新最稳定的官方版本，其特点是目前mod_fcgid中最新的版本，而且是有官方来维护，文档内容也非常丰富。但以我个人使用来看，在Windows环境下不是很稳定。</li>
<p>更新(2010.1.8)：经过同mod_fcgid原作者Ryan Pan (Pan Qingfeng, pqf or 潘庆峰)沟通，他已经答应将原来在http://fastcgi.coremail.cn/的内容放到本站做镜像，详细说明见<a href="http://www.javatang.com/mod_fcgid-v2-2-mirror" target="_blank">http://www.javatang.com/mod_fcgid-v2-2-mirror</a></p>
<p>附同mod_fcgid作者沟通的邮件内容(经本人允许)：</p>
<blockquote><p>
庆峰，你好！<br />
很冒昧的给你发mail，我是mod_fcgid的使用者，有个疑问一直未知，就是关于mod_fcgid版本的问题。我现在在网络上找到三种mod_fcgid的版本：<br />
(1) 在http://www.apachelounge.com/download/上列出的两个mod_fcgid-2.2b-w32.zip(用于Apache 2.2.9+)和 mod_fcgid-2.2a-w32.zip(用于Apache 2.2.0到2.2.8)，作者好像是Steffen。<br />
(2) 在http://fastcgi.coremail.cn/index.cn.htm(现在无法访问了)上也有一个mod_fcgid，作者的信息我只在ChinaUnix找到一个帖子http://bbs3.chinaunix.net/thread-320106-1-1.html，有人说跟上面的是同一个，但因为网站无法访问，所以没有办法看到。<br />
(3) 最后一个就是你写的mod_fcgid了，官方地址是http://httpd.apache.org/mod_fcgid/，现在的版本是2.3.4，详细文档地址是http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html。<br />
因为想在实际的项目中使用mod_fcgid加载PHP，所以还望解答我的疑问，非常感谢！<br />
顺颂商祺！<br />
马志勇 (Jet Ma)<br />
=========================<br />
Hi, 马先生<br />
    （1）其实是专门维护Windows版Apache的一位外国朋友做的，源代码也是来自标准的mod_fcgid, 不过Steffen维护的是Windows版的编译好的mod_fcgid.so，方便大家直接使用（Windows很多人没有安装编译工具，直接给源代码大家基本上没多少人可以用的上)<br />
   (2) 之前做mod_fcgid的时候，代码和文档一直放在这里的，但是后来代码捐献了给Apache之后，这里就不再维护了，另外最近公司服务器做了一些调整，我也改不了redirect到apache网站了<br />
   (3) 这是当前官方的mod_fcgid, 维护的是最新最稳定的mod_fcgid, Apache软件基金会的程序员（我也是其中之一）正在维护这个项目，如果您有什么问题，可以直接在Apache的邮件列表提出的（不过使用问题最好不要在开发邮件列表提出了)</p>
<p>Thanks
</p></blockquote>
<p>参考资料：<br />
<a href="http://blog.chinaunix.net/u/31839/showart_2057531.html" target="_blank">mod_fastcgi和mod_fcgid的区别</a><br />
<a href="http://purpen.javaeye.com/blog/68318" target="_blank">Windows 下 Apache 1.3 以 FastCGI 模式运行 PHP</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/06/20/1513177.html" rel="bookmark" class="crp_title">Apache和Resin产生大容量日志的解决办法</a></li><li><a href="http://www.javatang.com/archives/2008/01/22/0615259.html" rel="bookmark" class="crp_title">解决Apache出现的CPU高占用率的问题</a></li><li><a href="http://www.javatang.com/archives/2006/08/21/010658.html" rel="bookmark" class="crp_title">Resin 3.0.x 经验总结</a></li><li><a href="http://www.javatang.com/archives/2011/09/20/2831546.html" rel="bookmark" class="crp_title">Apache+Resin发布程序时一直出现403错误的解决办法</a></li><li><a href="http://www.javatang.com/archives/2008/10/18/1942276.html" rel="bookmark" class="crp_title">Apache+Resin下如何写伪静态和301跳转</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/01/07/3629356.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subversion和Apache的安装使用指南</title>
		<link>http://www.javatang.com/archives/2009/12/31/2139330.html</link>
		<comments>http://www.javatang.com/archives/2009/12/31/2139330.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 05:21:39 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[JavaPlateform]]></category>
		<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=330</guid>
		<description><![CDATA[虽然Subversion(SVN)直接可以注册为服务程序，但是最方便的还是使用SVN+Apache的方式，因为可以无防火墙限制、方便直接使用浏览器对代码进行浏览等等。下面我就将自己在Windows下安装Subversion(SVN)和Apache的方法记录一下： 1. 从Apache网站上下载Apache的安装包进行安装，这个过程比较简单。需要注意Apache的版本，本文采用2.2，当然也可以使用2.0版本。假定Apache的安装目录为D:\apache2。 2. 在http://subversion.tigris.org/官方下载Subversion的Windows下面与Apache的配合版本，这里需要注意Apache的版本，2.0和2.2的是不一样的，不要下载错了。 然后将下载下来的zip包解压缩到一个目录，比如D:\svn-win32-1.6.6。 3. 将svn安装目录的bin目录下面的mod_authz_svn.so和mod_dav_svn.so两个文件拷贝到Apache安装目录的modules目录下面，然后修改Apache的配置文件httpd.conf，将下面两行的注释去掉： LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_module modules/mod_dav.so 同时在下面增加两行： LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 4. 接下来就是对SVN进行配置了，配置文件(包含每条的含义)如下： # 表示访问SVN的地址，形式为http:///svn &#60;Location /svn&#62; # 告诉Apache哪个模块负责服务像那样的URL－－在这里就是Subversion模块 DAV svn # 在Subversion 1.3及更高版本中，这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库 SVNListParentPath on # 下面制定SVN仓库的位置，有两种选择： # (1) 单库：一个Apache下面只有一个SVN仓库，这样的话就使用SVNPath来指定唯一的仓库位置，访问仓库的方式是http:///svn # (2) 多库：一个Apache下面可以有多个SVN仓库，这样的话就使用SVNParentPath来指定所有仓库所在的主目录，访问仓库的方式是http:///svn/仓库1、http:///svn/仓库2等等 SVNPath “D:\Data\SVNData\repository” #SVNParentPath “D:\Data\SVNData\repository” # 当一个验证对话框弹出时，告诉用户这个验证是用来做什么的 AuthName “Subversion repositories” # 启用基本的验证，比如用户名/密码对，通常来做这样做就已经足够了。 [...]]]></description>
			<content:encoded><![CDATA[<p>虽然Subversion(SVN)直接可以注册为服务程序，但是最方便的还是使用SVN+Apache的方式，因为可以无防火墙限制、方便直接使用浏览器对代码进行浏览等等。下面我就将自己在Windows下安装Subversion(SVN)和Apache的方法记录一下：</p>
<p>1. 从Apache网站上下载Apache的安装包进行安装，这个过程比较简单。需要注意Apache的版本，本文采用2.2，当然也可以使用2.0版本。假定Apache的安装目录为D:\apache2。</p>
<p>2. 在<a href="http://subversion.tigris.org/getting.html#windows" target="_blank">http://subversion.tigris.org/</a>官方下载Subversion的Windows下面与Apache的配合版本，这里需要注意Apache的版本，2.0和2.2的是不一样的，不要下载错了。<br />
<img src="http://www.javatang.com/wp-content/Tigris.org_svn.png" alt="" title="Tigris.org_svn"  class="alignnone size-medium wp-image-332" /><br />
然后将下载下来的zip包解压缩到一个目录，比如D:\svn-win32-1.6.6。</p>
<p>3. 将svn安装目录的bin目录下面的mod_authz_svn.so和mod_dav_svn.so两个文件拷贝到Apache安装目录的modules目录下面，然后修改Apache的配置文件httpd.conf，将下面两行的注释去掉：</p>
<blockquote><p>
LoadModule dav_fs_module modules/mod_dav_fs.so<br />
LoadModule dav_module modules/mod_dav.so
</p></blockquote>
<p>同时在下面增加两行：</p>
<blockquote><p>
LoadModule dav_svn_module modules/mod_dav_svn.so<br />
LoadModule authz_svn_module modules/mod_authz_svn.so
</p></blockquote>
<p>4. 接下来就是对SVN进行配置了，配置文件(包含每条的含义)如下：</p>
<blockquote><p>
# 表示访问SVN的地址，形式为http://<your_domain>/svn<br />
&lt;Location /svn&gt;<br />
    # 告诉Apache哪个模块负责服务像那样的URL－－在这里就是Subversion模块<br />
    DAV svn<br />
    # 在Subversion 1.3及更高版本中，这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库<br />
    SVNListParentPath on<br />
    # 下面制定SVN仓库的位置，有两种选择：<br />
   # (1) 单库：一个Apache下面只有一个SVN仓库，这样的话就使用SVNPath来指定唯一的仓库位置，访问仓库的方式是http://<your_domain>/svn<br />
   # (2) 多库：一个Apache下面可以有多个SVN仓库，这样的话就使用SVNParentPath来指定所有仓库所在的主目录，访问仓库的方式是http://<your_domain>/svn/仓库1、http://<your_domain>/svn/仓库2等等<br />
    SVNPath “D:\Data\SVNData\repository”<br />
    #SVNParentPath “D:\Data\SVNData\repository”</p>
<p>    # 当一个验证对话框弹出时，告诉用户这个验证是用来做什么的<br />
    AuthName “Subversion repositories”<br />
    # 启用基本的验证，比如用户名/密码对，通常来做这样做就已经足够了。<br />
    AuthType Basic<br />
    # 指定密码文件的位置，密码文件中存放了用来验证用户的用户名和密码信息。这个文件的生成方式在后续步骤中会介绍<br />
    AuthUserFile “D:\Data\SVNData\config\passwd”<br />
    # 对版本库和人员进行权限分配，后面会进行详细的设置和介绍。<br />
    AuthzSVNAccessFile “D:\Data\SVNData\config\svnaccessfile”</p>
<p>    # 限定用户只有输入正确的用户名及密码后才能访问这个路径<br />
    Require valid-user<br />
    # 如果想匿名读取的话使用下面的方式<br />
    #&lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;<br />
    #Require valid-user<br />
    #&lt;/LimitExcept&gt;<br />
&lt;/Location&gt;
</p></blockquote>
<p>5. 接下来使用Apache中的htpasswd.exe命令来生成密码文件，也就是上面AuthUserFile 设置项所指向的文件，切换到Apache安装目录的bin目录下，指向下面的命令：</p>
<blockquote><p>
# 后面的参数c表示新建文件，在第一次执行的时候使用<br />
htpasswd -c D:\Data\SVNData\config\passwd &lt;username&gt;<br />
# 如果是追加新用户或修改原有用户密码，命令后面不加参数c<br />
htpasswd D:\Data\SVNData\config\passwd &lt;username&gt;
</p></blockquote>
<p>每次执行命令之后会提示输入两遍密码</p>
<p>6. 这个时候如果重启Apache的话会出现一个错误提示，这个是因为svn所使用的一些dll文件apache还无法获取，解决的方法可以将svn安装目录的bin目录下面的dll文件拷贝到系统的system32目录下面，但最好的方式是将bin目录加入到path环境变量中。</p>
<p>7. 这个时候如果访问http://<your_domain>/svn的话，应该会出现一个登录框，输入用户名/密码之后就可以看到SVN仓库的内容了。不过常见下面的几个错误：<br />
(1) 出现“403 Forbidden”错误<br />
出现这个错误的原因有很多种，比如Apache2.2相对于之前的版本来说增强了安全性，默认情况下目录是禁止访问的，将“&lt;Directory /&gt;”修改如下：</p>
<blockquote><p>
&lt;Directory /&gt;<br />
    Options FollowSymLinks<br />
    AllowOverride None<br />
    Order deny,allow<br />
    Allow from all<br />
&lt;/Directory&gt;
</p></blockquote>
<p>如果这样还不行的话那就是“多库还是单库”的问题了。上面讲过，在对SVN进行配置的时候，使用SVNParentPath设置所有库的根目录，在根目录下面存放多个SVN的库，那这样的话直接访问父目录是没有权限的，只能通过http://<your_domain>/svn/project1来访问对应的项目仓库；如果使用SVNPath设置为单库的话则不会出现这个错误了。</p>
<p>(2) 出现“&lt;m:human-readable errcode=”720003&#8243;&gt;Could not open the requested SVN filesystem&lt;/m:human-readable&gt;”错误<br />
出现这个错误是告诉你你所指定的SVN仓库的位置并不是一个合法的SVN仓库，解决的方法是首先创建一个空目录，然后使用“svnadmin create”命令来创建SVN库：</p>
<blockquote><p>
# 首先进入 D:\Data\SVNData\repository 目录下<br />
md project1<br />
svnadmin create D:\Data\SVNData\repository\project1
</p></blockquote>
<p>8. 最后安装SVN客户端就可以访问啦，Eclipse集成的客户端推荐使用<a href="http://subclipse.tigris.org/" target="_blank">Subclipse</a>，Visual Studio集成的客户端推荐使用<a href="http://ankhsvn.open.collab.net/" target="_blank">ankhsvn</a>，系统集成的客户端推荐使用<a href="http://tortoisesvn.tigris.org/" target="_blank">TortoiseSVN</a>。</p>
<p>参考资料：<br />
<a href="http://bbs.iusesvn.com/thread-158-1-1.html" target="_blank">[翻译] windows安装基于Apache的SVN服务器(包括SSL配置)</a><br />
<a href="http://www.iusesvn.com/bbs/thread-157-1-1.html" target="_blank">基于svnserve的服务器，权限文件authz配置的常见问题及解答</a><br />
<a href="http://www.svnforum.org/2017/viewtopic.php?p=876" target="_blank">Forbidden access or bad repository ?</a><br />
<a href="http://alexclark.itpub.net/post/670/5647" target="_blank">Subversion for Windows 安裝指南</a> </p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/03/30/1025157.html" rel="bookmark" class="crp_title">Windows下安装zip包版本的MySQL</a></li><li><a href="http://www.javatang.com/archives/2010/07/11/4201420.html" rel="bookmark" class="crp_title">彻底修改Google Chrome浏览器的安装目录</a></li><li><a href="http://www.javatang.com/archives/2008/02/19/0801260.html" rel="bookmark" class="crp_title">Windows NT系统下的Apache性能优化</a></li><li><a href="http://www.javatang.com/archives/2010/12/01/2805477.html" rel="bookmark" class="crp_title">Apache2.x中设置gzip</a></li><li><a href="http://www.javatang.com/archives/2010/11/23/5817513.html" rel="bookmark" class="crp_title">Spring MVC中修改校验的异常信息</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2009/12/31/2139330.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.javatang.com @ 2012-02-11 09:56:21 -->
