<?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>Marshal&#039;s Blog &#187; apache</title>
	<atom:link href="http://marshal.easymorse.com/archives/tag/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://marshal.easymorse.com</link>
	<description>It&#039;s swap of marshal&#039;s memory.</description>
	<lastBuildDate>Mon, 30 Jan 2012 07:03:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>在浏览器查看svn中代码的解决方案</title>
		<link>http://marshal.easymorse.com/archives/2436?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8%25e6%25b5%258f%25e8%25a7%2588%25e5%2599%25a8%25e6%259f%25a5%25e7%259c%258bsvn%25e4%25b8%25ad%25e4%25bb%25a3%25e7%25a0%2581%25e7%259a%2584%25e8%25a7%25a3%25e5%2586%25b3%25e6%2596%25b9%25e6%25a1%2588</link>
		<comments>http://marshal.easymorse.com/archives/2436#comments</comments>
		<pubDate>Mon, 29 Mar 2010 04:34:15 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/2436</guid>
		<description><![CDATA[重新安装svn+apache以后，发现一个问题，比如java源代码，现在是通过浏览器下载，而不是直接在浏览器中展示了。 以前是怎么做的呢？想不起来了。文档啊文档，很重要的。现在重新想办法吧。 最简单的办法：apache强制mime类型 其实最简单的办法，是借助apache 核心模块的指令ForceType，见： http://httpd.apache.org/docs/2.2/mod/core.html#forcetype 可以强制配置mime类型，比如： &#60;Location /svn&#62; &#160;&#160;&#160; &#8230; &#160;&#160;&#160; ForceType text/plain &#60;/Location&#62; &#160; 这样就可以在浏览器看源代码文本了，但是也有副作用，比如二进制文件怎么办，比如html页面，应该在浏览器中展示而不是显示代码。 subversion hook：在提交的时候触发服务器端程序写mime类型 subversion提供了hook，钩子，可以在比如提交前执行钩子脚本。 利用这个特性，可以在提交前，比如发电子邮件，比如检查是否写log message了。 当然，也可以在提交前，改mime type，可以按照这个python脚本改写： http://pear.reversefold.com/dokuwiki/svn:pre-commit 但是，subversion不建议这样做，因为，所有hook操作，最好不再修改提交的文本，只做只读的操作。如果做写文本或者属性的操作，svn用户的local work copy，将和服务器端不一致。比如我提交一个java文件，没有设置mime type，提交到svn，将触发svn hook，比如修改为text/plain，然后提交到svn库中，这时库中的记录和该用户的work copy不一致。可能会带来很多其他不可预知的问题。 svn自带的手动设置mime类型方式 svn可以为提交的文件定义mime类型，比如这样： $ svn propset svn:mime-type image/jpeg foo.jpg property 'svn:mime-type' set on 'foo.jpg' &#160; 如果是在tortoiseSVN客户端，可以通过交互界面实现类似的功能，而且还可以递归操作： 缺点是，无法根据扩展名做区分。比如目录下有jpg，也有java文件，这个操作将所有文件都增加了text/plain mime类型。 eclipse的svn插件，subclipse也有类似功能。 svn提供的自动设置mime类型方式 在svn客户端，有个config文件，在windos xp，路径应该是： C:\Documents and Settings\user_name\Application [...]]]></description>
			<content:encoded><![CDATA[<p>重新安装svn+apache以后，发现一个问题，比如java源代码，现在是通过浏览器下载，而不是直接在浏览器中展示了。</p>
<p>以前是怎么做的呢？想不起来了。文档啊文档，很重要的。现在重新想办法吧。</p>
<h4>最简单的办法：apache强制mime类型</h4>
<p>其实最简单的办法，是借助apache 核心模块的指令<em>ForceType</em>，见：</p>
<blockquote><p><a href="http://httpd.apache.org/docs/2.2/mod/core.html#forcetype">http://httpd.apache.org/docs/2.2/mod/core.html#forcetype</a></p>
</blockquote>
<p>可以强制配置mime类型，比如：</p>
<blockquote><p>&lt;Location /svn&gt;     <br />&#160;&#160;&#160; &#8230;      <br />&#160;&#160;&#160; ForceType text/plain      <br />&lt;/Location&gt;</p>
<p>&#160;</p>
</blockquote>
<p>这样就可以在浏览器看源代码文本了，但是也有副作用，比如二进制文件怎么办，比如html页面，应该在浏览器中展示而不是显示代码。</p>
<p> <span id="more-2436"></span><br />
<h4>subversion hook：在提交的时候触发服务器端程序写mime类型</h4>
<p>subversion提供了hook，钩子，可以在比如提交前执行钩子脚本。</p>
<p>利用这个特性，可以在提交前，比如发电子邮件，比如检查是否写log message了。</p>
<p>当然，也可以在提交前，改mime type，可以按照这个python脚本改写：</p>
<blockquote><p><a href="http://pear.reversefold.com/dokuwiki/svn:pre-commit">http://pear.reversefold.com/dokuwiki/svn:pre-commit</a></p>
</blockquote>
<p>但是，subversion不建议这样做，因为，所有hook操作，最好不再修改提交的文本，只做只读的操作。如果做写文本或者属性的操作，svn用户的local work copy，将和服务器端不一致。比如我提交一个java文件，没有设置mime type，提交到svn，将触发svn hook，比如修改为text/plain，然后提交到svn库中，这时库中的记录和该用户的work copy不一致。可能会带来很多其他不可预知的问题。</p>
<h4>svn自带的手动设置mime类型方式</h4>
<p>svn可以为提交的文件定义mime类型，比如这样：</p>
<blockquote><pre>$ svn propset svn:mime-type image/jpeg foo.jpg
property 'svn:mime-type' set on 'foo.jpg'</pre>
<p>&#160;</p>
</blockquote>
<p>如果是在tortoiseSVN客户端，可以通过交互界面实现类似的功能，而且还可以递归操作：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/03/image41.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/03/image_thumb41.png" width="284" height="250" /></a> </p>
<p>缺点是，无法根据扩展名做区分。比如目录下有jpg，也有java文件，这个操作将所有文件都增加了text/plain mime类型。</p>
<p>eclipse的svn插件，subclipse也有类似功能。</p>
<h4>svn提供的自动设置mime类型方式</h4>
<p>在svn客户端，有个config文件，在windos xp，路径应该是：</p>
<blockquote>
<p>C:\Documents and Settings\user_name\Application Data\Subversion\config</p>
</blockquote>
<p>如果想让java代码的mime类型是text，可以这样写：</p>
<blockquote>
<p>enable-auto-props = yes </p>
<p>[auto-props]<br />
    <br />*.java=svn:mime-type=text/plain</p>
<p>&#160;</p>
</blockquote>
<p>这样，每次提交代码的时候，svn会自动将mime-type设置为text。不需要上面的手工设置了。</p>
<p>缺点是，需要维护一个config配置文件，比如很多开发人员，各种不同的环境，都需要事先做这样一个配置。</p>
<h4>希望有这样的解决方案</h4>
<p>比如，google code，用户提交上去的代码，自动就以text方式在浏览器端展示，不需要设置svn的配置文件。而且，用户可以手工设置mime type，比如有个html页面，如果设置成text/plain，则在浏览器中显示的是html源代码，如果设置为text/html，则显示的是页面的效果。</p>
<p>目前还没有找到这样的办法，估计要在apache设置方面做些工作。</p>
<blockquote>
<p><font style="background-color: #ffffff">&#160;</font></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/2436/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在ubuntu下安装websvn</title>
		<link>http://marshal.easymorse.com/archives/2282?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8ubuntu%25e4%25b8%258b%25e5%25ae%2589%25e8%25a3%2585websvn</link>
		<comments>http://marshal.easymorse.com/archives/2282#comments</comments>
		<pubDate>Wed, 24 Feb 2010 03:13:36 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[websvn]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/2282</guid>
		<description><![CDATA[使用apache+svn的方式，可以通过浏览器访问，但是这次比如xml和java文件都要下载，而不能在浏览器中直接显示。 忘记在哪个里面修改了，还是因为svn版本升级的问题。 试试websvn，通过apt-get，虽然不是最新版本，但是安装很简单，使用也方便。 安装： sudo apt-get install websvn 访问也很简单，直接： http://ip/websvn websvn截图： 这是源代码显示的截图：]]></description>
			<content:encoded><![CDATA[<p>使用apache+svn的方式，可以通过浏览器访问，但是这次比如xml和java文件都要下载，而不能在浏览器中直接显示。</p>
<p>忘记在哪个里面修改了，还是因为svn版本升级的问题。</p>
<p>试试websvn，通过apt-get，虽然不是最新版本，但是安装很简单，使用也方便。</p>
<p>安装：</p>
<blockquote><p>sudo apt-get install websvn</p>
</blockquote>
<p>访问也很简单，直接：</p>
<blockquote><p><font style="background-color: #ffffff"><a href="http://ip/websvn">http://ip/websvn</a></font></p>
</blockquote>
<p>websvn截图：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/02/image11.png" rel="lightbox"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/02/image_thumb11.png" width="467" height="203" /></a> </p>
<p> <span id="more-2282"></span>
<p>这是源代码显示的截图：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/02/image12.png" rel="lightbox"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/02/image_thumb12.png" width="465" height="282" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/2282/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在ubuntu下使用svnmanager集成svn和apache</title>
		<link>http://marshal.easymorse.com/archives/2276?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8ubuntu%25e4%25b8%258b%25e4%25bd%25bf%25e7%2594%25a8svnmanager%25e9%259b%2586%25e6%2588%2590svn%25e5%2592%258capache</link>
		<comments>http://marshal.easymorse.com/archives/2276#comments</comments>
		<pubDate>Tue, 23 Feb 2010 08:13:20 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svnmanager]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/2276</guid>
		<description><![CDATA[集成svn和apache，使用了svnmanager。如果纯手工的配置，很麻烦，而且，密码也不好管理。 首先，需要安装一下基本的软件和包： sudo apt-get install apache2 libapache2-mod-python libapache2-svn python-setuptools subversion python-subversion 另外，svnmanager需要php的支持，需要安装pear： sudo apt-get install php-pear 安装svnmanager所需的库： sudo pear install VersionControl_SVN-0.3.3 下载svnmanager的包： wget http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.08.tar.gz 之后，按照svnmanager的安装进行，基本可以将svn和apache集成起来。见： http://svnmanager.org/index.php?page=install 这里需要注意，如果ubuntu是用中文安装的，那么locale应该： $lang&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = &#34;zh_CN.UTF-8&#34;; 需要将svnmanager目录设置为apache用户所有，否则访问中会有问题。 另外，需要创建数据库，我这里使用mysql。]]></description>
			<content:encoded><![CDATA[<p>集成svn和apache，使用了svnmanager。如果纯手工的配置，很麻烦，而且，密码也不好管理。</p>
<p>首先，需要安装一下基本的软件和包：</p>
<blockquote><p>sudo apt-get install apache2 libapache2-mod-python libapache2-svn python-setuptools subversion python-subversion</p>
</blockquote>
<p>另外，svnmanager需要php的支持，需要安装pear：</p>
<blockquote><p>sudo apt-get install php-pear</p>
</blockquote>
<p>安装svnmanager所需的库：</p>
<blockquote><p>sudo pear install VersionControl_SVN-0.3.3</p>
</blockquote>
<p>下载svnmanager的包：</p>
<blockquote><p>wget <a href="http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.08.tar.gz">http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.08.tar.gz</a></p>
</blockquote>
<p>之后，按照svnmanager的安装进行，基本可以将svn和apache集成起来。见：</p>
<blockquote><p><a href="http://svnmanager.org/index.php?page=install">http://svnmanager.org/index.php?page=install</a></p>
</blockquote>
<p>这里需要注意，如果ubuntu是用中文安装的，那么locale应该：</p>
<blockquote><p>$lang&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = &quot;zh_CN.UTF-8&quot;;</p>
</blockquote>
<p> <span id="more-2276"></span>
<p>需要将svnmanager目录设置为apache用户所有，否则访问中会有问题。</p>
<p>另外，需要创建数据库，我这里使用mysql。</p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/2276/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>使用h264 http伪流传输视频</title>
		<link>http://marshal.easymorse.com/archives/1821?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8h264-http%25e4%25bc%25aa%25e6%25b5%2581%25e4%25bc%25a0%25e8%25be%2593%25e8%25a7%2586%25e9%25a2%2591</link>
		<comments>http://marshal.easymorse.com/archives/1821#comments</comments>
		<pubDate>Tue, 17 Nov 2009 12:50:53 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[h264]]></category>
		<category><![CDATA[流媒体]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1821</guid>
		<description><![CDATA[h264流模块（h264 streaming module）可以提供通过h264编码的伪流http传输。该模块见： http://h264.code-shop.com/trac 2007年底adobe宣布flash播放器支持h264，这样可以使用该编码格式更高质量和更低带宽播放视频。 h264流模块可集成到web服务器apache/lighttpd/nginx中，提供如下特性： 时间跳转查找：允许播放器即时跳转到视频的任意部分，不论视频有多长，是否已经下载； 虚拟视频片段：可只播放大的视频片段的部分，或者下载它； 网络效率：下一个版本会加入带宽调整特性，支持根据指定带宽通过网络播放； 编码：如果已经有mpeg4/h264编码的文件，不需要再重新编码。 另外，h264编码文件应该不需要像flv文件那样做metadata处理，见： http://www.longtailvideo.com/support/forum/General-Chat/15805/Inject-metadata-in-h-264-files- 安装h264 streaming module到apache很简单，见： http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Apache-Version2 测试该模块是否生效，见： http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Testing-Version2 可下载上面链接中的test.mp4，通过wget命令，文件比较大，42MB，然后将该文件部署到apache的web根目录下，并通过wget下载，带参数，比如start和end，这样截取该时间段内的视频并下载，容量会减少。就说明该模块生效了。 下面在我的日志中测试一下，已经将test.mp4上传到网站的根目录下，可这样访问： http://marshal.easymorse.com/test.mp4 如果使用fv wordpress flowplayer插件，效果如下：]]></description>
			<content:encoded><![CDATA[<p>h264流模块（h264 streaming module）可以提供通过h264编码的伪流http传输。该模块见：</p>
<blockquote><p><a href="http://h264.code-shop.com/trac">http://h264.code-shop.com/trac</a></p></blockquote>
<p>2007年底adobe宣布flash播放器支持h264，这样可以使用该编码格式更高质量和更低带宽播放视频。</p>
<p>h264流模块可集成到web服务器apache/lighttpd/nginx中，提供如下特性：</p>
<ul>
<li>时间跳转查找：允许播放器即时跳转到视频的任意部分，不论视频有多长，是否已经下载；</li>
<li>虚拟视频片段：可只播放大的视频片段的部分，或者下载它；</li>
<li>网络效率：下一个版本会加入带宽调整特性，支持根据指定带宽通过网络播放；</li>
<li>编码：如果已经有mpeg4/h264编码的文件，不需要再重新编码。</li>
</ul>
<p><span id="more-1821"></span></p>
<p>另外，h264编码文件应该不需要像flv文件那样做metadata处理，见：</p>
<blockquote><p><a href="http://www.longtailvideo.com/support/forum/General-Chat/15805/Inject-metadata-in-h-264-files-">http://www.longtailvideo.com/support/forum/General-Chat/15805/Inject-metadata-in-h-264-files-</a></p></blockquote>
<p>安装h264 streaming module到apache很简单，见：</p>
<blockquote><p><a href="http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Apache-Version2">http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Apache-Version2</a></p></blockquote>
<p>测试该模块是否生效，见：</p>
<blockquote><p><a href="http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Testing-Version2">http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Testing-Version2</a></p></blockquote>
<p>可下载上面链接中的test.mp4，通过wget命令，文件比较大，42MB，然后将该文件部署到apache的web根目录下，并通过wget下载，带参数，比如start和end，这样截取该时间段内的视频并下载，容量会减少。就说明该模块生效了。</p>
<p>下面在我的日志中测试一下，已经将test.mp4上传到网站的根目录下，可这样访问：</p>
<blockquote><p><span style="background-color: #ffffff;"><a href="http://marshal.easymorse.com/test.mp4">http://marshal.easymorse.com/test.mp4</a></span></p></blockquote>
<p>如果使用fv wordpress flowplayer插件，效果如下：</p>
<p><a id="wpfp_be3fa536ce39e52f50fce4e8bbec244e" style="width:530px; height:288px;" class="flowplayer_container"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1821/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://marshal.easymorse.com/test.mp4" length="43678263" type="video/mp4" />
		</item>
		<item>
		<title>在redhat as4下增加ajp proxy</title>
		<link>http://marshal.easymorse.com/archives/1349?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8redhat-as4%25e4%25b8%258b%25e5%25a2%259e%25e5%258a%25a0ajp-proxy</link>
		<comments>http://marshal.easymorse.com/archives/1349#comments</comments>
		<pubDate>Mon, 18 May 2009 03:54:37 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[ajp]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1349</guid>
		<description><![CDATA[使用java重写了用户的php系统。上线采用增量迭代的方式。即每替代一个php功能，就将原php url代理到ajp的java web功能的url上。 配置方式是，增加ajp模块： apxs -c -i mod_proxy_ajp.c ajp*.c 在/usr/apache2/conf/httpd.conf中增加： ProxyPass /path/php_file_name.php ajp://localhost:8009/web_context/funtion_path.html]]></description>
			<content:encoded><![CDATA[<p>使用java重写了用户的php系统。上线采用增量迭代的方式。即每替代一个php功能，就将原php url代理到ajp的java web功能的url上。</p>
<p>配置方式是，增加ajp模块：</p>
<blockquote><p>apxs -c -i mod_proxy_ajp.c ajp*.c </p>
</blockquote>
<p>在/usr/apache2/conf/httpd.conf中增加：<br />
<blockquote>
<p>ProxyPass /path/php_file_name.php ajp://localhost:8009/web_context/funtion_path.html</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1349/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过mod_rewrite解决trac源代码宏的bug</title>
		<link>http://marshal.easymorse.com/archives/1240?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2580%259a%25e8%25bf%2587mod_rewrite%25e8%25a7%25a3%25e5%2586%25b3trac%25e6%25ba%2590%25e4%25bb%25a3%25e7%25a0%2581%25e5%25ae%258f%25e7%259a%2584bug</link>
		<comments>http://marshal.easymorse.com/archives/1240#comments</comments>
		<pubDate>Thu, 02 Apr 2009 09:30:48 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1240</guid>
		<description><![CDATA[trac在使用中一直很正常，除了响应速度慢一点儿外。最近写的trac wiki文档，开始通过/来设置wiki的父子关系。比如/Hibernate编写的是hibernate总的目录wiki页面，/Hibernate/GetStart是其子wiki页面。网站在这里： https://dev.easymorse.com/trac/tutorials/wiki/Hibernate/GetStart 在页面中使用了trac的宏IncludeSource，见安装trac插件IncludeSourcePartial。使用是正常的，但是到trac svn browser的链接不对，应该为： https://dev.easymorse.com/trac/tutorials/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml 可结果是： https://dev.easymorse.com/trac/tutorials/wiki/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml 多了一层目录，应该是browser目录，结果browser目录被生成到wiki目录下了。查看了源代码，发现是该宏的bug，作者可能认为不应出现使用/来表示父子wiki的问题，是通过../来返回上级相对路径，源代码片段见： if kwargs.has_key('header'): header = kwargs.get('header') # user specified header else: href = '../browser/%s%s' % (orig_file_name, make_rev_str(rev)) header = tag.a(file_name, href=href) 源文件见： http://trac-hacks.org/browser/includesourcepartialplugin/0.11/includesource/IncludeSource.py 可以通过改写该宏代码解决问题，但这样以后每次升级trac，都需要使用自定义的includeSource插件，比较麻烦。 使用apache的mod_rewrite模块，将所有*wiki/browser*链接重定向到*browser*，可简单配置如下： RewriteEngine On RewriteRule ^/trac/([^/]*)/wiki/[^/]+/browser(.*) /trac/$1/browser$2 [R]]]></description>
			<content:encoded><![CDATA[<p>trac在使用中一直很正常，除了响应速度慢一点儿外。最近写的trac wiki文档，开始通过/来设置wiki的父子关系。比如/Hibernate编写的是hibernate总的目录wiki页面，/Hibernate/GetStart是其子wiki页面。网站在这里：</p>
<blockquote><p><a title="https://dev.easymorse.com/trac/tutorials/wiki/Hibernate/GetStart" href="https://dev.easymorse.com/trac/tutorials/wiki/Hibernate/GetStart">https://dev.easymorse.com/trac/tutorials/wiki/Hibernate/GetStart</a></p>
</blockquote>
<p><span id="more-1240"></span>
<p>在页面中使用了trac的宏IncludeSource，见<a href="http://marshal.easymorse.com/archives/1205" title="安装trac插件IncludeSourcePartial">安装trac插件IncludeSourcePartial</a>。使用是正常的，但是到trac svn browser的链接不对，应该为：</p>
<blockquote><p><a title="https://dev.easymorse.com/trac/tutorials/wiki/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml" href="https://dev.easymorse.com/trac/tutorials/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml">https://dev.easymorse.com/trac/tutorials/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml</a></p>
</blockquote>
<p>可结果是：</p>
<blockquote><p><a title="https://dev.easymorse.com/trac/tutorials/wiki/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml" href="https://dev.easymorse.com/trac/tutorials/wiki/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml">https://dev.easymorse.com/trac/tutorials/wiki/browser/hibernate/tags/GetStart-1.0/src/main/resources/hibernate.cfg.xml</a></p>
</blockquote>
<p>多了一层目录，应该是browser目录，结果browser目录被生成到wiki目录下了。查看了源代码，发现是该宏的bug，作者可能认为不应出现使用/来表示父子wiki的问题，是通过../来返回上级相对路径，源代码片段见：</p>
</p>
<div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:0c996d6e-e8dd-44eb-8b49-291d56f52bf1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre  style="width:100%;;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #0000FF;">if</span><span style="color: #000000;"> kwargs.has_key(</span><span style="color: #800000;">'</span><span style="color: #800000;">header</span><span style="color: #800000;">'</span><span style="color: #000000;">):
    header </span><span style="color: #000000;">=</span><span style="color: #000000;"> kwargs.get(</span><span style="color: #800000;">'</span><span style="color: #800000;">header</span><span style="color: #800000;">'</span><span style="color: #000000;">)   </span><span style="color: #008000;">#</span><span style="color: #008000;"> user specified header</span><span style="color: #008000;">
</span><span style="color: #0000FF;">else</span><span style="color: #000000;">:
    href </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">'</span><span style="color: #800000;">../browser/%s%s</span><span style="color: #800000;">'</span><span style="color: #000000;"> </span><span style="color: #000000;">%</span><span style="color: #000000;"> (orig_file_name, make_rev_str(rev))
    header </span><span style="color: #000000;">=</span><span style="color: #000000;"> tag.a(file_name, href</span><span style="color: #000000;">=</span><span style="color: #000000;">href)</span></div>
</pre>
</div>
<p>源文件见：</p>
<blockquote>
<p><a href="http://trac-hacks.org/browser/includesourcepartialplugin/0.11/includesource/IncludeSource.py">http://trac-hacks.org/browser/includesourcepartialplugin/0.11/includesource/IncludeSource.py</a></p>
</blockquote>
<p>可以通过改写该宏代码解决问题，但这样以后每次升级trac，都需要使用自定义的includeSource插件，比较麻烦。</p>
<p>使用apache的mod_rewrite模块，将所有*wiki/browser*链接重定向到*browser*，可简单配置如下：</p>
<div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:70892a1c-b711-420c-b8ae-59e7e876f42d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre  style="width:100%;;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">RewriteEngine On
RewriteRule ^/trac/(</span><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">^/</span><span style="color: #800000; font-weight: bold;">]</span><span style="color: #000000;">*)/wiki/</span><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">^/</span><span style="color: #800000; font-weight: bold;">]</span><span style="color: #000000;">+/browser(.*) /trac/$</span><span style="color: #000000;">1</span><span style="color: #000000;">/browser$</span><span style="color: #000000;">2</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">R</span><span style="color: #800000; font-weight: bold;">]</span></div>
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1240/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用mod_rewrite重定向</title>
		<link>http://marshal.easymorse.com/archives/1239?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8mod_rewrite%25e9%2587%258d%25e5%25ae%259a%25e5%2590%2591</link>
		<comments>http://marshal.easymorse.com/archives/1239#comments</comments>
		<pubDate>Thu, 02 Apr 2009 08:51:44 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[建站笔记]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1239</guid>
		<description><![CDATA[以前写java代码，可以通过servlet的重定向或者使用rewrite filter。这回要调整trac的url，只能使用apache的mod_rewrite。先做了一个简单的测试，即对http://www.easymorse.com/forum做重定向，当访问http://www.easymorse.com/时重定向到forum。 配置很简单： RewriteEngine OnRewriteRule ^/$ /forum [R] 因为是站内重定向，所以无需浏览器发起两次请求。]]></description>
			<content:encoded><![CDATA[<p>以前写java代码，可以通过servlet的重定向或者使用<a href="http://tuckey.org/urlrewrite/">rewrite filter</a>。这回要调整trac的url，只能使用apache的mod_rewrite。先做了一个简单的测试，即对<a href="http://www.easymorse.com/forum">http://www.easymorse.com/forum</a>做重定向，当访问<a href="http://www.easymorse.com/">http://www.easymorse.com/</a>时重定向到forum。</p>
<p><span id="more-1239"></span>
<p>配置很简单：</p>
<blockquote><p>RewriteEngine On<br />RewriteRule ^/$ /forum [R]</p>
</blockquote>
<p>因为是站内重定向，所以无需浏览器发起两次请求。</p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache设置匿名用户浏览权限</title>
		<link>http://marshal.easymorse.com/archives/1230?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apache%25e8%25ae%25be%25e7%25bd%25ae%25e5%258c%25bf%25e5%2590%258d%25e7%2594%25a8%25e6%2588%25b7%25e6%25b5%258f%25e8%25a7%2588%25e6%259d%2583%25e9%2599%2590</link>
		<comments>http://marshal.easymorse.com/archives/1230#comments</comments>
		<pubDate>Thu, 26 Mar 2009 10:07:47 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1230</guid>
		<description><![CDATA[apache设置访问权限以后，比如在和svn集成的情况中，某个tags或者目录需要允许匿名用户访问，会提示需要用户和密码。解决办法是，在配置文件中增加： Satisfy All 或者： Satisfy Any 二者有区别，具体配置细节，见： http://httpd.apache.org/docs/2.2/mod/core.html#satisfy]]></description>
			<content:encoded><![CDATA[<p>apache设置访问权限以后，比如在和svn集成的情况中，某个tags或者目录需要允许匿名用户访问，会提示需要用户和密码。解决办法是，在配置文件中增加：</p>
<blockquote><p>Satisfy All</p>
</blockquote>
<p>或者：</p>
<blockquote><p>Satisfy Any</p>
</blockquote>
<p>二者有区别，具体配置细节，见：</p>
<blockquote><p><a href="http://httpd.apache.org/docs/2.2/mod/core.html#satisfy">http://httpd.apache.org/docs/2.2/mod/core.html#satisfy</a></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在ubuntu下为apache增加ssl支持</title>
		<link>http://marshal.easymorse.com/archives/951?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8ubuntu%25e4%25b8%258b%25e4%25b8%25baapache%25e5%25a2%259e%25e5%258a%25a0ssl%25e6%2594%25af%25e6%258c%2581</link>
		<comments>http://marshal.easymorse.com/archives/951#comments</comments>
		<pubDate>Wed, 03 Dec 2008 08:14:10 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/951</guid>
		<description><![CDATA[首先需要确保apache安装成功，正常配置和运行。 安装必要的软件 安装openssl： apt-get install openssl 安装ssl-cert： apt-get install ssl-cert 加载apache ssl模块 加载apache ssl模块： a2enmod ssl 创建apache下的ssl目录： mkdir /etc/apache2/ssl 创建证书相关文件 进入/etc/apache2/ssl目录，创建私鈅，需要输入两次相同的关键字： openssl genrsa -des3 -out my-server.key 1024 创建证书： openssl req -new -key my-server.key&#160; -x509 -out my-server.crt -config /etc/ssl/openssl.cnf 如果希望延长有效时间默认1个月，可增加参数： -days 3650 创建和运行站点 创建站点文件/etc/apache2/sites-available/ssl，主要内容： NameVirtualHost *:443 &#60;VirtualHost *:443&#62; ServerAdmin webmaster@localhost DocumentRoot /var/www/ &#60;Directory /&#62; Options FollowSymLinks [...]]]></description>
			<content:encoded><![CDATA[<p>首先需要确保apache安装成功，正常配置和运行。</p>
<h3>安装必要的软件</h3>
<p>安装openssl：</p>
<blockquote><p><font color="#333333">apt-get install openssl</font></p>
</blockquote>
<p>安装ssl-cert：</p>
<blockquote><p><font color="#333333">apt-get install ssl-cert</font></p>
</blockquote>
<p> <span id="more-951"></span><br />
<h3>加载apache ssl模块</h3>
<p>加载apache ssl模块：</p>
<blockquote><p>a2enmod ssl</p>
</blockquote>
<p>创建apache下的ssl目录：</p>
<blockquote><p>mkdir /etc/apache2/ssl</p>
</blockquote>
<h3>创建证书相关文件</h3>
<p>进入/etc/apache2/ssl目录，创建私鈅，需要输入两次相同的关键字：</p>
<blockquote><p>openssl genrsa -des3 -out my-server.key 1024</p>
</blockquote>
<p>创建证书：</p>
<blockquote><p>openssl req -new -key my-server.key&#160; -x509 -out my-server.crt -config /etc/ssl/openssl.cnf</p>
</blockquote>
<p>如果希望延长有效时间默认1个月，可增加参数：</p>
<blockquote><p>-days 3650</p>
</blockquote>
<h3>创建和运行站点</h3>
<p>创建站点文件/etc/apache2/sites-available/ssl，主要内容：</p>
<div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:ef14c744-aec5-4af7-a934-f6ff368acfc5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre  style="width:100%;;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">NameVirtualHost *:443
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">VirtualHost </span><span style="color: #FF0000;">*:443</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Directory </span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;">
                Options FollowSymLinks
                AllowOverride None
        </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Directory </span><span style="color: #FF0000;">/var/www</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Directory </span><span style="color: #FF0000;">&quot;/usr/lib/cgi-bin&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ &quot;/usr/share/doc/&quot;
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Directory </span><span style="color: #FF0000;">&quot;/usr/share/doc/&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/my-server.crt
SSLCertificateKeyFile /etc/apache2/ssl/my-server.key

</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">VirtualHost</span><span style="color: #0000FF;">&gt;</span></div>
</pre>
</div>
<p>ssl站点设为可运行：</p>
<blockquote>
<p>a2ensite ssl</p>
</blockquote>
<p>重启apache后，即可以通过https访问。因为是自己生成证书，在通过ie7访问的时候会出现以下情况，选择<em>继续浏览此网站</em>即可。</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2008/12/111.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="176" alt="111" src="http://marshal.easymorse.com/wp-content/uploads/2008/12/111-thumb.png" width="260" border="0" /></a> </p>
<h3>手工导入证书</h3>
<p>如果如上面的方式通过浏览器访问，会在ie7地址栏中有警告：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2008/12/112.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="65" alt="112" src="http://marshal.easymorse.com/wp-content/uploads/2008/12/112-thumb.png" width="260" border="0" /></a> </p>
<p>在google chrome中也会有警告信息：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2008/12/113.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="102" alt="113" src="http://marshal.easymorse.com/wp-content/uploads/2008/12/113-thumb.png" width="253" border="0" /></a> </p>
<p>如果嫌这个比较扎眼（其实不影响使用），可以手工导入证书，将/etc/apache2/ssl/my-server.crt文件发布，供用户下载。下载后双击该文件：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2008/12/114.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="290" alt="114" src="http://marshal.easymorse.com/wp-content/uploads/2008/12/114-thumb.png" width="255" border="0" /></a> </p>
<p>点击：安装证书</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2008/12/115.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="241" alt="115" src="http://marshal.easymorse.com/wp-content/uploads/2008/12/115-thumb.png" width="288" border="0" /></a> </p>
<p>需要选择根证书条目。安装好后，访问即可不再有警告提示。</p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/951/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tomcat与apache的mod_proxy集成</title>
		<link>http://marshal.easymorse.com/archives/1146?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tomcat%25e4%25b8%258eapache%25e7%259a%2584mod_proxy%25e9%259b%2586%25e6%2588%2590</link>
		<comments>http://marshal.easymorse.com/archives/1146#comments</comments>
		<pubDate>Fri, 18 Jul 2008 17:03:37 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_proxy]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1146</guid>
		<description><![CDATA[tomcat可以通过apache的mod_proxy集成apache http server。在ubuntu server下，应该已经安装了mod_proxy模块，如果没有安装，可以： apt-get install libapache2-mod-proxy-html 默认情况下可能没有启用该模块，启用命令： a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp 然后需要重启apache使之生效。 mod_proxy配置文件内容： ProxyPass /jsp-examples ajp://localhost:8009/jsp-examples]]></description>
			<content:encoded><![CDATA[<p>tomcat可以通过apache的mod_proxy集成apache http server。在ubuntu server下，应该已经安装了mod_proxy模块，如果没有安装，可以：</p>
<blockquote><p>apt-get install libapache2-mod-proxy-html</p></blockquote>
<p>默认情况下可能没有启用该模块，启用命令：</p>
<blockquote><p>a2enmod proxy<br />
a2enmod proxy_http<br />
a2enmod proxy_ajp</p></blockquote>
<p><span id="more-1146"></span></p>
<p>然后需要重启apache使之生效。</p>
<p>mod_proxy配置文件内容：</p>
<blockquote><p>ProxyPass /jsp-examples ajp://localhost:8009/jsp-examples</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1146/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

