<?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>AgilePHP &#187; Linux</title>
	<atom:link href="http://www.agilephp.net/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilephp.net</link>
	<description>开发可以敏捷，人生需要慢慢体味</description>
	<lastBuildDate>Fri, 09 Jul 2010 14:37:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在Godaddy的主机上配置CodeIgniter</title>
		<link>http://www.agilephp.net/2010/06/godaddy-and-codeigniter/</link>
		<comments>http://www.agilephp.net/2010/06/godaddy-and-codeigniter/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:56:16 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Godaddy]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[QUERY_STRING]]></category>
		<category><![CDATA[REQUEST_URI]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[vhs]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/06/%e5%9c%a8godaddy%e7%9a%84%e4%b8%bb%e6%9c%ba%e4%b8%8a%e9%85%8d%e7%bd%aecodeigniter/</guid>
		<description><![CDATA[之前在CodeIgniter上部署过一个小的CodeIgniter的应用，参考了这篇文章，当时顺利的完成了部署运行的任务。主要是因为在Godaddy的虚拟主机上使用rewrite模块产生的问题，原因不知道，只知道一种解决问题的办法。主要的步骤为：
在config.php里修改配置，使用QUERY_STRING的方式来解析URL
$config['uri_protocol'] = &#34;QUERY_STRING&#34;; 
然后，修改.htaccess文件，使其内容为如下所示：
RewriteEngine on     RewriteCond %{REQUEST_FILENAME} !-f      RewriteCond %{REQUEST_FILENAME} !-d      RewriteRule ^(.*)$ /index.php?$1 [L] 
这样，某个请求，如http://www.example.com/blog/view/123 ，实际上会被解析成http://www.example.com/index.php?blog/view/123 ，但是，假如我使用的请求必须通过GET方法传参数呢？这种解决方案就不能解决问题了。如http://www.example.com/index.php?blog/view/123?from=1009&#38;author=bbiao ,这个时候就无法通过parse_str($_SERVER['QUERY_STRING'], $_GET);的方法来获得GET的数据了。但是我们可以观察到$_SERVER['REQUEST_URI']里保存了blog/view/123?from=1009&#38;author=bbiao的值，OK，解析一下这个数据就可以了。代码如下：
$arr = explode(&#8216;?&#8217;, $_SERVER['REQUEST_URI']);   parse_str($arr[1], $_GET);
另外说一句，由于CI里是把$_GET的数据清空的，所以才有了以上的这些说法，CI本身是不推荐使用GET来传递参数的，但有时候又不得不用，比如使用OAuth的时候，别人回调你的接口的时候都是这样传的，你能怎么办呢？事情总有解决办法的，现在我的程序在Godaddy上跑的一切正常。










Related Posts

	没有相关文章

<!-- Easy AdSense V2.90 -->
<!-- Post[count: 2] -->
<div class="ezAdsense adsense adsense-leadout" style="float:left;margin:12px;"><script type="text/javascript"><!--
google_ad_client = "pub-1450467177950189";
/* AgilePHP Lite Ad */
google_ad_slot = "7710335250";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<!-- Easy AdSense V2.90 -->



<h3>Related Posts</h3>
<ol>
	<li><a href="http://www.agilephp.net" rel="bookmark">没有相关文章</a></li>
</ol>
]]></description>
			<content:encoded><![CDATA[<p>之前在CodeIgniter上部署过一个小的CodeIgniter的应用，参考了<a href="http://codeigniter.com/wiki/Godaddy_Installaton_Tips/" target="_blank">这篇</a>文章，当时顺利的完成了部署运行的任务。主要是因为在Godaddy的虚拟主机上使用rewrite模块产生的问题，原因不知道，只知道一种解决问题的办法。主要的步骤为：</p>
<p>在config.php里修改配置，使用QUERY_STRING的方式来解析URL</p>
<p><code>$config['uri_protocol'] = &quot;QUERY_STRING&quot;; </code></p>
<p><code>然后，修改.htaccess文件，使其内容为如下所示：</code></p>
<p><code>RewriteEngine on     <br />RewriteCond %{REQUEST_FILENAME} !-f      <br />RewriteCond %{REQUEST_FILENAME} !-d      <br />RewriteRule ^(.*)$ /index.php<font color="#ff0000">?</font>$1 [L] </code></p>
<p><code>这样，某个请求，如<a href="http://www.example.com/blog/view/123">http://www.example.com/blog/view/123</a> ，实际上会被解析成<a href="http://www.example.com/index.php?blog/view/123">http://www.example.com/index.php?blog/view/123</a> ，但是，假如我使用的请求必须通过GET方法传参数呢？这种解决方案就不能解决问题了。如<a href="tp://www.example.com/index.php?blog/view/123?from=1009&amp;author=bbiao">http://www.example.com/index.php?blog/view/123?from=1009&amp;author=bbiao</a> ,这个时候就无法通过parse_str($_SERVER['QUERY_STRING'], $_GET);的方法来获得GET的数据了。但是我们可以观察到$_SERVER['REQUEST_URI']里保存了blog/view/123?from=1009&amp;author=bbiao的值，OK，解析一下这个数据就可以了。代码如下：</code></p>
<p>$arr = explode(&#8216;?&#8217;, $_SERVER['REQUEST_URI']);   <br />parse_str($arr[1], $_GET);</p>
<p>另外说一句，由于CI里是把$_GET的数据清空的，所以才有了以上的这些说法，CI本身是不推荐使用GET来传递参数的，但有时候又不得不用，比如使用OAuth的时候，别人回调你的接口的时候都是这样传的，你能怎么办呢？事情总有解决办法的，现在我的程序在Godaddy上跑的一切正常。</p>
<!-- Easy AdSense V2.90 -->
<!-- Post[count: 3] -->
<div class="ezAdsense adsense adsense-leadout" style="float:left;margin:12px;"><script type="text/javascript"><!--
google_ad_client = "pub-1450467177950189";
/* AgilePHP Lite Ad */
google_ad_slot = "7710335250";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<!-- Easy AdSense V2.90 -->



<h3>Related Posts</h3>
<ol>
	<li><a href="http://www.agilephp.net" rel="bookmark">没有相关文章</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/06/godaddy-and-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xen Cloud Platform 0.1.1</title>
		<link>http://www.agilephp.net/2010/05/xen-cloud-platform-0-1-1/</link>
		<comments>http://www.agilephp.net/2010/05/xen-cloud-platform-0-1-1/#comments</comments>
		<pubDate>Sat, 22 May 2010 01:50:49 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[云计算]]></category>
		<category><![CDATA[虚拟化]]></category>
		<category><![CDATA[xcp]]></category>
		<category><![CDATA[xen]]></category>
		<category><![CDATA[xen cloud platform]]></category>
		<category><![CDATA[xencenter]]></category>
		<category><![CDATA[xenserver]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/05/xen-cloud-platform-0-1-1/</guid>
		<description><![CDATA[Xen Cloud Platform 是一个基本Xen虚拟化技术的云计算基础平台，这半年一直在使用另外一个商业版本XenServer，少对XCP有所关注，今天看了它的官方主页，XCP今年有一个新的版本发布，版本号是0.1.1，我去年使用XCP的时候，其版本还是0.1，这里对新版本做一个简单的介绍。
版本0.1.1发布于今年1月18号（汗，现在才知道），新增加的功能包括：

Openvswitch 
XCP Console Documentation
VNC Console Proxy and Web Front-End 
Standalone Front-End &#8211; *openxencenter*
VM Lifecycle Queuing Deadlock Fixed 
Rare Post-Fork() Spinning XAPI Process Fixed 
Active Directory Authentication Fixes 
Memory Ballooning Fixes

 其中描述的单独的前端就是XenCenter的一个开源Python实现，试用了一下，与XenCenter 5.5还是有一定差距的，但是总算是有一个前端可以选择了，之前用xe cli和Web管理太痛苦了，详细信息和下载，可以到XCP的主页查看。


Related Posts

		Xen Cloud Platform
	


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/12/xen-cloud-platform/" rel="bookmark">Xen Cloud Platform</a><!-- (15.1355)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xen.org/products/cloudxen.html" target="_blank">Xen Cloud Platform</a> 是一个基本Xen虚拟化技术的云计算基础平台，这半年一直在使用另外一个商业版本XenServer，少对XCP有所关注，今天看了它的官方主页，XCP今年有一个新的版本发布，版本号是0.1.1，我去年使用XCP的时候，其版本还是0.1，这里对新版本做一个简单的介绍。</p>
<p>版本0.1.1发布于今年1月18号（汗，现在才知道），新增加的功能包括：</p>
<ul>
<li>Openvswitch </li>
<li>XCP Console <a href="http://foss-boss.blogspot.com/2010/01/taming-xen-cloud-platform-consoles.html">Documentation</a></li>
<li><a href="http://www.xvpsource.org">VNC Console Proxy</a> and Web Front-End </li>
<li><a href="http://www.openxencenter.com">Standalone Front-End</a> &#8211; *openxencenter*</li>
<li>VM Lifecycle Queuing Deadlock Fixed </li>
<li>Rare Post-Fork() Spinning XAPI Process Fixed </li>
<li>Active Directory Authentication Fixes </li>
<li>Memory Ballooning Fixes</li>
</ul>
<p> 其中描述的单独的前端就是XenCenter的一个开源Python实现，试用了一下，与XenCenter 5.5还是有一定差距的，但是总算是有一个前端可以选择了，之前用xe cli和Web管理太痛苦了，详细信息和下载，可以到XCP的<a href="http://www.xen.org/products/cloudxen.html" target="_blank">主页</a>查看。</p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/12/xen-cloud-platform/" rel="bookmark">Xen Cloud Platform</a><!-- (15.1355)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/05/xen-cloud-platform-0-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用JDK进行Performance Tuning</title>
		<link>http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/</link>
		<comments>http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 13:40:41 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[jconsole]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[jmap]]></category>
		<category><![CDATA[jps]]></category>
		<category><![CDATA[jvisualvm]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/04/%e4%bd%bf%e7%94%a8jdk%e8%bf%9b%e8%a1%8cperformance-tuning/</guid>
		<description><![CDATA[JDK里有三个很好用的工具，jmap，jconsole和jvisualvm，三个工具都各有所侧重，但是如果你的系统遇到性能瓶颈（内存不足或是CPU占用率过高），你可以通过这三个工具来发现应用里的hot spot。我今天只记一下大概的用法，给自己做个备忘，详细的使用说明，等忙完了这段时间，整理一下。
先介绍一个小工具，jps，这也是jdk自带的工具之一，可以列出系统里所有的java进程。
jmap可以查看程序中堆的使用情况，具体的用法是：
jmap –histo:live &#60;pid&#62;；
以及可以将堆dump到一个文件，命令是：
jmap –dump:format=b,file=heap.bin &#60;pid&#62;；
请在&#60;pid&#62;处填入相应的进程的id。
jconsole可以查看某个java进程的内存使用、CPU占用率等，
如果想要远程查看某一java程序，则需要在该程序启动参数里加下如下参数：
-Dcom.sun.management.jmxremote   -Dcom.sun.management.jmxremote.port=9001     -Dcom.sun.management.jmxremote.authenticate=false    -Dcom.sun.management.jmxremote.ssl=false
上文使用的9001是监听的端口号，你可以指定其他的值。然后在你的终端键入jconsole，选择连接远程进程，并填入相应的主机名和端口即可。如果无法连接，请修改/etc/hosts里的内容，将localhost绑定到机器的外部ip地址。
相应的数据可以导出为一个csv文件，这个很方便。
jvisualvm功能与jconsole的基本类似，但是可以做性能分析。
即可以分析出CPU时间被哪些线程所占用了，等等，并且它支持jmx，这东西我只听说过没用过，先放一边不表。
配置jvisualvm不需要改动原程序的启动参数，只需要在远程主机上运行jstatd即可。
新建一个叫jstatd.all.policy的文件，内容是：
grant codebase &#34;file:${java.home}/../lib/tools.jar&#34; {   &#160;&#160;&#160; permission java.security.AllPermission;    };
然后使用如下命令启动jstatd，
jstatd -J-Djava.security.policy=jstatd.all.policy
然后在jvisualvm里选择添加远程主机即可。如果无法连接，请修改/etc/hosts里的内容，将localhost绑定到机器的外部ip地址。


Related Posts

		Java中线程同步的简单用法
		Python and RRD
		QQ五笔输入法
	


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/java-wait-and-notify/" rel="bookmark">Java中线程同步的简单用法</a><!-- (5.53993)--></li>
		<li><a href="http://www.agilephp.net/2010/01/python-and-rrd/" rel="bookmark">Python and RRD</a><!-- (4.87102)--></li>
		<li><a href="http://www.agilephp.net/2009/12/qq-wubi-input-method/" rel="bookmark">QQ五笔输入法</a><!-- (4.83449)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>JDK里有三个很好用的工具，<a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html">jmap</a>，<a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html">jconsole</a>和<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jvisualvm.html">jvisualvm</a>，三个工具都各有所侧重，但是如果你的系统遇到性能瓶颈（内存不足或是CPU占用率过高），你可以通过这三个工具来发现应用里的hot spot。我今天只记一下大概的用法，给自己做个备忘，详细的使用说明，等忙完了这段时间，整理一下。</p>
<p>先介绍一个小工具，jps，这也是jdk自带的工具之一，可以列出系统里所有的java进程。</p>
<p><strong>jmap可以查看程序中堆的使用情况，具体的用法是：</strong></p>
<p>jmap –histo:live &lt;pid&gt;；</p>
<p>以及可以将堆dump到一个文件，命令是：</p>
<p>jmap –dump:format=b,file=heap.bin &lt;pid&gt;；</p>
<p>请在&lt;pid&gt;处填入相应的进程的id。</p>
<p><strong>jconsole可以查看某个java进程的内存使用、CPU占用率等，</strong></p>
<p>如果想要远程查看某一java程序，则需要在该程序启动参数里加下如下参数：</p>
<p>-Dcom.sun.management.jmxremote   <br />-Dcom.sun.management.jmxremote.port=<em>9001     <br /></em>-Dcom.sun.management.jmxremote.authenticate=false    <br />-Dcom.sun.management.jmxremote.ssl=false</p>
<p>上文使用的9001是监听的端口号，你可以指定其他的值。然后在你的终端键入jconsole，选择连接远程进程，并填入相应的主机名和端口即可。<em>如果无法连接，请修改/etc/hosts里的内容，将localhost绑定到机器的外部ip地址。</em></p>
<p>相应的数据可以导出为一个csv文件，这个很方便。</p>
<p><strong>jvisualvm功能与jconsole的基本类似，但是可以做性能分析。</strong></p>
<p>即可以分析出CPU时间被哪些线程所占用了，等等，并且它支持<a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/">jmx</a>，这东西我只听说过没用过，先放一边不表。</p>
<p>配置jvisualvm不需要改动原程序的启动参数，只需要在远程主机上运行<a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstatd.html">jstatd</a>即可。</p>
<p>新建一个叫jstatd.all.policy的文件，内容是：</p>
<p>grant codebase &quot;file:${java.home}/../lib/tools.jar&quot; {   <br />&#160;&#160;&#160; permission java.security.AllPermission;    <br />};</p>
<p>然后使用如下命令启动jstatd，</p>
<p>jstatd -J-Djava.security.policy=jstatd.all.policy</p>
<p>然后在jvisualvm里选择添加远程主机即可。<em>如果无法连接，请修改/etc/hosts里的内容，将localhost绑定到机器的外部ip地址。</em></p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/java-wait-and-notify/" rel="bookmark">Java中线程同步的简单用法</a><!-- (5.53993)--></li>
		<li><a href="http://www.agilephp.net/2010/01/python-and-rrd/" rel="bookmark">Python and RRD</a><!-- (4.87102)--></li>
		<li><a href="http://www.agilephp.net/2009/12/qq-wubi-input-method/" rel="bookmark">QQ五笔输入法</a><!-- (4.83449)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CentOS配置vsftpd遇到550错误的解决办法</title>
		<link>http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/</link>
		<comments>http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 03:24:31 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[error 550]]></category>
		<category><![CDATA[selinux]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/01/centos%e9%85%8d%e7%bd%aevsftpd%e9%81%87%e5%88%b0550%e9%94%99%e8%af%af%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/</guid>
		<description><![CDATA[安装vsftpd很简单：yum install vsftpd
启动vsftpd也很简单：service vsftpd start
默认情况下用root是无法连接的，你可以创建一个非root帐户登录，但是登录是可以登录，却没有办法创建或是上传文件。有人说，可以把SELinux关掉，可是这样未免也有点尺度太大了，其实是SELinux里的设置问题，只要修改相应的配置就可以了。
发现问题的方法：
# getsebool -a &#124; grep ftp    allow_ftpd_anon_write &#8211;&#62; off     allow_ftpd_full_access &#8211;&#62; off     allow_ftpd_use_cifs &#8211;&#62; off     allow_ftpd_use_nfs &#8211;&#62; off     ftp_home_dir &#8211;&#62; off     httpd_enable_ftp_server &#8211;&#62; off     [...]

<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/python-and-rrd/" rel="bookmark">Python and RRD</a><!-- (5.02654)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (4.49642)--></li>
		<li><a href="http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/" rel="bookmark">使用JDK进行Performance Tuning</a><!-- (3)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>安装vsftpd很简单：yum install vsftpd</p>
<p>启动vsftpd也很简单：service vsftpd start</p>
<p>默认情况下用root是无法连接的，你可以创建一个非root帐户登录，但是登录是可以登录，却没有办法创建或是上传文件。有人说，可以把SELinux关掉，可是这样未免也有点尺度太大了，其实是SELinux里的设置问题，只要修改相应的配置就可以了。</p>
<p>发现问题的方法：</p>
<p># getsebool -a | grep ftp    <br />allow_ftpd_anon_write &#8211;&gt; off     <br />allow_ftpd_full_access &#8211;&gt; off     <br />allow_ftpd_use_cifs &#8211;&gt; off     <br />allow_ftpd_use_nfs &#8211;&gt; off     <br /><font color="#ff0000">ftp_home_dir &#8211;&gt; off</font>     <br />httpd_enable_ftp_server &#8211;&gt; off     <br />tftp_anon_write –&gt; off</p>
<p>将红色字体部分的值改成on就可以了，设置的方法如下：</p>
<p># setsebool -P ftp_home_dir 1</p>
<p>然后就可以上传文件，做你想做的事情了。</p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/python-and-rrd/" rel="bookmark">Python and RRD</a><!-- (5.02654)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (4.49642)--></li>
		<li><a href="http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/" rel="bookmark">使用JDK进行Performance Tuning</a><!-- (3)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python and RRD</title>
		<link>http://www.agilephp.net/2010/01/python-and-rrd/</link>
		<comments>http://www.agilephp.net/2010/01/python-and-rrd/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 01:33:33 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python-pyrrd]]></category>
		<category><![CDATA[python-rrd]]></category>
		<category><![CDATA[python-rrdtool]]></category>
		<category><![CDATA[rrd]]></category>
		<category><![CDATA[rrdtool]]></category>
		<category><![CDATA[xenserver]]></category>
		<category><![CDATA[时序数据库]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/01/python-and-rrd/</guid>
		<description><![CDATA[RRD是Round Robin Database的意思，RRDTool是用来管理RRD的一个工具。RRDTool的主页在这里，Wikipedia的页面在这里。RRD其实就是一个时序数据库，使用一个固定大小的环型buffer，适用于存储一些统计性的信息，如CPU负载呀，气温变化呀。我为什么要说这个东西呢，因为XenServer里的性能统计是用的RRD，你可以访问诸如http://xenserver-host/rrd_updates?cf=AVERAGE&#38;interval=5&#38;start=123131321形式的网址来获取统计信息。XenServer将返回一个XML文件，这个XML文件其实就是用rrdtool里的export工具导出的。
好，下载完成了这个文件以后，我们假设文件名是data.xml，你可以使用rrdtool restore data.xml data.rrd的方式将数据重新恢复成rrd的格式，然后就可以使用rrdtool进行一系列操作。rrdtool的操作可以写十篇博客，这不是我今天想说的重点。
我今天想说的是，当我把rrdtool跟Python集成的时候，发现Python提供了若干封装的工具，比如Python-PyRRD，Python-rrd，Python-rrdtool，我想没几个人能搞明白这几者之间的关系吧。我来说一下。
Python-rrdtool，这个就是rrdtool的一个Python封装，调用方式与rrdtool里命令的格式是一致的。
Python-rrd，这个据说应该是rrdtool的前身，命名方式不符合Python的命名策略，所以改名成了Python-rrdtool，但是debian和ubuntu的源里还保留了一个过渡性质的傀儡包（transitional dummy package），其实就是Python-rrdtool
Python-PyRRD，这个是OO化的rrdtool封装，个人比较推荐用这个包，方便，代码也更容易让人理解。
另外，Java也提供了两个rrdtool的封装，一个是JRobin，一个是rrd4j，后者是在前者的基础上做的，提供了更好的OO的支持和性能。但是这两个项目似乎更新得很慢，XenServer导出的rrd数据（version 0003）他们现在不支持（只支持到version 0001）。所以想用Java分析XenServer的性能，还是自己去解析那个xml文件吧。


Related Posts

		在Google App Engine上进行开发
		了解一些“云”
		AOP in PHP
	


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/dev-in-google-app-engine/" rel="bookmark">在Google App Engine上进行开发</a><!-- (7.48529)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (4.71185)--></li>
		<li><a href="http://www.agilephp.net/2009/09/aop-in-php/" rel="bookmark">AOP in PHP</a><!-- (3.58277)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>RRD是Round Robin Database的意思，<a href="http://oss.oetiker.ch/rrdtool/ " target="_blank">RRDTool</a>是用来管理RRD的一个工具。<a href="http://oss.oetiker.ch/rrdtool/ " target="_blank">RRDTool</a>的<a href="http://oss.oetiker.ch/rrdtool/ " target="_blank">主页</a>在这里，Wikipedia的页面在<a href="http://en.wikipedia.org/wiki/RRDtool" target="_blank">这里</a>。RRD其实就是一个时序数据库，使用一个固定大小的<a href="http://en.wikipedia.org/wiki/Circular_buffer" target="_blank">环型buffer</a>，适用于存储一些统计性的信息，如CPU负载呀，气温变化呀。我为什么要说这个东西呢，因为XenServer里的性能统计是用的RRD，你可以访问诸如<a href="http://xenserver-host/rrd_updates?cf=AVERAGE&amp;interval=5&amp;start=123131321">http://xenserver-host/rrd_updates?cf=AVERAGE&amp;interval=5&amp;start=123131321</a>形式的网址来获取统计信息。XenServer将返回一个XML文件，这个XML文件其实就是用rrdtool里的export工具导出的。</p>
<p>好，下载完成了这个文件以后，我们假设文件名是data.xml，你可以使用rrdtool restore data.xml data.rrd的方式将数据重新恢复成rrd的格式，然后就可以使用rrdtool进行一系列操作。rrdtool的操作可以写十篇博客，这不是我今天想说的重点。</p>
<p>我今天想说的是，当我把rrdtool跟Python集成的时候，发现Python提供了若干封装的工具，比如Python-PyRRD，Python-rrd，Python-rrdtool，我想没几个人能搞明白这几者之间的关系吧。我来说一下。</p>
<p>Python-rrdtool，这个就是rrdtool的一个Python封装，调用方式与rrdtool里命令的格式是一致的。</p>
<p>Python-rrd，这个据说应该是rrdtool的前身，命名方式不符合Python的命名策略，所以改名成了Python-rrdtool，但是debian和ubuntu的源里还保留了一个过渡性质的傀儡包（transitional dummy package），其实就是Python-rrdtool</p>
<p>Python-PyRRD，这个是OO化的rrdtool封装，个人比较推荐用这个包，方便，代码也更容易让人理解。</p>
<p>另外，Java也提供了两个rrdtool的封装，一个是<a href="http://www.jrobin.org/" target="_blank">JRobin</a>，一个是<a href="https://rrd4j.dev.java.net/" target="_blank">rrd4j</a>，后者是在前者的基础上做的，提供了更好的OO的支持和性能。但是这两个项目似乎更新得很慢，XenServer导出的rrd数据（version 0003）他们现在不支持（只支持到version 0001）。所以想用Java分析XenServer的性能，还是自己去解析那个xml文件吧。</p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/dev-in-google-app-engine/" rel="bookmark">在Google App Engine上进行开发</a><!-- (7.48529)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (4.71185)--></li>
		<li><a href="http://www.agilephp.net/2009/09/aop-in-php/" rel="bookmark">AOP in PHP</a><!-- (3.58277)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/01/python-and-rrd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux\Unix性能测试</title>
		<link>http://www.agilephp.net/2009/12/linux-unix-benchmark/</link>
		<comments>http://www.agilephp.net/2009/12/linux-unix-benchmark/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 02:47:14 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[hps]]></category>
		<category><![CDATA[性能测试]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2009/12/linuxunix%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95/</guid>
		<description><![CDATA[最近在做云计算，接触到一些虚拟化的技术，所以想测试一下虚拟机的性能到底如何，这里给出一个方法，利用UnixBench来为服务器做性能测试。

   1:  wget http://byte-unixbench.googlecode.com/files/unixbench-5.1.2.tar.gz
   2:  tar -xzvf unixbench-5.1.2.tar.gz
   3:  cd unixbench-5.1.2.tar.gz
   4:  make
   5:  ./Run


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; [...]

<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/java-wait-and-notify/" rel="bookmark">Java中线程同步的简单用法</a><!-- (31.1035)--></li>
		<li><a href="http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/" rel="bookmark">在CentOS 5.4上安装CouchDB</a><!-- (13.9055)--></li>
		<li><a href="http://www.agilephp.net/2010/01/fix-chrome-to-add-extensions-in-a-junction-folder/" rel="bookmark">使用mklink或junction后Chrome无法安装扩展的解决办法</a><!-- (12.6265)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>最近在做云计算，接触到一些虚拟化的技术，所以想测试一下虚拟机的性能到底如何，这里给出一个方法，利用UnixBench来为服务器做性能测试。</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>wget http:<span class="rem">//byte-unixbench.googlecode.com/files/unixbench-5.1.2.tar.gz</span></pre>
<pre><span class="lnum">   2:  </span>tar -xzvf unixbench-5.1.2.tar.gz</pre>
<pre class="alt"><span class="lnum">   3:  </span>cd unixbench-5.1.2.tar.gz</pre>
<pre><span class="lnum">   4:  </span>make</pre>
<pre class="alt"><span class="lnum">   5:  </span>./Run</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<p>如果你不想做图形化测试，或是编译的时候遇到问题，那么你可以修改Makefile</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>#GRAPHIC_TESTS = defined</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>把该句注释掉即可。</p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/java-wait-and-notify/" rel="bookmark">Java中线程同步的简单用法</a><!-- (31.1035)--></li>
		<li><a href="http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/" rel="bookmark">在CentOS 5.4上安装CouchDB</a><!-- (13.9055)--></li>
		<li><a href="http://www.agilephp.net/2010/01/fix-chrome-to-add-extensions-in-a-junction-folder/" rel="bookmark">使用mklink或junction后Chrome无法安装扩展的解决办法</a><!-- (12.6265)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2009/12/linux-unix-benchmark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 引导信息修复方法</title>
		<link>http://www.agilephp.net/2009/12/windows-7-fix-mbr/</link>
		<comments>http://www.agilephp.net/2009/12/windows-7-fix-mbr/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 12:03:50 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[bcdedit]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[bootsect]]></category>
		<category><![CDATA[fixmbr]]></category>
		<category><![CDATA[mbr]]></category>
		<category><![CDATA[nt60]]></category>
		<category><![CDATA[win7]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2009/12/windows-7-%e5%bc%95%e5%af%bc%e4%bf%a1%e6%81%af%e4%bf%ae%e5%a4%8d%e6%96%b9%e6%b3%95/</guid>
		<description><![CDATA[ bootsect /nt60 SYS /mbr
你可以使用win7安装盘（非OEM安装盘）启动系统，并选择修复系统。然后选择命令行，敲入以上命令。一般可以修复由于安装Linux失误，或是先装Windows XP再装Windows 7造成的引导信息错误。


Related Posts

		制作USB启动盘
		Windows 7
		Windows 7 RTM build 7600.16384 x86/x64 ISO 哈希值
	


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/12/make-usb-bootable-disk/" rel="bookmark">制作USB启动盘</a><!-- (8)--></li>
		<li><a href="http://www.agilephp.net/2009/08/windows-7/" rel="bookmark">Windows 7</a><!-- (4.92515)--></li>
		<li><a href="http://www.agilephp.net/2009/07/windows-7-rtm-iso-sha1/" rel="bookmark">Windows 7 RTM build 7600.16384 x86/x64 ISO 哈希值</a><!-- (4.79569)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p> bootsect /nt60 SYS <font color="#ff0000">/mbr</font></p>
<p>你可以使用win7安装盘（非OEM安装盘）启动系统，并选择修复系统。然后选择命令行，敲入以上命令。一般可以修复由于安装Linux失误，或是先装Windows XP再装Windows 7造成的引导信息错误。</p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/12/make-usb-bootable-disk/" rel="bookmark">制作USB启动盘</a><!-- (8)--></li>
		<li><a href="http://www.agilephp.net/2009/08/windows-7/" rel="bookmark">Windows 7</a><!-- (4.92515)--></li>
		<li><a href="http://www.agilephp.net/2009/07/windows-7-rtm-iso-sha1/" rel="bookmark">Windows 7 RTM build 7600.16384 x86/x64 ISO 哈希值</a><!-- (4.79569)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2009/12/windows-7-fix-mbr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在CentOS 5.4上安装CouchDB</title>
		<link>http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/</link>
		<comments>http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 13:34:09 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Freeware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[libmozjs]]></category>
		<category><![CDATA[spidermonkey]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2009/11/%e5%9c%a8centos-5-4%e4%b8%8a%e5%ae%89%e8%a3%85couchdb-2/</guid>
		<description><![CDATA[CouchDB一种半结构化面向文档的分布式，高容错的数据库系统，具体的可以参见其网站上的文档，以及这里的一篇技术简介的翻译。CouchDB在Ubuntu下安装非常方便，只需要使用sudo apt-get install couchdb即可，我以为在CentOS中也会比较容易，没想到却遇到了比较多的问题。主要包括：

CentOS的安装源里不包含CouchDB
CouchDB需要Erlang的运行时支持，CentOS的安装源里也没有Erlang

OK，我们一步一步来搞定在CentOS下安装CouchDB。首先需要安装Erlang，却Erlang的官方网站下载源码，然后在本地编译安装：具体的脚本为：


   1: wget http://www.erlang.org/download/otp_src_R13B02-1.tar.gz

   2: tar–xzvf otp_src_R13B02-1.tar.gz

   3: cd otp_src_R13B02-1

   4: ./configure

   5: make &#38;&#38; make install


中途有可能会遇到一些依赖的问题，比如缺少icu、ncurses、wxWindows等，前面几个大略都可以从yum时行安装，wxWindows可以不问，如果你之后不准备使用Erlang进行UI编程的话，这些也足够用了。
Erlang安装完成之后，测试一下在bash里erl和erlc能否使用，若能，则这一步就完成了。
接着是安装CouchDB，由于CouchDB里用到了JavaScript，所以其依赖于SpiderMonkey，需要先安装libmozjs这个库，步骤为：


   1: wget ftp://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz

   2: tar–xzvf js-1.8.0-rc1.tar.gz

   3: cd js/src

   4: make BUILD_OPT=1–f Makefile.ref


编译应该不会出什么问题，如果你的机器没有配置编译环境，你可以参考这篇文章进行配置。
可以当我执行make –f Makefile.ref install的时候傻了，没有这个target，好吧，我们自己写脚本安装这个库。代码如下：


  [...]

<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/" rel="bookmark">CentOS配置vsftpd遇到550错误的解决办法</a><!-- (4.45399)--></li>
		<li><a href="http://www.agilephp.net/2009/12/linux-unix-benchmark/" rel="bookmark">Linux\Unix性能测试</a><!-- (4.16823)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (3.17174)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://couchdb.apache.org" target="_blank">CouchDB</a>一种半结构化面向文档的分布式，高容错的数据库系统，具体的可以参见其网站上的文档，以及<a href="http://www.javaeye.com/topic/319839" target="_blank">这里</a>的一篇技术简介的翻译。CouchDB在Ubuntu下安装非常方便，只需要使用sudo apt-get install couchdb即可，我以为在CentOS中也会比较容易，没想到却遇到了比较多的问题。主要包括：</p>
<ol>
<li>CentOS的安装源里不包含CouchDB</li>
<li>CouchDB需要Erlang的运行时支持，CentOS的安装源里也没有Erlang</li>
</ol>
<p>OK，我们一步一步来搞定在CentOS下安装CouchDB。首先需要安装Erlang，却Erlang的官方网站下载源码，然后在本地编译安装：具体的脚本为：</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum1" style="color: #606060">   1:</span> wget http:<span style="color: #008000">//www.erlang.org/download/otp_src_R13B02-1.tar.gz</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum2" style="color: #606060">   2:</span> tar–xzvf otp_src_R13B02-1.tar.gz</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum3" style="color: #606060">   3:</span> cd otp_src_R13B02-1</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum4" style="color: #606060">   4:</span> ./configure</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum5" style="color: #606060">   5:</span> make &amp;&amp; make install</pre>
<p><!--CRLF--></div>
</div>
<p>中途有可能会遇到一些依赖的问题，比如缺少icu、ncurses、wxWindows等，前面几个大略都可以从yum时行安装，wxWindows可以不问，如果你之后不准备使用Erlang进行UI编程的话，这些也足够用了。</p>
<p>Erlang安装完成之后，测试一下在bash里erl和erlc能否使用，若能，则这一步就完成了。</p>
<p>接着是安装CouchDB，由于CouchDB里用到了JavaScript，所以其依赖于<a href="http://www.mozilla.org/js/spidermonkey/" target="_blank">SpiderMonkey</a>，需要先安装libmozjs这个库，步骤为：</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum1" style="color: #606060">   1:</span> wget ftp:<span style="color: #008000">//ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum2" style="color: #606060">   2:</span> tar–xzvf js-1.8.0-rc1.tar.gz</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum3" style="color: #606060">   3:</span> cd js/src</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum4" style="color: #606060">   4:</span> make BUILD_OPT=1–f Makefile.ref</pre>
<p><!--CRLF--></div>
</div>
<p>编译应该不会出什么问题，如果你的机器没有配置编译环境，你可以参考<a href="https://developer.mozilla.org/en/Linux_Build_Prerequisites" target="_blank">这篇</a>文章进行配置。</p>
<p>可以当我执行make –f Makefile.ref install的时候傻了，没有这个target，好吧，我们自己写脚本安装这个库。代码如下：</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #008000">#!/bin/bash</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum2" style="color: #606060">   2:</span> mkdir -p /usr/<span style="color: #0000ff">include</span>/mozjs/ -v</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum3" style="color: #606060">   3:</span> cp *.{h,tbl}</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum4" style="color: #606060">   4:</span> /usr/<span style="color: #0000ff">include</span>/mozjs/ -v</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum5" style="color: #606060">   5:</span> cd Linux_All_OPT.OBJ</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum6" style="color: #606060">   6:</span> cp *.h /usr/<span style="color: #0000ff">include</span>/mozjs/ -v</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum7" style="color: #606060">   7:</span> mkdir -p /usr/local/{bin,lib}/ -v</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum8" style="color: #606060">   8:</span> cp js /usr/local/bin/ -v</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum9" style="color: #606060">   9:</span> cp libjs.so /usr/local/lib/ -v</pre>
<p><!--CRLF--></div>
</div>
<p>把上面的代码保存成install.sh，并放在src文件夹下，执行一遍即可。</p>
<p>终于可以编译CouchDB了，脚本如下：</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum1" style="color: #606060">   1:</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum2" style="color: #606060">   2:</span> wget http:<span style="color: #008000">//labs.xiaonei.com/apache-mirror/couchdb/0.10.0/apache-couchdb-0.10.0.tar.gz</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum3" style="color: #606060">   3:</span> tar–xzvf apache-couchdb-0.10.0.tar.gz</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum4" style="color: #606060">   4:</span> cd apache-couchdb-0.10.0</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum5" style="color: #606060">   5:</span> ./configure</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum6" style="color: #606060">   6:</span> make &amp;&amp; make install</pre>
<p><!--CRLF--></div>
</div>
<p>这次编译应该不会出什么问题，如果出了，也应该是比较好解决的，我们假设你看这篇文章的时候，有这个能力来解决那些小问题。</p>
<p>然后这个时候就安装成功了。接着是配置CouchDB，官方建议不要用root帐户来运行，所以，我们新建一个账户跟组来运行。脚本如下：</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum1" style="color: #606060">   1:</span> groupadd couchdb</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum2" style="color: #606060">   2:</span> useradd couchdb–g couchdb–d /usr/local/<span style="color: #0000ff">var</span>/lib/couchdb</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span id="lnum3" style="color: #606060">   3:</span> su– couchdb–c “/user/local/bin/couchdb -b”</pre>
<p><!--CRLF--></div>
</div>
<p>最后一行是用来启动couchdb的后台进程，如果要停止，把参数从-b改成-d即可。</p>
<p>新版本的配置文件好像是/user/local/etc/couchdb/local.ini，各取所需，自己修改吧。</p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/" rel="bookmark">CentOS配置vsftpd遇到550错误的解决办法</a><!-- (4.45399)--></li>
		<li><a href="http://www.agilephp.net/2009/12/linux-unix-benchmark/" rel="bookmark">Linux\Unix性能测试</a><!-- (4.16823)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (3.17174)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freeware &#8211; XAMPP</title>
		<link>http://www.agilephp.net/2009/08/freeware-xampp/</link>
		<comments>http://www.agilephp.net/2009/08/freeware-xampp/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 10:13:13 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Freeware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[XAMPP]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/?p=150</guid>
		<description><![CDATA[自己使用过很长一段时间的Apache+MySQL+PHP，虽然各自都有安装文件，但是对于一个刚接触这些东西的人来说，一定会被它的配置困扰过，刚开始不懂，去网上一通乱查，后来知道了去看文档，但是这种成熟的软件，一般配置项都比较复杂，而且像mysql更是缺少一个易用的管理客户端。xampp现在看来是一个不错的选择，安装以后，apache，mysql，php便立即可用，推荐。
另外，推荐安装xampplite，这个版本不包括FileZilla Server，一般做开发也不需要架设FTP。
下载：http://sourceforge.net/projects/xampp/


Related Posts

		Freeware: K-Lite Mega Codec Pack
		Ubuntu下配置Web环境
		Freeware: Test YARPP
	


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/05/k-lite-mega-codec-pack/" rel="bookmark">Freeware: K-Lite Mega Codec Pack</a><!-- (11.0738)--></li>
		<li><a href="http://www.agilephp.net/2009/07/config-servers-in-ubuntu/" rel="bookmark">Ubuntu下配置Web环境</a><!-- (7.09867)--></li>
		<li><a href="http://www.agilephp.net/2009/07/freeware-test-yarpp/" rel="bookmark">Freeware: Test YARPP</a><!-- (4.14944)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>自己使用过很长一段时间的Apache+MySQL+PHP，虽然各自都有安装文件，但是对于一个刚接触这些东西的人来说，一定会被它的配置困扰过，刚开始不懂，去网上一通乱查，后来知道了去看文档，但是这种成熟的软件，一般配置项都比较复杂，而且像mysql更是缺少一个易用的管理客户端。<a href="http://sourceforge.net/projects/xampp/" target="_blank">xampp</a>现在看来是一个不错的选择，安装以后，apache，mysql，php便立即可用，推荐。</p>
<p>另外，推荐安装xampplite，这个版本不包括FileZilla Server，一般做开发也不需要架设FTP。</p>
<p>下载：<a href="http://sourceforge.net/projects/xampp/" target="_blank">http://sourceforge.net/projects/xampp/</a></p>


<h3>Related Posts</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/05/k-lite-mega-codec-pack/" rel="bookmark">Freeware: K-Lite Mega Codec Pack</a><!-- (11.0738)--></li>
		<li><a href="http://www.agilephp.net/2009/07/config-servers-in-ubuntu/" rel="bookmark">Ubuntu下配置Web环境</a><!-- (7.09867)--></li>
		<li><a href="http://www.agilephp.net/2009/07/freeware-test-yarpp/" rel="bookmark">Freeware: Test YARPP</a><!-- (4.14944)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2009/08/freeware-xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
