<?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>后院&#124;kevin’s backyard &#187; nginx</title>
	<atom:link href="http://kevin.9511.net/archives/tag/nginx/feed" rel="self" type="application/rss+xml" />
	<link>http://kevin.9511.net</link>
	<description>立志做一个混事业型男人</description>
	<lastBuildDate>Fri, 30 Apr 2010 16:55:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>php+nginx实现的文件下载</title>
		<link>http://kevin.9511.net/archives/187.html</link>
		<comments>http://kevin.9511.net/archives/187.html#comments</comments>
		<pubDate>Fri, 22 May 2009 18:43:13 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[技术备案]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://kevin.9511.net/archives/187.html</guid>
		<description><![CDATA[发送X-Accel-Redirect头实现直接定位成静态下载
$root_path = &#8216;/web/www&#8217;; //网站根目录
$file_path = &#8216;/data/t.txt&#8217;;  //文件路径
//发送下载的头信息
header(&#8221;Content-type: application/x-octet-stream&#8221;);
header(&#8221;Accept-Ranges: bytes&#8221;);
header(&#8221;Content-Disposition: attachment; filename=&#8221;.basename($file_path));
header(&#8221;Content-Length: &#8220;.filesize($root_path.$file_path));
//发送文件定位，是相对网站目录的路径
header(&#8221;X-Accel-Redirect: &#8220;.$file_path);
]]></description>
			<content:encoded><![CDATA[<p>发送X-Accel-Redirect头实现直接定位成静态下载</p>
<blockquote><p><span><span class="vars">$root_path = &#8216;/web/www&#8217;; //网站根目录<br />
$file_path = &#8216;/data/t.txt&#8217;;  //文件路径</span></span></p>
<p>//发送下载的头信息<br />
header(&#8221;Content-type: application/x-octet-stream&#8221;);<br />
header(&#8221;Accept-Ranges: bytes&#8221;);<br />
header(&#8221;Content-Disposition: attachment; filename=&#8221;.basename($file_path));<br />
header(&#8221;Content-Length: &#8220;.filesize($root_path.$file_path));</p>
<p>//发送文件定位，是相对网站目录的路径<br />
header(&#8221;X-Accel-Redirect: &#8220;.$file_path);</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://kevin.9511.net/archives/187.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx 和 subversion</title>
		<link>http://kevin.9511.net/archives/179.html</link>
		<comments>http://kevin.9511.net/archives/179.html#comments</comments>
		<pubDate>Tue, 31 Mar 2009 18:42:34 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[技术备案]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://kevin.9511.net/archives/179.html</guid>
		<description><![CDATA[实在厌倦了apache的臃肿，打算彻底投奔nginx的怀抱了。
编译，安装，迁移，一切都很顺利 ，最后一步在迁移svn的时候卡住了。
把nginx作为subversion的前端webserver居然目前没有解决方案……
搞了一个晚上，最终还是采取了proxy的办法，把发向nginx的svn请求转到apache上去了 ，哎。
为啥nginx没有这方面的解决方案，也大概查了个水落石出。因为这方面中文资料实在是少，让我费了颇多的周折，
现在就明明白白的说一下吧。
在nginx.net的Mailing list里，nginx的作者Igor Sysoev说了，支持SVN需要有三个东西
 1) full WebDAV support,
2) DeltaV support,
3) SVN repo format support.
而在nginx里的NginxHttpDavModule，仅仅对以上三项中的第一项WebDAV有了初步的支持(目前来看Igor Sysoev并没有升级的想法)，对于几个高级的WebDAV操作（比如OPTIONS、PROPFIND）并不支持，而这些操作，恰恰是SVN所必须的。而剩下的两项，更是一点支持都没。
所以，就目前来说，想单纯的nginx+subversion，基本上是不可能的。
在刚开始研究这个问题的时候，并不知道除了WebDAV还必须要有其他两个东西。所以满世界找nginx上WebDAV的解决方案，以为搞定这个，就万事大吉了。别说，还真让我在一个老外的博客上给找着一个。这家伙的方法很巧妙，他用通过查阅WebDAV的RFC文档，将绝大多数NginxHttpDavModule不支持的操作用PHP代码实现了，并且通过配置nginx，根据header信息把这些请求重定向到了这个PHP程序。这是这篇博客的地址，有志于自己动手解决这个问题的人，可以参考一下：）
最后感叹一下，为什么计算机方面的问题，总是能在国外的网站和MaillingList找到答案呢？是中国人都不会么？还是这些问题只有我这一个中国人遇到了？
]]></description>
			<content:encoded><![CDATA[<p>实在厌倦了apache的臃肿，打算彻底投奔nginx的怀抱了。<br />
编译，安装，迁移，一切都很顺利 ，最后一步在迁移svn的时候卡住了。<br />
把nginx作为subversion的前端webserver居然目前没有解决方案……</p>
<p>搞了一个晚上，最终还是采取了proxy的办法，把发向nginx的svn请求转到apache上去了 ，哎。<br />
为啥nginx没有这方面的解决方案，也大概查了个水落石出。因为这方面中文资料实在是少，让我费了颇多的周折，<br />
现在就明明白白的说一下吧。</p>
<p>在nginx.net的<a href="http://marc.info/?l=nginx" title="MARC archive" target="_blank">Mailing list</a>里，nginx的作者Igor Sysoev说了，支持SVN需要有三个东西</p>
<blockquote><p> 1) full WebDAV support,<br />
2) DeltaV support,<br />
3) SVN repo format support.</p></blockquote>
<p>而在nginx里的NginxHttpDavModule，仅仅对以上三项中的第一项WebDAV有了初步的支持(目前来看Igor Sysoev并没有升级的想法)，对于几个高级的WebDAV操作（比如OPTIONS、PROPFIND）并不支持，而这些操作，恰恰是SVN所必须的。而剩下的两项，更是一点支持都没。</p>
<p><strong>所以，就目前来说，想单纯的nginx+subversion，基本上是不可能的。</strong></p>
<p>在刚开始研究这个问题的时候，并不知道除了WebDAV还必须要有其他两个东西。所以满世界找nginx上WebDAV的解决方案，以为搞定这个，就万事大吉了。别说，还真让我在一个老外的博客上给找着一个。这家伙的方法很巧妙，他用通过查阅<a href="http://www.ietf.org/rfc/rfc2518.txt" title="RFC2518">WebDAV的RFC文档</a>，将绝大多数NginxHttpDavModule不支持的操作用PHP代码实现了，并且通过配置nginx，根据header信息把这些请求重定向到了这个PHP程序。<a href="http://blog.agoragames.com/2009/03/20/webdav-nginx-play-nice/">这是这篇博客的地址</a>，有志于自己动手解决这个问题的人，可以参考一下：）</p>
<p>最后感叹一下，为什么计算机方面的问题，总是能在国外的网站和MaillingList找到答案呢？是中国人都不会么？还是这些问题只有我这一个中国人遇到了？</p>
]]></content:encoded>
			<wfw:commentRss>http://kevin.9511.net/archives/179.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HowTo: Install Nginx and php-fpm on Linux</title>
		<link>http://kevin.9511.net/archives/166.html</link>
		<comments>http://kevin.9511.net/archives/166.html#comments</comments>
		<pubDate>Fri, 19 Sep 2008 07:15:19 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[技术备案]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>

		<guid isPermaLink="false">http://kevin.9511.net/archives/166.html</guid>
		<description><![CDATA[最近要为公司搭建新的开发环境，打算舍弃用了n年的apache，换换口味，装个nginx试试。
在网上找了很多文档，没有一个能让我顺利安装完成的。还是自己来整理整理吧……
1，Install Pcre
来这里获取Pcre的最新版本
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
#tar -zxf pcre-7.8.tar.gz
#cd pcre-7.8
#./configure
#make
#make install
2. Install Nginx(http://www.nginx.net/)
#tar -zxf nginx-0.6.32.tar.gz
#cd nginx-0.6.32
#./configure &#8211;prefix=/usr/local/nginx-0.6.32
#make
#make install
3. Install PHP with php-fpm (http://www.php.net/)
nginx是通过fastcgi来支持PHP的，使用php-fpm补丁是一个比较方便的管理fastcgi进程的解决方案。
比通过脚本或是lighttpd的spawn模块要简单的多。
下载好PHP后，来这里获取与PHP版本相对应的php-fpm补丁：http://php-fpm.anight.org/
#tar -zxf php-5.2.6.tar.gz
#cd php-5.2.6
#zcat ../php-5.2.6-fpm-0.5.8.diff.gz &#124; patch -p1  #为PHP打补丁
#./configure &#8211;prefix=/usr/local/php-5.2.6 &#8211;with-sqlite=shared &#8211;enable-fastcgi &#8211;enable-fpm
#make
#make install
 注：PHP的其他模块(如mysql、gd等)请按需自己配置
#cp php.ini-recommended /usr/local/php-5.2.6/lib/php.ini
修改php.ini
cgi.fix_pathinfo=1
4. Configuring
A. 配置nginx，在/usr/local/nginx-0.6.32/conf目录下新建名为php_fcgi.conf的文件，内容如下：
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
修改nginx.conf文件，在需要支持PHP的虚拟主机配置中，加入如下一行：
include php_fcgi.conf;
B. 配置php-fpm模块，编辑/usr/local/php-5.2.6/etc/php-fpm.conf文件
找到“Unix user of processes”和“Unix group of processes”两段，将前面注释去掉，并将值改为与nginx配置相同的用户和组。如下：
Unix user of processes
&#60;value [...]]]></description>
			<content:encoded><![CDATA[<p>最近要为公司搭建新的开发环境，打算舍弃用了n年的apache，换换口味，装个nginx试试。<br />
在网上找了很多文档，没有一个能让我顺利安装完成的。还是自己来整理整理吧……</p>
<p><strong>1，Install Pcre</strong></p>
<p>来这里获取Pcre的最新版本<br />
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/</p>
<blockquote><p>#tar -zxf pcre-7.8.tar.gz<br />
#cd pcre-7.8<br />
#./configure<br />
#make<br />
#make install</p></blockquote>
<p><strong>2. Install Nginx</strong>(http://www.nginx.net/)</p>
<blockquote><p>#tar -zxf nginx-0.6.32.tar.gz<br />
#cd nginx-0.6.32<br />
#./configure &#8211;prefix=/usr/local/nginx-0.6.32<br />
#make<br />
#make install</p></blockquote>
<p><strong>3. Install PHP with php-fpm</strong> (http://www.php.net/)</p>
<p>nginx是通过fastcgi来支持PHP的，使用php-fpm补丁是一个比较方便的管理fastcgi进程的解决方案。<br />
比通过脚本或是lighttpd的spawn模块要简单的多。</p>
<p>下载好PHP后，来这里获取与PHP版本相对应的php-fpm补丁：http://php-fpm.anight.org/</p>
<blockquote><p>#tar -zxf php-5.2.6.tar.gz<br />
#cd php-5.2.6<br />
#zcat ../php-5.2.6-fpm-0.5.8.diff.gz | patch -p1  <span style="color: #ff6600;">#为PHP打补丁</span><br />
#./configure &#8211;prefix=/usr/local/php-5.2.6 &#8211;with-sqlite=shared &#8211;enable-fastcgi &#8211;enable-fpm<br />
#make<br />
#make install<br />
<span style="color: #ff6600;"> 注：PHP的其他模块(如mysql、gd等)请按需自己配置</span></p>
<p>#cp php.ini-recommended /usr/local/php-5.2.6/lib/php.ini</p></blockquote>
<p>修改php.ini</p>
<blockquote><p>cgi.fix_pathinfo=1</p></blockquote>
<p><strong>4. Configuring</strong></p>
<p>A. 配置nginx，在/usr/local/nginx-0.6.32/conf目录下新建名为php_fcgi.conf的文件，内容如下：</p>
<blockquote><p>location ~ .php$ {<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_index index.php;<br />
include fastcgi_params;<br />
<span style="color: #ff6600;">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span><br />
}</p></blockquote>
<p>修改nginx.conf文件，在需要支持PHP的虚拟主机配置中，加入如下一行：</p>
<blockquote><p>include php_fcgi.conf;</p></blockquote>
<p>B. 配置php-fpm模块，编辑/usr/local/php-5.2.6/etc/php-fpm.conf文件<br />
找到“Unix user of processes”和“Unix group of processes”两段，将前面注释去掉，并将值改为与nginx配置相同的用户和组。如下：</p>
<blockquote><p>Unix user of processes<br />
&lt;value name=&#8221;user&#8221;&gt;www&lt;/value&gt;</p>
<p>Unix group of processes<br />
&lt;value name=&#8221;group&#8221;&gt;www&lt;/value&gt;</p></blockquote>
<p><strong>5. Test and Over</strong></p>
<p>至此，所有安装配置的工作都已经完成。运行下面两行命令来启动nginx和php-fpm服务：</p>
<blockquote><p>/usr/local/php-5.2.6/sbin/php-fpm start<br />
/usr/local/nginx-0.6.32/sbin/nginx</p></blockquote>
<p>正确配置后，phpinfo() 页应如下显示：<br />
<img src="http://kevin.9511.net/wp-content/uploads/2008/09/phf.png" alt="phf.png" /><br />
CGI/FastCGI work as Server API<br />
<img src="http://kevin.9511.net/wp-content/uploads/2008/09/phf2.png" alt="phf2.png" /><a title="phf2.png" href="http://kevin.9511.net/wp-content/uploads/2008/09/phf2.png"><br />
</a></p>
<p>由于文件内容太长，nginx.conf和虚拟主机的配置文件的内容就不放上来了<br />
将这些乱七八糟的配置文件和php-fpm.conf一起打个包，放在这里提供下载吧</p>
<blockquote><p><a href="http://rui7905.googlecode.com/svn/trunk/nginx_php_fpm" target="_blank">http://rui7905.googlecode.com/svn/trunk/nginx_php_fpm</a></p></blockquote>
<p>在这一堆东西里，还有一个名为nginx.sh的启动控制脚本。<br />
当确认nginx和php-fpm均正确的配置并可以正常运行后，可以使用此脚本进行日常维护。</p>
]]></content:encoded>
			<wfw:commentRss>http://kevin.9511.net/archives/166.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
