<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.weigblog.com/wp-atom.php">
	<title type="text">Life - WeiG</title>
	<subtitle type="text">Yet another Life</subtitle>

	<updated>2009-11-11T15:20:18Z</updated>
	<generator uri="http://wordpress.org/" version="2.8.5">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://www.weigblog.com" />
	<id>http://www.weigblog.com/feed/atom</id>
	

			<link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><link rel="self" href="http://feeds.feedburner.com/weigblog" type="application/atom+xml" /><feedburner:emailServiceId>weigblog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[Outlook 2007提示Could not install the custom actions的解决方法]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/vNNJscjMYPU/outlook-2007-could-not-install-the-custom-actions-solution.html" />
		<id>http://www.weigblog.com/?p=516</id>
		<updated>2009-11-11T14:56:24Z</updated>
		<published>2009-11-05T12:15:39Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="email" /><category scheme="http://www.weigblog.com" term="form" /><category scheme="http://www.weigblog.com" term="Forward" /><category scheme="http://www.weigblog.com" term="microsoft" /><category scheme="http://www.weigblog.com" term="outlook" /><category scheme="http://www.weigblog.com" term="popup" /><category scheme="http://www.weigblog.com" term="reply" /><category scheme="http://www.weigblog.com" term="slow" />		<summary type="html"><![CDATA[近来我的Outlook 2007突然出了一些问题，无论是回复还是转发，甚至是新建邮件，都会出现Could not install the custom actions错误（如图）。而在出现此问题前，Outlook会出现假死情况。

经过搜索和研究，发现问题出现Forms中。解决方法也很简单：删除如下文件夹：
%SystemDrive%\Users\%UserName%\AppData\Local\Microsoft\FORMS
重新启动Outlook即可。
]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/11/05/outlook-2007-could-not-install-the-custom-actions-solution.html">&lt;p&gt;近来我的Outlook 2007突然出了一些问题，无论是回复还是转发，甚至是新建邮件，都会出现Could not install the custom actions错误（如图）。而在出现此问题前，Outlook会出现假死情况。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/11/outlook2007.png"&gt;&lt;img class="aligncenter size-full wp-image-517" title="Outlook 2007 Could not install the custom actions" src="http://www.weigblog.com/wp-content/uploads/2009/11/outlook2007.png" alt="Outlook 2007 Could not install the custom actions" width="418" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;经过搜索和研究，发现问题出现Forms中。解决方法也很简单：删除如下文件夹：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;%SystemDrive%\Users\%UserName%\AppData\Local\Microsoft\FORMS&lt;/pre&gt;
&lt;p&gt;重新启动Outlook即可。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GyI0HUdvSziyo0XZmmeYSRXWeX4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GyI0HUdvSziyo0XZmmeYSRXWeX4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GyI0HUdvSziyo0XZmmeYSRXWeX4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GyI0HUdvSziyo0XZmmeYSRXWeX4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=vNNJscjMYPU:G9s7x6fuqiw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=vNNJscjMYPU:G9s7x6fuqiw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=vNNJscjMYPU:G9s7x6fuqiw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=vNNJscjMYPU:G9s7x6fuqiw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=vNNJscjMYPU:G9s7x6fuqiw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/vNNJscjMYPU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/11/05/outlook-2007-could-not-install-the-custom-actions-solution.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/11/05/outlook-2007-could-not-install-the-custom-actions-solution.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/11/05/outlook-2007-could-not-install-the-custom-actions-solution.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[Smugmug: 专业的摄影照片分享服务]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/o8g8s4Bteqo/smugmug-photo-site.html" />
		<id>http://www.weigblog.com/?p=509</id>
		<updated>2009-11-08T05:08:34Z</updated>
		<published>2009-11-01T13:33:40Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="photo" /><category scheme="http://www.weigblog.com" term="service" /><category scheme="http://www.weigblog.com" term="share" />		<summary type="html"><![CDATA[Yahoo!旗下的Flickr相比大家都已经比较了解了，这次介绍的是Smugmug。

Smugmug是个专业的摄影照片分享服务，具有非常友好和强大的用户界面。具有非常强大的功能：

可以存放无限量的照片（JPEG、GIF和PNG格式），无存取流量限制。单张照片容量限制为: Standard和Power不大于12MB的照片，Pro不大于24MB，所有照片都不能大于48Megapixel（4800万像素）。所以对于目前的主流相机来说，可以直接存储原始JPEG照片了。
购买SmugVault服务后，甚至可以上传任何格式的文件（包括TIF、RAW、PSD等）。
没有广告
照片存储在Amazon S3服务，Amazon提供存储空间和流量
支持密码保护的相册（Gallery）和帐户
支持照片不显示在公共列表中（Unlisted）和私人站点（Private Site）
支持显示EXIF信息
支持原始尺寸的照片

支持相册（Gallery）和单独照片的共享（通过链接、邮件、共享组）、外链、嵌入式相册

支持多种上传方式（Web、Java、第三方的上传/下载工具）：这里有详细的上传和下载的工具列表。

支持多种方式取回照片（也支持邮寄DVD）
http://*.smugmug.com/的二级域名（Power和Pro用户支持域名绑定）
支持嵌入picnik.com的简单编辑功能
支持基于Flash的全屏SlideShow

支持多种主题，Power和Pro帐户还支持自定义CSS功能
支持FaceBook等Social功能
支持购买照片打印服务
支持按照物理方位标识照片
支持照片时间线
&#8230;

Smugmug实际上使用了Amazon S3来存储照片的数据，S3服务的费用和质量总体都是非常不错的，在国外，S3经常被用来作为备份空间。
Smugmug最大的缺点应该就是费用了。它不提供免费帐户，试用账户可以使用14天，之后必须付费才能继续使用。费用也不算太低，Standard每年39.95美元，Power用户每年59.95美元，Pro用户每年149.95美元。
如果你对Smugmug感兴趣的话，不妨去注册一个试用帐户体验一下。如果想成为正式用户，Smugmug提供一个推荐计划，如果有用户推荐，可以在付款时减掉5美元。例如，如果你在注册时候，填写我的Coupon代码（tZl1azJPB9jzA），即可获得5美元的优惠。所以在你注册付款时，请记得填写我的Coupon代码tZl1azJPB9jzA。
目前来说，Smugmug有个bug，因为Comment增加了Facebook Connection功能，所以如果你的网络因为一些问题导致无法访问Facebook，则会出现Comment画面无法打开的情况，导致匿名用户无法发表评论（注册用户不会有此影响）。
tZl1azJPB9jzA。
]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/11/01/smugmug-photo-site.html">&lt;p&gt;Yahoo!旗下的&lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt;相比大家都已经比较了解了，这次介绍的是&lt;a href="http://www.smugmug.com/"&gt;Smugmug&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-homepage.png"&gt;&lt;img class="aligncenter size-medium wp-image-510" title="SmugMug Home Page" src="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-homepage-400x284.png" alt="SmugMug Home Page" width="400" height="284" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Smugmug是个专业的摄影照片分享服务，具有非常友好和强大的用户界面。具有非常强大的功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以存放无限量的照片（JPEG、GIF和PNG格式），无存取流量限制。单张照片容量限制为: Standard和Power不大于12MB的照片，Pro不大于24MB，所有照片都不能大于48Megapixel（4800万像素）。所以对于目前的主流相机来说，可以直接存储原始JPEG照片了。&lt;/li&gt;
&lt;li&gt;购买SmugVault服务后，甚至可以上传任何格式的文件（包括TIF、RAW、PSD等）。&lt;/li&gt;
&lt;li&gt;没有广告&lt;/li&gt;
&lt;li&gt;照片存储在Amazon S3服务，Amazon提供存储空间和流量&lt;/li&gt;
&lt;li&gt;支持密码保护的相册（Gallery）和帐户&lt;/li&gt;
&lt;li&gt;支持照片不显示在公共列表中（Unlisted）和私人站点（Private Site）&lt;/li&gt;
&lt;li&gt;支持显示EXIF信息&lt;/li&gt;
&lt;li&gt;支持原始尺寸的照片&lt;br /&gt;
&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-individual-photo.png"&gt;&lt;img class="aligncenter size-medium wp-image-511" title="SmugMug Photo Gallery" src="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-individual-photo-400x246.png" alt="SmugMug Photo Gallery" width="400" height="246" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;支持相册（Gallery）和单独照片的共享（通过链接、邮件、共享组）、外链、嵌入式相册&lt;br /&gt;
&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-share.png"&gt;&lt;img class="aligncenter size-medium wp-image-514" title="smugmug-share" src="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-share-400x169.png" alt="smugmug-share" width="400" height="169" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;支持多种上传方式（Web、Java、第三方的上传/下载工具）：&lt;a href="http://wiki.smugmug.net/display/SmugMug/Hacks+and+Apps"&gt;这里&lt;/a&gt;有详细的上传和下载的工具列表。&lt;br /&gt;
&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-java-uploader.png"&gt;&lt;img class="aligncenter size-medium wp-image-513" title="SmugMug Java Uploader" src="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-java-uploader-400x225.png" alt="SmugMug Java Uploader" width="400" height="225" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;支持多种方式取回照片（也支持邮寄DVD）&lt;/li&gt;
&lt;li&gt;http://*.smugmug.com/的二级域名（Power和Pro用户支持域名绑定）&lt;/li&gt;
&lt;li&gt;支持嵌入picnik.com的简单编辑功能&lt;/li&gt;
&lt;li&gt;支持基于Flash的全屏SlideShow&lt;br /&gt;
&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-fullscreen-slideshow.png"&gt;&lt;img class="aligncenter size-medium wp-image-512" title="Smugmug Fullscreen SlideShow" src="http://www.weigblog.com/wp-content/uploads/2009/11/smugmug-fullscreen-slideshow-400x300.png" alt="Smugmug Fullscreen SlideShow" width="400" height="300" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;支持多种主题，Power和Pro帐户还支持自定义CSS功能&lt;/li&gt;
&lt;li&gt;支持FaceBook等Social功能&lt;/li&gt;
&lt;li&gt;支持购买照片打印服务&lt;/li&gt;
&lt;li&gt;支持按照物理方位标识照片&lt;/li&gt;
&lt;li&gt;支持照片时间线&lt;/li&gt;
&lt;li&gt;&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Smugmug实际上使用了Amazon S3来存储照片的数据，S3服务的费用和质量总体都是非常不错的，在国外，S3经常被用来作为备份空间。&lt;/p&gt;
&lt;p&gt;Smugmug最大的缺点应该就是费用了。它不提供免费帐户，试用账户可以使用14天，之后必须付费才能继续使用。费用也不算太低，Standard每年39.95美元，Power用户每年59.95美元，Pro用户每年149.95美元。&lt;/p&gt;
&lt;p&gt;如果你对Smugmug感兴趣的话，不妨去注册一个试用帐户体验一下。如果想成为正式用户，Smugmug提供一个推荐计划，如果有用户推荐，可以在付款时减掉5美元。例如，如果你在注册时候，填写我的Coupon代码（&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;tZl1azJPB9jzA&lt;/strong&gt;&lt;/span&gt;），即可获得5美元的优惠。所以在你注册付款时，请记得填写我的Coupon代码&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;tZl1azJPB9jzA&lt;/strong&gt;&lt;/span&gt;。&lt;/p&gt;
&lt;p&gt;目前来说，Smugmug有个bug，因为Comment增加了Facebook Connection功能，所以如果你的网络因为一些问题导致无法访问Facebook，则会出现Comment画面无法打开的情况，导致匿名用户无法发表评论（注册用户不会有此影响）。&lt;/p&gt;
&lt;div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1666px; width: 1px; height: 1px;"&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;tZl1azJPB9jzA。&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xc8x_TDttQZzKBGSW9hID3pqux0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xc8x_TDttQZzKBGSW9hID3pqux0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xc8x_TDttQZzKBGSW9hID3pqux0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xc8x_TDttQZzKBGSW9hID3pqux0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=o8g8s4Bteqo:sGAPVjVblfw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=o8g8s4Bteqo:sGAPVjVblfw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=o8g8s4Bteqo:sGAPVjVblfw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=o8g8s4Bteqo:sGAPVjVblfw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=o8g8s4Bteqo:sGAPVjVblfw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/o8g8s4Bteqo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/11/01/smugmug-photo-site.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/11/01/smugmug-photo-site.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/11/01/smugmug-photo-site.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[QNAP TS-409 Pro添加中文UTF8 locale]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/wtHW6tyroOs/qnap-ts-409-pro-nas-locale.html" />
		<id>http://www.weigblog.com/2009/10/24/qnap-ts-409-pro-nas-locale.html</id>
		<updated>2009-11-11T15:20:18Z</updated>
		<published>2009-10-24T13:34:11Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="locale" /><category scheme="http://www.weigblog.com" term="nas" /><category scheme="http://www.weigblog.com" term="pro" /><category scheme="http://www.weigblog.com" term="qnap" /><category scheme="http://www.weigblog.com" term="ts-409" /><category scheme="http://www.weigblog.com" term="utf8" /><category scheme="http://www.weigblog.com" term="zh-cn" />		<summary type="html"><![CDATA[QNAP TS-409 Pro NAS中除了C和POSIX以外，不包含utf8的locale，PHP中也不包含iconv。即使是最新版本的3.0.1 Build 0708T也是如此。最直接的结果就是MLDonkey等软件的下载文件名出现乱码或者“_”符号。但QNAP却提供了手工安装locale的方法。但最新的3.0.1版本中，却没有locale和localedef文件，导致按照官方安装locale的方法，无法操作。经过论坛上的各种讨论，可以采用如下的方法来实现。
首先通过SSH登录NAS，找到locale和localedef命令，并创建对应的符号链接：

ll /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/locale*
ln –s /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/locale /usr/sbin/locale
ln –s /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/localedef /usr/sbin/localedef
ll /usr/sbin/locale*

接下来下载Posix-locale文件（下载地址：http://wiki.qnap.com/w/images/7/77/Posix-locales.rar），解压后，上传到任意目录，并将LOCALES重命名为locales。为了节省系统盘空间，推荐在/share/HDA_DATA（或/share/MD0_DATA）中创建一个目录。

mkdir /mnt/HDA_DATA/i18n
ln –s /mnt/HDA_DATA/i18n /usr/share/i18n
cd /usr/share/i18n
wget http://wiki.qnap.com/w/images/7/77/Posix-locales.rar
unrar Posix-locales.rar
mv LOCALES locales

创建/usr/lib/locale目录，该目录用于存储locale-archive文件（也可以使用符号链接）
剩下的步骤就可以创建新的locale了

localedef –i zh_CN –f UTF-8 zh_CN.utf8

如果需要其他的locale，只需要将zh_CN、UTF-8更换为其他的locale即可，具体的参数，可以查看/usr/share/i18n/locales和/usr/share/i18n/charmaps中的文件列表，最后的zh_CN.utf8可以自己指定。
检查新的locale

locale -a

此时即可生成新的zh_CN.utf8的locale，剩下的工作可以为locale-archive创一个符号链接，以便节省/分区的空间。

mv /usr/lib/locale/locale-archive /share/HDA_DATA/locale-archive
ln –s /share/HDA_DATA/locale-archive /usr/lib/locale/locale-archive

特别说明

QNAP NAS会在每次升级之后，重新在硬盘中写入操作系统，所以此过程需要在每次升级版本的时候操作一次。
为了避免在UTF8编码无效时，某些软件（如MLDonkey）出现乱码的问题，在操作/升级前，请先关闭所有的QPKG。
HDA_DATA为不使用RAID配置的路径，如果启用RAID，则将更换为MD0_DATA。

]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/10/24/qnap-ts-409-pro-nas-locale.html">&lt;p&gt;QNAP TS-409 Pro NAS中除了C和POSIX以外，不包含utf8的locale，PHP中也不包含iconv。即使是最新版本的3.0.1 Build 0708T也是如此。最直接的结果就是MLDonkey等软件的下载文件名出现乱码或者“_”符号。但QNAP却提供了手工安装locale的方法。但最新的3.0.1版本中，却没有locale和localedef文件，导致按照官方&lt;a href="http://wiki.qnap.com/wiki/Country_Locale"&gt;安装locale&lt;/a&gt;的方法，无法操作。经过论坛上的各种讨论，可以采用如下的方法来实现。&lt;/p&gt;
&lt;p&gt;首先通过SSH登录NAS，找到locale和localedef命令，并创建对应的符号链接：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
ll /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/locale*
ln –s /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/locale /usr/sbin/locale
ln –s /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/localedef /usr/sbin/localedef
ll /usr/sbin/locale*
&lt;/pre&gt;
&lt;p&gt;接下来下载Posix-locale文件（下载地址：&lt;a title="http://wiki.qnap.com/w/images/7/77/Posix-locales.rar" href="http://wiki.qnap.com/w/images/7/77/Posix-locales.rar"&gt;http://wiki.qnap.com/w/images/7/77/Posix-locales.rar&lt;/a&gt;），解压后，上传到任意目录，并将LOCALES重命名为locales。为了节省系统盘空间，推荐在/share/HDA_DATA（或/share/MD0_DATA）中创建一个目录。&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
mkdir /mnt/HDA_DATA/i18n
ln –s /mnt/HDA_DATA/i18n /usr/share/i18n
cd /usr/share/i18n
wget http://wiki.qnap.com/w/images/7/77/Posix-locales.rar
unrar Posix-locales.rar
mv LOCALES locales
&lt;/pre&gt;
&lt;p&gt;创建/usr/lib/locale目录，该目录用于存储locale-archive文件（也可以使用符号链接）&lt;/p&gt;
&lt;p&gt;剩下的步骤就可以创建新的locale了&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
localedef –i zh_CN –f UTF-8 zh_CN.utf8
&lt;/pre&gt;
&lt;p&gt;如果需要其他的locale，只需要将zh_CN、UTF-8更换为其他的locale即可，具体的参数，可以查看/usr/share/i18n/locales和/usr/share/i18n/charmaps中的文件列表，最后的zh_CN.utf8可以自己指定。&lt;/p&gt;
&lt;p&gt;检查新的locale&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
locale -a
&lt;/pre&gt;
&lt;p&gt;此时即可生成新的zh_CN.utf8的locale，剩下的工作可以为locale-archive创一个符号链接，以便节省/分区的空间。&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
mv /usr/lib/locale/locale-archive /share/HDA_DATA/locale-archive
ln –s /share/HDA_DATA/locale-archive /usr/lib/locale/locale-archive
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;特别说明&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;QNAP NAS会在每次升级之后，重新在硬盘中写入操作系统，所以此过程需要在每次升级版本的时候操作一次。&lt;/li&gt;
&lt;li&gt;为了避免在UTF8编码无效时，某些软件（如MLDonkey）出现乱码的问题，在操作/升级前，请先关闭所有的QPKG。&lt;/li&gt;
&lt;li&gt;HDA_DATA为不使用RAID配置的路径，如果启用RAID，则将更换为MD0_DATA。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RJ-JcTOsaiW2JaW6kfZtjjmqIIc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RJ-JcTOsaiW2JaW6kfZtjjmqIIc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RJ-JcTOsaiW2JaW6kfZtjjmqIIc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RJ-JcTOsaiW2JaW6kfZtjjmqIIc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=wtHW6tyroOs:JNbTGYLcrOY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=wtHW6tyroOs:JNbTGYLcrOY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=wtHW6tyroOs:JNbTGYLcrOY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=wtHW6tyroOs:JNbTGYLcrOY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=wtHW6tyroOs:JNbTGYLcrOY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/wtHW6tyroOs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/10/24/qnap-ts-409-pro-nas-locale.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/10/24/qnap-ts-409-pro-nas-locale.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/10/24/qnap-ts-409-pro-nas-locale.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[弄错会很丢脸的英文]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/-30Smwx2Vio/incorrect-english-words.html" />
		<id>http://www.weigblog.com/?p=501</id>
		<updated>2009-10-08T05:38:55Z</updated>
		<published>2009-10-08T05:37:55Z</published>
		<category scheme="http://www.weigblog.com" term="language" />		<summary type="html"><![CDATA[1、日常用语类 
lover 情人（不是“爱人”）
busboy 餐馆勤杂工（不是“公汽售票员”）
busybody 爱管闲事的人（不是“大忙人”）
dry goods （美）纺织品；（英）谷物（不是“干货”）
heartman 换心人（不是“有心人”）
mad doctor 精神病科医生（不是“发疯的医生”）
eleventh hour 最后时刻（不是“十一点”）
blind date （由第三者安排的）男女初次会面（并非“盲目约会”或“瞎约会”）
dead president 美钞（上印有总统头像）（并非“死了的总统”）
personal remark 人身攻击（不是“个人评论”）
sweet water 淡水（不是“糖水”或“甜水”）
confidence man 骗子（不是“信得过的人”）
criminal lawyer 刑事律师（不是“犯罪的律师”）
service station 加油站（不是“服务站”）
rest room 厕所（不是“休息室”）
dressing room 化妆室（不是“试衣室”或“更衣室”）
sporting house 妓院（不是“体育室”）
horse sense 常识（不是“马的感觉”）
capital idea 好主意（不是“资本主义思想”）
familiar talk 庸俗的交谈（不是“熟悉的谈话”）
black tea 红茶（不是“黑茶”）
black art 妖术（不是“黑色艺术”）
black stranger 完全陌生的人（不是“陌生的黑人”）
white coal （作动力来源用的）水（不是“白煤”）
white man 忠实可靠的人（不是“皮肤白的人”）
yellow book 黄皮书（法国政府报告书，以黄纸为封）（不是“黄色书籍”）
red tape 官僚习气（不是“红色带子”）
green hand 新手（不是“绿手”）
blue stocking [...]]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/10/08/incorrect-english-words.html">&lt;p&gt;&lt;strong&gt;1、日常用语类 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;lover 情人（不是“爱人”）&lt;br /&gt;
busboy 餐馆勤杂工（不是“公汽售票员”）&lt;br /&gt;
busybody 爱管闲事的人（不是“大忙人”）&lt;br /&gt;
dry goods （美）纺织品；（英）谷物（不是“干货”）&lt;br /&gt;
heartman 换心人（不是“有心人”）&lt;br /&gt;
mad doctor 精神病科医生（不是“发疯的医生”）&lt;br /&gt;
eleventh hour 最后时刻（不是“十一点”）&lt;br /&gt;
blind date （由第三者安排的）男女初次会面（并非“盲目约会”或“瞎约会”）&lt;br /&gt;
dead president 美钞（上印有总统头像）（并非“死了的总统”）&lt;br /&gt;
personal remark 人身攻击（不是“个人评论”）&lt;br /&gt;
sweet water 淡水（不是“糖水”或“甜水”）&lt;br /&gt;
confidence man 骗子（不是“信得过的人”）&lt;br /&gt;
criminal lawyer 刑事律师（不是“犯罪的律师”）&lt;br /&gt;
service station 加油站（不是“服务站”）&lt;br /&gt;
rest room 厕所（不是“休息室”）&lt;br /&gt;
dressing room 化妆室（不是“试衣室”或“更衣室”）&lt;br /&gt;
sporting house 妓院（不是“体育室”）&lt;br /&gt;
horse sense 常识（不是“马的感觉”）&lt;br /&gt;
capital idea 好主意（不是“资本主义思想”）&lt;br /&gt;
familiar talk 庸俗的交谈（不是“熟悉的谈话”）&lt;br /&gt;
black tea 红茶（不是“黑茶”）&lt;br /&gt;
black art 妖术（不是“黑色艺术”）&lt;br /&gt;
black stranger 完全陌生的人（不是“陌生的黑人”）&lt;br /&gt;
white coal （作动力来源用的）水（不是“白煤”）&lt;br /&gt;
white man 忠实可靠的人（不是“皮肤白的人”）&lt;br /&gt;
yellow book 黄皮书（法国政府报告书，以黄纸为封）（不是“黄色书籍”）&lt;br /&gt;
red tape 官僚习气（不是“红色带子”）&lt;br /&gt;
green hand 新手（不是“绿手”）&lt;br /&gt;
blue stocking 女学者、女才子（不是“蓝色长统袜”）&lt;br /&gt;
China policy 对华政策（不是“中国政策”）&lt;br /&gt;
Chinese dragon 麒麟（不是“中国龙”）&lt;br /&gt;
American beauty 红蔷薇（不是“美国美女”）&lt;br /&gt;
English disease 软骨病（不是“英国病”）&lt;br /&gt;
Indian summer 愉快宁静的晚年（不是“印度的夏日”）&lt;br /&gt;
Greek gift 害人的礼品（不是“希腊礼物”）&lt;br /&gt;
Spanish athlete 吹牛的人（不是“西班牙运动员”）&lt;br /&gt;
French chalk 滑石粉（不是“法国粉笔”） &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.成语类 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;pull one&amp;#8217;s leg 开玩笑（不是“拉后腿”）&lt;br /&gt;
in one&amp;#8217;s birthday suit 赤身裸体（不是“穿着生日礼服”）&lt;br /&gt;
eat one&amp;#8217;s words 收回前言（不是“食言”）&lt;br /&gt;
an apple of love 西红柿（不是“爱情之果”）&lt;br /&gt;
handwriting on the wall 不祥之兆（不是“大字报”）&lt;br /&gt;
bring down the house 博得全场喝彩（不是“推倒房子”）&lt;br /&gt;
have a fit 勃然大怒（不是“试穿”）&lt;br /&gt;
make one&amp;#8217;s hair stand on end 令人毛骨悚然—恐惧（不是“令人发指——气愤”）&lt;br /&gt;
be taken in 受骗，上当（不是“被接纳”）&lt;br /&gt;
think a great deal of oneself 高看或看重自己（不是“为自己想得很多”）&lt;br /&gt;
pull up one&amp;#8217;s socks 鼓起勇气（不是“提上袜子”）&lt;br /&gt;
have the heart to do （用于否定句）忍心做……不是“有心做”或“有意做”） &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.表达方式类 &lt;/strong&gt;&lt;br /&gt;
　　　　&lt;br /&gt;
Look out! 当心！（不是“向外看”）&lt;br /&gt;
What a shame! 多可惜！真遗憾！（不是“多可耻”）&lt;br /&gt;
You don&amp;#8217;t say! 是吗！（不是“你别说”）&lt;br /&gt;
You can say that again! 说得好！（不是“你可以再说一遍”）&lt;br /&gt;
I haven&amp;#8217;t slept better. 我睡得好极了。（不是“我从未睡过好觉”）&lt;br /&gt;
You can&amp;#8217;t be too careful in your work. 你工作越仔细越好。（不是“你工作不能太仔细”）&lt;br /&gt;
It has been 4 years since I smoked. 我戒烟４年了。（不是“我抽烟4年了”）&lt;br /&gt;
All his friends did not turn up. 他的朋友没全到。（不是“他的朋友全没到”）&lt;br /&gt;
People will be long forgetting her. 人们在很长时间内会记住她的。（不是“人们会永远忘记她”）&lt;br /&gt;
He was only too pleased to let them go. 他很乐意让他们走。（不是“他太高兴了，不愿让他们走”）&lt;br /&gt;
It can&amp;#8217;t be less interesting. 它无聊极了。（不是“它不可能没有趣”） &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.douban.com/group/topic/5090730/"&gt;[via]&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dAGcKcenMPufKxxAi1tfyO-BSVg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dAGcKcenMPufKxxAi1tfyO-BSVg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dAGcKcenMPufKxxAi1tfyO-BSVg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dAGcKcenMPufKxxAi1tfyO-BSVg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=-30Smwx2Vio:UI1_HF4hanU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=-30Smwx2Vio:UI1_HF4hanU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=-30Smwx2Vio:UI1_HF4hanU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=-30Smwx2Vio:UI1_HF4hanU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=-30Smwx2Vio:UI1_HF4hanU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/-30Smwx2Vio" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/10/08/incorrect-english-words.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/10/08/incorrect-english-words.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/10/08/incorrect-english-words.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[解决nginx和php-fastcgi上传大文件的问题]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/RZX-9XODu9Y/nginx-php-fastcgi-upload-big-files.html" />
		<id>http://www.weigblog.com/?p=495</id>
		<updated>2009-10-08T12:58:23Z</updated>
		<published>2009-10-03T14:26:51Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="body" /><category scheme="http://www.weigblog.com" term="client" /><category scheme="http://www.weigblog.com" term="fastcgi" /><category scheme="http://www.weigblog.com" term="http" /><category scheme="http://www.weigblog.com" term="max" /><category scheme="http://www.weigblog.com" term="nginx" /><category scheme="http://www.weigblog.com" term="php" /><category scheme="http://www.weigblog.com" term="server" /><category scheme="http://www.weigblog.com" term="size" />		<summary type="html"><![CDATA[近来需要在blog中上传一些比较大的照片，却发现无论是Flash Uploader还是Web Uploader均无法上传。经过一番试验，发现这种情况仅发生在上传较大图片的时候，而对于几百KB的图片却不出现问题。
我的Server使用了nginx和php-fastcgi，经过检查php的配置文件，发现upload_max_filesize、post_max_size都不应该会影响上传。从phpinfo()来看，这些配置也都正确读入了。经过查看/var/log/nginx/error.log，发现其最下面几行出现日志：

2009/10/03 22:06:23 [error] 6029#0: *20 client intended to send too large body: 1345385 bytes, client: x.x.x.x, server: weigblog.com, request: &#34;POST /wp-admin/async-upload.php HTTP/1.1&#34;, host: &#34;www.weigblog.com&#34;

既然log是nginx报出来的，那问题自然出现在nginx上。经过查询nginx的wiki，解决方案如下：
在/etc/nginx/nginx.conf中添加如下配置：

http {
        ...
        client_max_body_size 100m;
        ...
}

之后运行/etc/init.d/nginx reload重新载入配置文件，上传搞定。
]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/10/03/nginx-php-fastcgi-upload-big-files.html">&lt;p&gt;近来需要在blog中上传一些比较大的照片，却发现无论是Flash Uploader还是Web Uploader均无法上传。经过一番试验，发现这种情况仅发生在上传较大图片的时候，而对于几百KB的图片却不出现问题。&lt;/p&gt;
&lt;p&gt;我的Server使用了nginx和php-fastcgi，经过检查php的配置文件，发现upload_max_filesize、post_max_size都不应该会影响上传。从phpinfo()来看，这些配置也都正确读入了。经过查看/var/log/nginx/error.log，发现其最下面几行出现日志：&lt;/p&gt;
&lt;pre class="brush: plain;"&gt;
2009/10/03 22:06:23 [error] 6029#0: *20 client intended to send too large body: 1345385 bytes, client: x.x.x.x, server: weigblog.com, request: &amp;quot;POST /wp-admin/async-upload.php HTTP/1.1&amp;quot;, host: &amp;quot;www.weigblog.com&amp;quot;
&lt;/pre&gt;
&lt;p&gt;既然log是nginx报出来的，那问题自然出现在nginx上。经过查询nginx的wiki，解决方案如下：&lt;/p&gt;
&lt;p&gt;在/etc/nginx/nginx.conf中添加如下配置：&lt;/p&gt;
&lt;pre class="brush: bash; highlight: [3];"&gt;
http {
        ...
        client_max_body_size 100m;
        ...
}
&lt;/pre&gt;
&lt;p&gt;之后运行/etc/init.d/nginx reload重新载入配置文件，上传搞定。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qhTTZNCWOYnlEyf9e5-VvGKiv_I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qhTTZNCWOYnlEyf9e5-VvGKiv_I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qhTTZNCWOYnlEyf9e5-VvGKiv_I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qhTTZNCWOYnlEyf9e5-VvGKiv_I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=RZX-9XODu9Y:v94Q4Xx5H1U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=RZX-9XODu9Y:v94Q4Xx5H1U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=RZX-9XODu9Y:v94Q4Xx5H1U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=RZX-9XODu9Y:v94Q4Xx5H1U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=RZX-9XODu9Y:v94Q4Xx5H1U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/RZX-9XODu9Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/10/03/nginx-php-fastcgi-upload-big-files.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/10/03/nginx-php-fastcgi-upload-big-files.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/10/03/nginx-php-fastcgi-upload-big-files.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[八月十五的月亮]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/32yhj5pM2MQ/moon-in-mid-autumn-day.html" />
		<id>http://www.weigblog.com/?p=492</id>
		<updated>2009-10-04T11:29:28Z</updated>
		<published>2009-10-03T12:01:07Z</published>
		<category scheme="http://www.weigblog.com" term="diary" />		<summary type="html"><![CDATA[八月十五的月亮

]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/10/03/moon-in-mid-autumn-day.html">&lt;p&gt;八月十五的月亮&lt;br /&gt;
&lt;a href="http://www.weigblog.com/wp-content/uploads/2009/10/IMG_1153.JPG"&gt;&lt;img src="http://www.weigblog.com/wp-content/uploads/2009/10/IMG_1153-400x266.jpg" alt="八月十五的月亮" title="八月十五的月亮" width="400" height="266" class="aligncenter size-medium wp-image-496" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vhQQYJys6354gQhAxOjsNI2Wm_c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vhQQYJys6354gQhAxOjsNI2Wm_c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vhQQYJys6354gQhAxOjsNI2Wm_c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vhQQYJys6354gQhAxOjsNI2Wm_c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=32yhj5pM2MQ:oDFb91PXY6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=32yhj5pM2MQ:oDFb91PXY6E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=32yhj5pM2MQ:oDFb91PXY6E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=32yhj5pM2MQ:oDFb91PXY6E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=32yhj5pM2MQ:oDFb91PXY6E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/32yhj5pM2MQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/10/03/moon-in-mid-autumn-day.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/10/03/moon-in-mid-autumn-day.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/10/03/moon-in-mid-autumn-day.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[在Nginx下运行perl-cgi脚本]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/EAb_QFoa0ow/using-per-cgi-in-nginx.html" />
		<id>http://www.weigblog.com/?p=487</id>
		<updated>2009-09-16T23:16:27Z</updated>
		<published>2009-09-16T14:26:37Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="cgi" /><category scheme="http://www.weigblog.com" term="nginx" /><category scheme="http://www.weigblog.com" term="perl" /><category scheme="http://www.weigblog.com" term="pl" /><category scheme="http://www.weigblog.com" term="server" /><category scheme="http://www.weigblog.com" term="web" />		<summary type="html"><![CDATA[把Web Server更换为Nginx后，发现BugZilla不能用了。打开网站显示403 Forbidden，想来是因为BugZilla使用Perl CGI运行的原因。查了Nginx为数不多的文档，发现Nginx不能像其他Web Server（例如Apache）那样直接运行perl-cgi的脚本。
试用几个不同的方法后，发现确实有方法可以比较简单的实现perl-cgi的功能：
首先下载一个Perl Wrapper，我把它另存为~/perl-fastcgi.pl。
修改perl-fastcgi.pl的属性，添加可执行权限。运行该文件，该脚本会创建一个/var/run/nginx/perl_cgi-dispatch.sock文件。
修改nginx的配置文件，在server section中添加：

location ~ \.cgi$ {
        root           /srv/www/domain.tld/public_html;
        fastcgi_pass    unix:/var/run/nginx/perl_cgi-dispatch.sock;
        fastcgi_index   index.cgi;
    [...]]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/09/16/using-per-cgi-in-nginx.html">&lt;p&gt;把Web Server更换为Nginx后，发现BugZilla不能用了。打开网站显示403 Forbidden，想来是因为BugZilla使用Perl CGI运行的原因。查了Nginx为数不多的文档，发现Nginx不能像其他Web Server（例如Apache）那样直接运行perl-cgi的脚本。&lt;/p&gt;
&lt;p&gt;试用几个不同的方法后，发现确实有方法可以比较简单的实现perl-cgi的功能：&lt;/p&gt;
&lt;p&gt;首先下载一个&lt;a href="http://technotes.1000lines.net/fastcgi-wrapper.pl"&gt;Perl Wrapper&lt;/a&gt;，我把它另存为~/perl-fastcgi.pl。&lt;/p&gt;
&lt;p&gt;修改perl-fastcgi.pl的属性，添加可执行权限。运行该文件，该脚本会创建一个/var/run/nginx/perl_cgi-dispatch.sock文件。&lt;/p&gt;
&lt;p&gt;修改nginx的配置文件，在server section中添加：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
location ~ \.cgi$ {
        root           /srv/www/domain.tld/public_html;
        fastcgi_pass    unix:/var/run/nginx/perl_cgi-dispatch.sock;
        fastcgi_index   index.cgi;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include         fastcgi_params;
}
&lt;/pre&gt;
&lt;p&gt;配置工作就此完成，重新启动nginx即可。&lt;/p&gt;
&lt;p&gt;对于BugZilla，可能还需要运行http://domain.tld/testagent.cgi。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xCjqtu9Po51ma6zPX_iXjqgXlno/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xCjqtu9Po51ma6zPX_iXjqgXlno/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xCjqtu9Po51ma6zPX_iXjqgXlno/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xCjqtu9Po51ma6zPX_iXjqgXlno/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=EAb_QFoa0ow:lPKQCXs1SLU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=EAb_QFoa0ow:lPKQCXs1SLU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=EAb_QFoa0ow:lPKQCXs1SLU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=EAb_QFoa0ow:lPKQCXs1SLU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=EAb_QFoa0ow:lPKQCXs1SLU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/EAb_QFoa0ow" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/09/16/using-per-cgi-in-nginx.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/09/16/using-per-cgi-in-nginx.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/09/16/using-per-cgi-in-nginx.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[Web服务器更换到Nginx]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/uqDVuz7ahFE/web-services-change-to-nginx.html" />
		<id>http://www.weigblog.com/?p=480</id>
		<updated>2009-10-07T01:09:24Z</updated>
		<published>2009-09-16T12:29:47Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="lemp" /><category scheme="http://www.weigblog.com" term="nginx" /><category scheme="http://www.weigblog.com" term="server" /><category scheme="http://www.weigblog.com" term="web" />		<summary type="html"><![CDATA[禁不住诱惑，还是把Web服务器更换为Nginx（读音[engine x]），这个俄罗斯人写的高性能的web服务器。[因为在Linode360方案中，使用Apache如果想达到比较好的性能，确实会比较频繁的出现OOM；要避免OOM，就只能减少并发处理能力和内存配置]
Debian Lenny自带的nginx是0.6x的，而目前最新版本是0.7x。因此决定，从官方网站安装。
本文简单介绍了完整的安装过程。
首先安装必要的package，这些package将会在后面的过程中用到：

$ sudo apt-get install libssl-dev libpcre3-dev build-essential
$ sudo apt-get install php5 php5-cgi mysql-server mysql-client

接下来下载并安装nginx（注意，下载的地址的可能会发生变化，可以参考http://wiki.nginx.org/NginxInstall#Stable）：

$ wget http://sysoev.ru/nginx/nginx-0.7.62.tar.gz
$ tar -zxvf nginx-0.7.62.tar.gz
$ cd nginx-0.7.62
$ ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid  --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include --with-http_stub_status_module
$ make
$ sudo make install

安装spawn-fcgi（曾经lighttpd的一部分，用来管理php-cgi进程）

$ wget http://www.lighttpd.net/download/spawn-fcgi-1.6.2.tar.gz
$ tar -zxvf spawn-fcgi-1.6.2.tar.gz
$ cd [...]]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/09/16/web-services-change-to-nginx.html">&lt;p&gt;禁不住诱惑，还是把Web服务器更换为Nginx（读音[engine x]），这个俄罗斯人写的高性能的web服务器。[因为在Linode360方案中，使用Apache如果想达到比较好的性能，确实会比较频繁的出现OOM；要避免OOM，就只能减少并发处理能力和内存配置]&lt;/p&gt;
&lt;p&gt;Debian Lenny自带的nginx是0.6x的，而目前最新版本是0.7x。因此决定，从官方网站安装。&lt;/p&gt;
&lt;p&gt;本文简单介绍了完整的安装过程。&lt;/p&gt;
&lt;p&gt;首先安装必要的package，这些package将会在后面的过程中用到：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ sudo apt-get install libssl-dev libpcre3-dev build-essential
$ sudo apt-get install php5 php5-cgi mysql-server mysql-client
&lt;/pre&gt;
&lt;p&gt;接下来下载并安装nginx（注意，下载的地址的可能会发生变化，可以参考&lt;a href="http://wiki.nginx.org/NginxInstall#Stable"&gt;http://wiki.nginx.org/NginxInstall#Stable&lt;/a&gt;）：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ wget http://sysoev.ru/nginx/nginx-0.7.62.tar.gz
$ tar -zxvf nginx-0.7.62.tar.gz
$ cd nginx-0.7.62
$ ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid  --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include --with-http_stub_status_module
$ make
$ sudo make install
&lt;/pre&gt;
&lt;p&gt;安装spawn-fcgi（曾经lighttpd的一部分，用来管理php-cgi进程）&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ wget http://www.lighttpd.net/download/spawn-fcgi-1.6.2.tar.gz
$ tar -zxvf spawn-fcgi-1.6.2.tar.gz
$ cd spawn-fcgi-1.6.2
$ ./configure
$ make
$ sudo cp ./src/spawn-cgi /usr/bin/
&lt;/pre&gt;
&lt;p&gt;创建nginx和php-fastcgi的init脚本&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ sudo vi /etc/init.d/php-fastcgi
$ sudo vi /etc/init.d/nginx
$ sudo chmod +x /etc/init.d/php-fastcgi
$ sudo chmod +x /etc/init.d/nginx
&lt;/pre&gt;
&lt;p&gt;/etc/init.d/nginx文件内容：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
#! /bin/sh
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: nginx init.d script for Ubuntu 8.10 and lesser versions.
# Description:       nginx init.d script for Ubuntu 8.10 and lesser versions.
### END INIT INFO
#------------------------------------------------------------------------------
# nginx - this script, which starts and stops the nginx daemon for ubuntu.
#
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server.  This \
#               script will manage the initiation of the \
#               server and its process state.
#
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /acronymlabs/server/nginx.pid
# Provides:    nginx
#
# Author:  Jason Giedymin
#          &amp;lt;jason.giedymin AT acronymlabs.com&amp;gt;.
#
# Version: 1.0 01-Apr-2009 jason.giedymin AT gmail.com
# Notes: nginx init.d script for Ubuntu 8.10 and lesser versions.
#
#------------------------------------------------------------------------------
#                               MIT X11 License
#------------------------------------------------------------------------------
#
# Copyright (c) 2009 Jason Giedymin, http://AcronymLabs.com
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# &amp;quot;Software&amp;quot;), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
#                               Functions
#------------------------------------------------------------------------------
. /lib/lsb/init-functions

#------------------------------------------------------------------------------
#                               Consts
#------------------------------------------------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx

NAME=nginx
DESCRIPTION=&amp;quot;Nginx Server...&amp;quot;

PIDSPATH=/var/run/nginx
PS=$NAME                                #the process, which happens to be the NAME
PIDFILE=$NAME.pid                       #pid file
RUNAS=root                              #user to run as

SCRIPT_OK=0                             #ala error codes
SCRIPT_ERROR=1                          #ala error codes
TRUE=1                                  #boolean
FALSE=0                                 #boolean

lockfile=/var/lock/subsys/nginx
NGINX_CONF_FILE=&amp;quot;/etc/nginx/nginx.conf&amp;quot;

#------------------------------------------------------------------------------
#                               Simple Tests
#------------------------------------------------------------------------------

#test if nginx is a file and executable
test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi

#set exit condition
#set -e

#------------------------------------------------------------------------------
#                               Functions
#------------------------------------------------------------------------------

configtest() {
        $DAEMON -t -c $NGINX_CONF_FILE
}

getPSCount() {
        return `pgrep -f $PS | wc -l`
}

isRunning(){
        pidof_daemon
        PID=$?

        if [ $PID -gt 0 ]; then
                return 1
        else
                return 0
        fi
}

status(){
        isRunning
        isAlive=$?

        if [ &amp;quot;${isAlive}&amp;quot; -eq $TRUE ]; then
                echo &amp;quot;$NAME found running with processes:  `pidof $PS`&amp;quot;
        else
                echo &amp;quot;$NAME is NOT running.&amp;quot;
        fi

}

removePIDFile(){
        if [ -f $PIDSPATH/$NAME.pid ]; then
                rm $PIDSPATH/$NAME.pid
        fi
}

start() {
        log_daemon_msg &amp;quot;Starting $DESCRIPTION&amp;quot;

        isRunning
        isAlive=$?

        if [ &amp;quot;${isAlive}&amp;quot; -eq $TRUE ]; then
                log_end_msg $SCRIPT_ERROR
        else
                start-stop-daemon --start --quiet --chuid $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON
                chmod 400 $PIDSPATH/$PIDFILE
                log_end_msg $SCRIPT_OK
        fi
}

stop() {
        log_daemon_msg &amp;quot;Stopping $DESCRIPTION&amp;quot;

        isRunning
        isAlive=$?
        if [ &amp;quot;${isAlive}&amp;quot; -eq $TRUE ]; then
                start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE

                removePIDFile

                log_end_msg $SCRIPT_OK
        else
                log_end_msg $SCRIPT_ERROR
        fi
}

reload() {
        configtest || return $?

        log_daemon_msg &amp;quot;Reloading (via HUP) $DESCRIPTION&amp;quot;

        isRunning
        if [ $? -eq $TRUE ]; then
                `killall -HUP $PS` #to be safe

                log_end_msg $SCRIPT_OK
        else
                log_end_msg $SCRIPT_ERROR
        fi
}

terminate() {
        log_daemon_msg &amp;quot;Force terminating (via KILL) $DESCRIPTION&amp;quot;

        PIDS=`pidof $PS` || true

        [ -e $PIDSPATH/$PIDFILE ] &amp;amp;&amp;amp; PIDS2=`cat $PIDSPATH/$PIDFILE`

        for i in $PIDS; do
                if [ &amp;quot;$i&amp;quot; = &amp;quot;$PIDS2&amp;quot; ]; then
                        kill $i
                        removePIDFile
                fi
        done

        log_end_msg $SCRIPT_OK

}

pidof_daemon() {
    PIDS=`pidof $PS` || true

    [ -e $PIDSPATH/$PIDFILE ] &amp;amp;&amp;amp; PIDS2=`cat $PIDSPATH/$PIDFILE`

    for i in $PIDS; do
        if [ &amp;quot;$i&amp;quot; = &amp;quot;$PIDS2&amp;quot; ]; then
            return 1
        fi
    done
    return 0
}

case &amp;quot;$1&amp;quot; in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload)
        stop
        start
        ;;
  reload)
        $1
        ;;
  status)
        status
        ;;
  configtest)
        $1
        ;;
  terminate)
        $1
        ;;
  *)
        FULLPATH=/etc/init.d/$NAME
        echo &amp;quot;Usage: $FULLPATH {start|stop|restart|force-reload|status|configtest|terminate}&amp;quot;
        exit 1
        ;;
esac

exit 0
&lt;/pre&gt;
&lt;p&gt;/etc/init.d/php-fastcgi文件内容：&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-fastcgi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description:       Start and stop php-cgi in external FASTCGI mode
### END INIT INFO

# Author: Kurt Zankl &amp;lt;[EMAIL PROTECTED]&amp;gt;

# Do NOT &amp;quot;set -e&amp;quot;

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC=&amp;quot;php-cgi in external FASTCGI mode&amp;quot;
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
PHP_CONFIG_FILE=/etc/php5/cgi/php.ini

# Exit if the package is not installed
[ -x &amp;quot;$DAEMON&amp;quot; ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] &amp;amp;&amp;amp; . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (&amp;gt;= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ &amp;quot;$START&amp;quot; != &amp;quot;yes&amp;quot; -a &amp;quot;$1&amp;quot; != &amp;quot;stop&amp;quot; ]; then
        log_warning_msg &amp;quot;To enable $NAME, edit /etc/default/$NAME and set START=yes&amp;quot;
        exit 0
fi

# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS=&amp;quot;-q -b $FCGI_HOST:$FCGI_PORT -c $PHP_CONFIG_FILE&amp;quot;

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test &amp;gt; /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
                --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
}

do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE &amp;gt; /dev/null # --name $DAEMON
        RETVAL=&amp;quot;$?&amp;quot;
        [ &amp;quot;$RETVAL&amp;quot; = 2 ] &amp;amp;&amp;amp; return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ &amp;quot;$?&amp;quot; = 2 ] &amp;amp;&amp;amp; return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return &amp;quot;$RETVAL&amp;quot;
}
case &amp;quot;$1&amp;quot; in
  start)
        [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Starting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;
        do_start
        case &amp;quot;$?&amp;quot; in
                0|1) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0 ;;
                2) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Stopping $DESC&amp;quot; &amp;quot;$NAME&amp;quot;
        do_stop
        case &amp;quot;$?&amp;quot; in
                0|1) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0 ;;
                2) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg &amp;quot;Restarting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;
        do_stop
        case &amp;quot;$?&amp;quot; in
          0|1)
                do_start
                case &amp;quot;$?&amp;quot; in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&amp;quot; &amp;gt;&amp;amp;2
        exit 3
        ;;
esac
&lt;/pre&gt;
&lt;p&gt;创建nginx配置文件/etc/nginx/nginx.conf（并实现VirtualHost）&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
user www-data www-data;
worker_processes  4;
events {
    worker_connections  1024;
    use epoll;
}
http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        tcp_nopush     on;
        tcp_nodelay    on;

        keepalive_timeout  65;
        gzip  on;

        include /etc/nginx/sites-enabled/*; #这一句就是实现nginx VirtualHost的
}
&lt;/pre&gt;
&lt;p&gt;创建VirtualHost文件/etc/nginx/sites-available/domain.tld&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
server {
        listen       80;
        server_name  domain.tld www.domain.tld;
        access_log      /srv/www/domain.tld/logs/access.log;
        location / {
                root   /srv/www/domain.tld/public_html;
                index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /usr/html;
        }

        location ~ \.php$ {
                root           /srv/www/domain.tld/public_html;
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
}
&lt;/pre&gt;
&lt;p&gt;Enable VirualHost&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ sudo ln -s /etc/nginx/sites-available/domain.tld /etc/nginx/sites-enabled/domain.tld
&lt;/pre&gt;
&lt;p&gt;启动php-fastcgi和nginx&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ sudo /etc/init.d/php-fastcgi start
$ sudo /etc/init.d/nginx start
&lt;/pre&gt;
&lt;p&gt;配置php-fastcgi和nginx自动启动&lt;/p&gt;
&lt;pre class="brush: bash;"&gt;
$ sudo apt-get install rcconf
$ sudo rcconf # 选中php-fastcgi和nginx
&lt;/pre&gt;
&lt;p&gt;此时，php的配置文件使用/etc/php5/cgi/php.ini。&lt;/p&gt;
&lt;p&gt;创建WordPress的rewrite rule：修改/etc/nginx/sites-available/domain.tld，在location /中添加如下的内容：&lt;/p&gt;
&lt;pre class="brush:shell; highlight: [4, 5, 6];"&gt;
location / {
        root   /srv/www/weigblog.com/public_html;
        index  index.html index.htm index.php;
        if (!-e $request_filename) {
                rewrite (.*) /index.php;
        }
}
&lt;/pre&gt;
&lt;p&gt;其中：&lt;br /&gt;
-e为存在目录或文件&lt;br /&gt;
-d为存在目录&lt;br /&gt;
-f为存在文件&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ratA1McYsDVhPFCCxVkznpKcyQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ratA1McYsDVhPFCCxVkznpKcyQA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ratA1McYsDVhPFCCxVkznpKcyQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ratA1McYsDVhPFCCxVkznpKcyQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=uqDVuz7ahFE:qE7bnRiLR6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=uqDVuz7ahFE:qE7bnRiLR6w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=uqDVuz7ahFE:qE7bnRiLR6w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=uqDVuz7ahFE:qE7bnRiLR6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=uqDVuz7ahFE:qE7bnRiLR6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/uqDVuz7ahFE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/09/16/web-services-change-to-nginx.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/09/16/web-services-change-to-nginx.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/09/16/web-services-change-to-nginx.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[Linode优化LAMP配置]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/6nUzdng1U60/linode-optimize-lamp-config.html" />
		<id>http://www.weigblog.com/?p=478</id>
		<updated>2009-09-16T08:24:16Z</updated>
		<published>2009-09-01T14:31:48Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="configuration" /><category scheme="http://www.weigblog.com" term="hosting" /><category scheme="http://www.weigblog.com" term="lamp" /><category scheme="http://www.weigblog.com" term="linode" /><category scheme="http://www.weigblog.com" term="vps" />		<summary type="html"><![CDATA[我的网站在经过2周左右的测试后，正式决定搬家到Linode。受经济和访问量等因素的综合考虑，我选择了最便宜的VPS方案（Linode 360：360MB内存，16GB存储空间，200GB月流量）。
操作系统上，我选择了Debian 5.0 (Lenny) 64bit。原因是Debian和我常用的Debian/Ubuntu系统最为贴近，安装、配置、管理都比较得心应手。至于64bit和32bit，简单一句话就是，64bit应用会相对更快一些，但也占用了更多的内存（例如一个int在32bit系统中占用4bytes，而在64bit系统中则占用8bytes）。
与很多采用Linode 360方案的人不太一样，我并没有使用传说更加高效的NgineX，而是使用了比较传统的LAMP结构。这样的代价是对于内存的消耗更加苛刻，而优点则是更加传统、经典、久经考验的Apache方案。
正是基于这些原因，我经过大约2周时间的调试，总结出针对我的个人网站来说比较合理的配置方案。
首先是Apache的配置（/etc/apache2/apache2.conf）：

KeepAlive                On
MaxkeepAliveRequest      20
MaxKeepAliveTimeOut      25

&#60;IfModule mpm_prefork_module&#62;
    ServerLimit          30
    StartServers   [...]]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/09/01/linode-optimize-lamp-config.html">&lt;p&gt;我的网站在经过2周左右的测试后，正式决定搬家到&lt;a href="http://www.linode.com/?r=d399a85050ef9caca9080683c2b2249dd45454f6"&gt;Linode&lt;/a&gt;。受经济和访问量等因素的综合考虑，我选择了最便宜的VPS方案（Linode 360：360MB内存，16GB存储空间，200GB月流量）。&lt;/p&gt;
&lt;p&gt;操作系统上，我选择了Debian 5.0 (Lenny) 64bit。原因是Debian和我常用的Debian/Ubuntu系统最为贴近，安装、配置、管理都比较得心应手。至于64bit和32bit，简单一句话就是，64bit应用会相对更快一些，但也占用了更多的内存（例如一个int在32bit系统中占用4bytes，而在64bit系统中则占用8bytes）。&lt;/p&gt;
&lt;p&gt;与很多采用Linode 360方案的人不太一样，我并没有使用传说更加高效的NgineX，而是使用了比较传统的&lt;abbr title="Linux+Apache+MySQL+PHP"&gt;LAMP&lt;/abbr&gt;结构。这样的代价是对于内存的消耗更加苛刻，而优点则是更加传统、经典、久经考验的Apache方案。&lt;/p&gt;
&lt;p&gt;正是基于这些原因，我经过大约2周时间的调试，总结出针对我的个人网站来说比较合理的配置方案。&lt;/p&gt;
&lt;p&gt;首先是Apache的配置（/etc/apache2/apache2.conf）：&lt;/p&gt;
&lt;pre class="brush: plain;"&gt;
KeepAlive                On
MaxkeepAliveRequest      20
MaxKeepAliveTimeOut      25

&amp;lt;IfModule mpm_prefork_module&amp;gt;
    ServerLimit          30
    StartServers          3
    MinSpareServers       3
    MaxSpareServers       7
    MaxClients           20
    MaxRequestsPerChild 500
&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;
&lt;p&gt;接下来是PHP的配置（/etc/php5/apache2/php.ini）：&lt;/p&gt;
&lt;pre class="brush: plain;"&gt;
max_execution_time = 180
max_input_time = 60
memory_limit = 64M
error_reporting  = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
register_globals = Off
&lt;/pre&gt;
&lt;p&gt;最后是MySQL的配置（/etc/mysql/my.conf）：&lt;/p&gt;
&lt;pre class="brush: plain;"&gt;
key_buffer              = 16K
max_allowed_packet      = 3M
thread_stack            = 64K
thread_cache_size       = 8
table_cache             = 3
query_cache_limit       = 1M
query_cache_size        = 16M
#skip-innodb
&lt;/pre&gt;
&lt;p&gt;经过上述配置，在我的网站上，剩余物理内存空间基本能达到100MB左右，即使是峰值流量，也基本不会出现OOM了。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o7OIMHSK9p969wDBnx2W5lwojSc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o7OIMHSK9p969wDBnx2W5lwojSc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o7OIMHSK9p969wDBnx2W5lwojSc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o7OIMHSK9p969wDBnx2W5lwojSc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=6nUzdng1U60:L4_B-Vz0wPo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=6nUzdng1U60:L4_B-Vz0wPo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=6nUzdng1U60:L4_B-Vz0wPo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=6nUzdng1U60:L4_B-Vz0wPo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=6nUzdng1U60:L4_B-Vz0wPo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/6nUzdng1U60" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/09/01/linode-optimize-lamp-config.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/09/01/linode-optimize-lamp-config.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/09/01/linode-optimize-lamp-config.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Wei</name>
						<uri>http://www.weigblog.com/</uri>
					</author>
		<title type="html"><![CDATA[解决Windows Mobile联系人丢失的问题]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/weigblog/~3/F677WsGvooY/windows-mobile-contact-lost.html" />
		<id>http://www.weigblog.com/?p=476</id>
		<updated>2009-10-26T11:15:51Z</updated>
		<published>2009-08-26T14:10:55Z</published>
		<category scheme="http://www.weigblog.com" term="Computer Science" /><category scheme="http://www.weigblog.com" term="cellphone" /><category scheme="http://www.weigblog.com" term="windowsmobile" />		<summary type="html"><![CDATA[那天突然收到一条短信，没有名字，只显示电话号码。从内容上看，虽然我知道发件人是谁，也很确定发件人是在我的联系人列表中的，怎么只提示电话呢。在短信中直接点击电话，却可以正确显示联系人详细信息。从手机联系人中，搜索这类丢失的联系人，也是无功而返。
我的联系人是和Exchange Server同步的，从Outlook中，这些联系人信息是没有任何问题的。但比较疑惑的是，这类联系人在Outlook中会出现在列表的最开始位置（比英文开头的联系人更靠前）。从手机上，却完全找不到这些联系人信息。
非常偶然的机会，从短信中点击电话号码，出现联系人信息，并选择编辑后，突然间发现“显示为”字段为空白。从列表中选择一个名字，所有的显示都正常了。怪异的是这个字段是个DropDown List，不能选择空白的，可它是怎么变为空白的呢？
原因：不明。
]]></summary>
		<content type="html" xml:base="http://www.weigblog.com/2009/08/26/windows-mobile-contact-lost.html">&lt;p&gt;那天突然收到一条短信，没有名字，只显示电话号码。从内容上看，虽然我知道发件人是谁，也很确定发件人是在我的联系人列表中的，怎么只提示电话呢。在短信中直接点击电话，却可以正确显示联系人详细信息。从手机联系人中，搜索这类丢失的联系人，也是无功而返。&lt;/p&gt;
&lt;p&gt;我的联系人是和Exchange Server同步的，从Outlook中，这些联系人信息是没有任何问题的。但比较疑惑的是，这类联系人在Outlook中会出现在列表的最开始位置（比英文开头的联系人更靠前）。从手机上，却完全找不到这些联系人信息。&lt;/p&gt;
&lt;p&gt;非常偶然的机会，从短信中点击电话号码，出现联系人信息，并选择编辑后，突然间发现“显示为”字段为空白。从列表中选择一个名字，所有的显示都正常了。怪异的是这个字段是个DropDown List，不能选择空白的，可它是怎么变为空白的呢？&lt;/p&gt;
&lt;p&gt;原因：不明。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v1GzX1ir62ZvxBVTbSwTu9iG6zE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v1GzX1ir62ZvxBVTbSwTu9iG6zE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v1GzX1ir62ZvxBVTbSwTu9iG6zE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v1GzX1ir62ZvxBVTbSwTu9iG6zE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=F677WsGvooY:ASZyHhr6e6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=F677WsGvooY:ASZyHhr6e6w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=F677WsGvooY:ASZyHhr6e6w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/weigblog?a=F677WsGvooY:ASZyHhr6e6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/weigblog?i=F677WsGvooY:ASZyHhr6e6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/weigblog/~4/F677WsGvooY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.weigblog.com/2009/08/26/windows-mobile-contact-lost.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.weigblog.com/2009/08/26/windows-mobile-contact-lost.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.weigblog.com/2009/08/26/windows-mobile-contact-lost.html</feedburner:origLink></entry>
	</feed>
