<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<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/"
	>

<channel>
	<title>冰刀观察</title>
	<link>http://eckal.com</link>
	<description>A NEW DAY HAS COME</description>
	<pubDate>Tue, 06 Jan 2009 13:49:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>Anehta &#8212; 新一代的web攻击平台</title>
		<link>http://eckal.com/anehta-xinyidaidewebgongjipingtai/anehta-xinyidaidewebgongjipingtai-92/</link>
		<comments>http://eckal.com/anehta-xinyidaidewebgongjipingtai/anehta-xinyidaidewebgongjipingtai-92/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 13:49:44 +0000</pubDate>
		<dc:creator>Eckal</dc:creator>
		
		<category><![CDATA[电脑软件]]></category>

		<guid isPermaLink="false">http://eckal.com/anehta-xinyidaidewebgongjipingtai/anehta-xinyidaidewebgongjipingtai-92/</guid>
		<description><![CDATA[Anehta &#8212; 新一代的web攻击平台
2008-10-30 09:06



来源：http://hi.baidu.com/aullik5/blog/item/203809540b611ac2b745aeee.html
两个礼拜了，从一开始的激动不已，到现在更加激动不已。
有很多想说，又不知从何说起。那么，还是采取FAQ的形式来向大家介绍吧！
Q： 为什么叫：Anehta ?
A： 因为“雅典娜”的名字是 ：athena ，但是这个名字已经被sourceforge上的某人抢了，所以按照“刺氏命名法”，把“athena”反过来，本项目正式命名为： Anehta，中文发音：“阿内塔”
Q： Anehta 项目是做什么的？
A： 简单来说，你可以理解为 AttackAPI + BeEF。 但是Anehta 绝对没有这么简单，因为我实现了很多特有的机制，使得Anehta更加强大以及更加容易扩展。
Q： 没听过什么AttackAPI，还是不知道Anehta是做什么。
A： 更通俗来说，Anehta 就是一个跨站脚本攻击（XSS）的利用平台。
Q：Anehta是用什么语言开发的，对系统有什么要求？
A：由于在一开始就考虑到了通用性、跨平台性、跨浏览器、稳定性、易扩展性，所以Anehta在这方面做的是非常好的。anehta是基于javascript 和 PHP开发的。其中部分用到了 jQuery 框架，虽然anehta 可以独立于jQuery存在，但是考虑到引入jQuery 后，可以大大降低开发模块的成本，所以还是保留了。使用jQuery的另外一个好处就是跨浏览器，因为jQuery 本身是跨浏览器的，所以anehta也很容易做到这点.
使用PHP是因为PHP是当今使用最为广泛的脚本语言之一。(其实有个很不可告人的原因是因为大部分肉鸡都是PHP的吧，嘿嘿，anehta不需要任何perl、python、ruby等脚本支持)
Q：Anehta的架构是什么样的？
A：首先，我使用javascript 实现了一套JS框架，这套框架封装了很多函数和类，是专门用于攻击的一套JS框架。使用这套框架可以非常轻松的开发出威力强大的脚本。这套框架网站开发者也可以使用，可以获得很多强大的功能。
其次，基于这套框架，我开发了许多模块，比如本项目特有的“回旋镖模块”，可以跨域偷取cookie；再比如一个完美的JS键盘记录器等，还有很多功能，我会陆续补充好文档。
再次，anehta拥有非常清晰的结构，XSS后只需要加载一个feed.js，就会自动完成所有工作了。
最后，anehta不是纯客户端的，除了核心的JS攻击框架外，在服务端还利用PHP做了许多处理。
Q：Anehta具有什么特色和优点？
A：Anehta 结构清晰，功能是模块化，开发者可以单独为anehta开发各种各样的模块，以满足独特的需求。
模块之间具有低耦合性，互不影响。同时anehta的模块互相之间可以通信。
此外anetha还实现了很多独特、方便的技术。比如hook模块中，实现了可以hook任意js函数的方法。此外利用flash shared objects实现的水印技术也非常独特，即便用户删除了cookie，从IE切换到了Firefox或是Opera，也照样能够识别出是本人. 而回旋镖模块更是能够将反射型的XSS变成持久型的XSS，实时命令模块等都属于基本功能了。不久后我会补全anehta的文档，包括所有API的使用说明。
Anehta 的另一个特色就是会集成flash、java、css等多种hacking技术于一体，虽然目前还只实现了一小部分，但是我会慢慢把他们都做完。
此外，由于服务端的存在，所以Anehta 是一个平台(Platform)，而并非一个框架(framework)。服务端设计还存在很大的开发潜力。
Q：为什么要做这样一个项目？
A：可以说是心血来潮，也可以说是游戏之作，但是Anehta确实倾注了我的大量心血。从一开始我就总结了很多需求，思考了很多设计上的东西，所以anehta拥有非常好的架构和可扩展性。我的目的是将anehta做成一个集web攻击大成者的平台，所以anehta会涉及到那么多乱七八糟的技术。
出于精简的目的，我舍弃了很多用处不大的功能，但是anehta还将扩展更多强大和实用的功能。在我看来，anehta的js框架部分已经比attackAPI要好了，功能部分更是远远超过了BeEF和XSS Shell！
Q：Anehta针对哪些用户？
A：本项目是为安全工程师进行渗透测试以及演示脚本漏洞的危害而设计，请勿用作非法用途！本项目遵循GPLv3条款，属于开源项目，任何人可以自由复制、使用或修改本代码，本人概不承担法律责任!
Q：Anehta实现了哪些功能？
A：以下是已经实现的功能列表：
* 获取客户端基本信息(浏览器版本/OS version/客户端IP/代理IP/Referer/Request URI);
* Ajax库支持
* 窃取客户端Cookie
* 跨域窃取Cookie（比如我在淘宝上窃取百度的cookie）
* 灵活的XSRF模块
* 客户端DDOS攻击（发起大量请求，CC）
* hook表单提交（Form Sniffer 功能）
* hook 任意javascript 函数；注入任意javascript函数
* 一个优秀的Javascript Keylogger;
* 支持数据加密传输(出于性能考虑，目前暂时使用base64)
* 注入iframe模块（可以实施挂马）
* 模块之间互相通信
* [...]]]></description>
			<content:encoded><![CDATA[<p class="tit">Anehta &#8212; 新一代的web攻击平台</p>
<p class="date">2008-10-30 09:06</p>
<table style="table-layout: fixed">
<tr>
<td>
<p id="blog_text" class="cnt"><font size="4">来源：</font><a href="http://hi.baidu.com/aullik5/blog/item/203809540b611ac2b745aeee.html"><font size="4">http://hi.baidu.com/aullik5/blog/item/203809540b611ac2b745aeee.html</font></a></p>
<p><font size="4">两个礼拜了，从一开始的激动不已，到现在更加激动不已。</p>
<p>有很多想说，又不知从何说起。那么，还是采取FAQ的形式来向大家介绍吧！</p>
<p><strong>Q：</strong> 为什么叫：<font color="#ff0000"><strong>Anehta</strong></font> ?<br />
<strong>A：</strong> 因为“<strong>雅典娜</strong>”的名字是 ：<font color="#0000ff">athena</font> ，但是这个名字已经被sourceforge上的某人抢了，所以按照“刺氏命名法”，把“athena”反过来，本项目正式命名为：<font color="#ff0000"><strong> Anehta</strong></font>，中文发音：“阿内塔”</p>
<p><strong>Q：</strong> Anehta 项目是做什么的？<br />
<strong>A：</strong> 简单来说，你可以理解为 </font><a target="_blank" href="http://www.secapps.com/d/attackapi/application.htm"><strong><font size="4">AttackAPI</font></strong></a><font size="4"> + </font><a target="_blank" href="http://www.bindshell.net/tools/beef"><strong><font size="4">BeEF</font></strong></a><font size="4">。 但是Anehta 绝对没有这么简单，因为我实现了很多特有的机制，使得Anehta更加强大以及更加容易扩展。</p>
<p><strong>Q：</strong> 没听过什么AttackAPI，还是不知道Anehta是做什么。<br />
<strong>A：</strong> 更通俗来说，Anehta 就是一个<strong>跨站脚本攻击（XSS）</strong>的利用平台。</p>
<p><strong>Q：</strong>Anehta是用什么语言开发的，对系统有什么要求？<br />
<strong>A：</strong>由于在一开始就考虑到了<strong>通用性、跨平台性、跨浏览器、稳定性、易扩展性</strong>，所以Anehta在这方面做的是非常好的。anehta是基于<font color="#0000ff"><strong>javascript 和 PHP</strong></font>开发的。其中部分用到了<font color="#0000ff"><strong> jQuery </strong></font>框架，虽然anehta 可以独立于jQuery存在，但是考虑到引入jQuery 后，可以大大降低开发模块的成本，所以还是保留了。使用jQuery的另外一个好处就是跨浏览器，因为jQuery 本身是跨浏览器的，所以anehta也很容易做到这点.</p>
<p>使用PHP是因为PHP是当今使用最为广泛的脚本语言之一。(其实有个很不可告人的原因是因为大部分肉鸡都是PHP的吧，嘿嘿，anehta不需要任何perl、python、ruby等脚本支持)</p>
<p><strong>Q：</strong>Anehta的<font color="#0000ff"><strong>架构</strong></font>是什么样的？<br />
<strong>A：</strong>首先，我使用javascript 实现了一套<font color="#ff0000"><strong>JS框架</strong></font>，这套框架封装了很多函数和类，是<strong>专门用于攻击的一套JS框架</strong>。使用这套框架可以非常轻松的开发出威力强大的脚本。这套框架网站开发者也可以使用，可以获得很多强大的功能。</p>
<p>其次，基于这套框架，我开发了许多<strong>模块</strong>，比如本项目特有的“回旋镖模块”，可以跨域偷取cookie；再比如一个完美的JS键盘记录器等，还有很多功能，我会陆续补充好文档。</p>
<p>再次，anehta拥有非常清晰的结构，<strong>XSS后只需要加载一个feed.js</strong>，就会自动完成所有工作了。</p>
<p>最后，anehta不是纯客户端的，除了核心的JS攻击框架外，在服务端还利用PHP做了许多处理。</p>
<p><strong>Q：</strong>Anehta具有什么<font color="#ff0000"><strong>特色和优点</strong></font>？<br />
<strong>A：</strong>Anehta 结构清晰，功能是模块化，开发者可以单独为anehta开发各种各样的模块，以满足独特的需求。<br />
模块之间具有低耦合性，互不影响。同时anehta的模块互相之间可以通信。</p>
<p>此外anetha还实现了很多独特、方便的技术。比如hook模块中，实现了可以<strong>hook任意js函数</strong>的方法。此外利用flash shared objects实现的<font color="#0000ff"><strong>水印技术</strong></font>也非常独特，<strong>即便用户删除了cookie，从IE切换到了Firefox或是Opera，也照样能够识别出是本人</strong>. 而回旋镖模块更是<font color="#ff0000"><strong>能够将反射型的XSS变成持久型的XSS</strong></font>，实时命令模块等都属于基本功能了。不久后我会补全anehta的文档，包括所有API的使用说明。</p>
<p>Anehta 的另一个特色就是会<font color="#0000ff"><strong>集成flash、java、css等多种hacking技术于一体</strong></font>，虽然目前还只实现了一小部分，但是我会慢慢把他们都做完。</p>
<p>此外，由于服务端的存在，所以Anehta 是一个<strong>平台(Platform)</strong>，而并非一个框架(framework)。服务端设计还存在很大的开发潜力。</p>
<p><strong>Q：</strong>为什么要做这样一个项目？<br />
<strong>A：</strong>可以说是心血来潮，也可以说是游戏之作，但是Anehta确实倾注了我的大量心血。从一开始我就总结了很多需求，思考了很多设计上的东西，所以anehta拥有非常好的架构和可扩展性。我的目的是将anehta做成一个<font color="#0000ff"><strong>集web攻击大成者</strong></font>的平台，所以anehta会涉及到那么多乱七八糟的技术。</p>
<p>出于精简的目的，我舍弃了很多用处不大的功能，但是anehta还将扩展更多强大和实用的功能。在我看来，anehta的js框架部分已经比attackAPI要好了，功能部分更是远远超过了BeEF和XSS Shell！</p>
<p><strong>Q：</strong>Anehta针对哪些用户？<br />
<strong>A：本项目是为安全工程师进行渗透测试以及演示脚本漏洞的危害而设计，请勿用作非法用途！本项目遵循GPLv3条款，属于开源项目，任何人可以自由复制、使用或修改本代码，本人概不承担法律责任!</strong></p>
<p><strong>Q：</strong>Anehta实现了哪些功能？<br />
<strong>A：</strong>以下是<font color="#ff0000"><strong>已经实现的功能列表</strong></font>：<br />
* 获取客户端基本信息(浏览器版本/OS version/客户端IP/代理IP/Referer/Request URI);<br />
* Ajax库支持<br />
* 窃取客户端Cookie<br />
* 跨域窃取Cookie（比如我在淘宝上窃取百度的cookie）<br />
* 灵活的XSRF模块<br />
* 客户端DDOS攻击（发起大量请求，CC）<br />
* hook表单提交（Form Sniffer 功能）<br />
* hook 任意javascript 函数；注入任意javascript函数<br />
* 一个优秀的Javascript Keylogger;<br />
* 支持数据加密传输(出于性能考虑，目前暂时使用base64)<br />
* 注入iframe模块（可以实施挂马）<br />
* 模块之间互相通信<br />
* 独特的客户端水印，使得删除cookie、切换浏览器也能识别到用户<br />
* logger虚拟守护进程（定时检查所有模块的输出，并记录到服务器）<br />
    窃取剪贴板的内容（仅仅支持IE）<br />
* 客户端地理位置查询<br />
* 在线的web代理，支持自定义cookie访问站点（第三方实现）<br />
* 实时命令模块<br />
* 扫描浏览器的历史记录<br />
    一个基于JS的端口扫描器<br />
* 获取客户端软件信息（比如是否安装了QQ、迅雷等）<br />
* 邮件通知模块</p>
<p><strong>Q：</strong>Anehta未来会怎么发展？<br />
<strong>A：</strong>我会持续开发和扩展Anehta，在不久的未来<font color="#0000ff">会完善英文文档</font>并对外正式发布。目前计划里的<font color="#0000ff"><strong>蓝图</strong></font>如下：<br />
<em><strong>Client-Side</strong></em>：<br />
* GIFAR支持<br />
    ClickJacking/XSIO支持<br />
    XSS Worm Module<br />
    获取显示器分辨率<br />
    钓鱼模块（可以欺骗用户从而获取密码等）<br />
    获取客户端真实IP<br />
* 更加强大的扫描模块<br />
    JS压缩、变形（让anehta更小巧）<br />
    Cross Site Sql Injection 模块（对注射的支持）<br />
* 客户端代理模块（直接利用客户端访问网站，这在攻击内部系统时很有用）<br />
* 检查IM或者网站的登录状态<br />
* 更多的子窗口控制功能<br />
* 调用activex的一些方法<br />
* pipeline（管道功能，具体作用暂且保密）<br />
* 验证码的支持<br />
    将大量功能集成到flash和java中<br />
    Heap Spray 、 Heap Fengshui 模块，帮助更方便写客户端exploit<br />
    升级和传播模块<br />
    支持加载第三方攻击库，比如attackAPI<br />
    新技术的支持（HTML5,AS3,CSS3等）<br />
    &#8230;&#8230;</p>
<p><em><strong>Server-Side:</strong></em><br />
* 通过IM自动通知Master<br />
* 通过手机短信自动通知Master<br />
    客户端session保持以及session fixation支持<br />
* 良好的多主机管理以及更加友好的界面<br />
    feed.js 生成器<br />
* 数据库支持(Mysql 或 sqlite);<br />
    更加友好的log输出</p>
<p><em><strong>Both Client and Server:</strong></em><br />
* 窃取客户端文件(Ajax Upload)</p>
<p>Anehta还有一些bug和不足，先不列到这里了，我会持续改进，此外由于我对UI和美化一窍不通，所以目前<font color="#800000"><strong>界面还很丑，将就着用吧！</strong></font></p>
<p>哪位朋友有心也可以帮我写写<strong>UI</strong>。</p>
<p>最后，啰嗦了这么多，是不是等不及了呢？<br />
那么，要看演示的，可以到这里下载录像：<br />
</font><a target="_blank" href="http://www.secwiki.com/anehta/demo/anehtaDEMO.zip"><font size="4">http://www.secwiki.com/anehta/demo/anehtaDEMO.zip</font></a></p>
<p><font size="4">也可以在线观看，不过文件比较大，有20多M<br />
</font><a target="_blank" href="http://www.secwiki.com/anehta/demo/anehta.html"><font size="4">http://www.secwiki.com/anehta/demo/anehta.html</font></a></p>
<p><font size="4">想体验一下？ 到这里访问demo页面：<br />
</font><a target="_blank" href="http://www.secwiki.com/anehta/demo.html"><font size="4">http://www.secwiki.com/anehta/demo.html</font></a><font size="4"> DEMO页面是一个被XSS的页面</p>
<p>粗陋的后台是在：<br />
</font><a target="_blank" href="http://www.secwiki.com/anehta/admin.php"><font size="4">http://www.secwiki.com/anehta/admin.php</font></a><font size="4"> 在这里可以看到被XSS后的结果。</p>
<p>请参考我制作的录像</p>
<p>FF的用户请关闭noscript扩展，拦截了就没得玩了撒</p>
<p>项目首页：<br />
</font><a target="_blank" href="http://anehta.googlecode.com/"><font size="4">http://anehta.googlecode.com</font></a></p>
<p><font size="4">源代码获取：<br />
</font><a target="_blank" href="http://code.google.com/p/anehta/source/checkout"><font size="4">http://code.google.com/p/anehta/source/checkout</font></a></p>
<p><font size="4">打包下载：(下次地址变更了，有个文件忘记打包了)<br />
</font><a target="_blank" href="http://anehta.googlecode.com/files/anehta-v0.5.5fixed.zip"><font size="4">http://anehta.googlecode.com/files/anehta-v0.5.5fixed.zip</font></a></p>
<p><font size="4">镜像：</font><a target="_blank" href="http://www.nukeblog.cn/anehta/anehta-v0.5.5fixed.zip"><font size="4">http://www.nukeblog.cn/anehta/anehta-v0.5.5fixed.zip<br />
</font></a><br />
<font size="4">不包含QQWry.dat 的版本：(314k，需要有QQWray.dat才能正常运行)<br />
</font><a target="_blank" href="http://anehta.googlecode.com/files/anehta-v0.5.5_fixed_withoutQQWry.zip"><font size="4">http://anehta.googlecode.com/files/anehta-v0.5.5_fixed_withoutQQWry.zip</font></a></p>
<p><font size="4">QQWry单独下载：(4M, 下载后放到anehta根目录)<br />
</font><a target="_blank" href="http://anehta.googlecode.com/files/QQWry.zip"><font size="4">http://anehta.googlecode.com/files/QQWry.zip</font></a></p>
<p><font size="4">-EOF-</font></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://eckal.com/anehta-xinyidaidewebgongjipingtai/anehta-xinyidaidewebgongjipingtai-92/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nginx 0.7.x + PHP 5.2.8（FastCGI）搭建胜过Apache十倍的Web服务器（第4版)</title>
		<link>http://eckal.com/nginx07xphp528fastcgidajianshengguoapacheshibeidewebfuwuqidi4ban/nginx07xphp528fastcgidajianshengguoapacheshibeidewebfuwuqidi4ban-91/</link>
		<comments>http://eckal.com/nginx07xphp528fastcgidajianshengguoapacheshibeidewebfuwuqidi4ban/nginx07xphp528fastcgidajianshengguoapacheshibeidewebfuwuqidi4ban-91/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 14:13:07 +0000</pubDate>
		<dc:creator>Eckal</dc:creator>
		
		<category><![CDATA[电脑软件]]></category>

		<guid isPermaLink="false">http://eckal.com/nginx07xphp528fastcgidajianshengguoapacheshibeidewebfuwuqidi4ban/nginx07xphp528fastcgidajianshengguoapacheshibeidewebfuwuqidi4ban-91/</guid>
		<description><![CDATA[[文章作者：张宴 本文版本：v4.10 最后修改：2008.12.23 转载请注明原文链接：http://blog.s135.com/post/366.htm]
　　前言：本文是我撰写的关于搭建“Nginx + PHP（FastCGI）”Web服务器的第4篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一，为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章，安装、配置方式与第3篇文章相差不大，但配置参数有不同。Nginx 0.7.x系列版本虽然为开发版，但在很多大型网站的生产环境中已经使用。
　　链接：《2007年9月的第1版》、《2007年12月的第2版》、《2008年6月的第3版》
　　
　　Nginx (&#8221;engine x&#8221;) 是一个高性能的 HTTP 和反向代理服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。
　　Nginx 超越 Apache 的高性能和稳定性，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中包括新浪博客、新浪播客、网易新闻等门户网站频道，六间房、56.com等视频分享网站，Discuz!官方论坛、水木社区等知名论坛，豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。

　　Nginx 的官方中文维基：http://wiki.codemongers.com/NginxChs


　　在高并发连接的情况下，Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果，Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 可以承受3万以上的并发连接数，相当于同等环境下Apache的10倍。
　　根据我的经验，4GB内存的服务器+Apache（prefork模式）一般只能处理3000个并发连接，因为它们将占用3GB以上的内存，还得为系统预留1GB的内存。我曾经就有两台Apache服务器，因为在配置文件中设置的MaxClients为4000，当Apache并发连接数达到3800时，导致服务器内存和Swap空间用满而崩溃。
　　而这台 Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 服务器在3万并发连接下，开启的10个Nginx进程消耗150M内存（15M*10=150M），开启的64个php-cgi进程消耗1280M内存（20M*64=1280M），加上系统自身消耗的内存，总共消耗不到2GB内存。如果服务器内存较小，完全可以只开启25个php-cgi进程，这样php-cgi消耗的总内存数才500M。
　　在3万并发连接下，访问Nginx 0.7.27 + PHP 5.2.8 [...]]]></description>
			<content:encoded><![CDATA[<p>[文章作者：张宴 本文版本：v4.10 最后修改：<span style="color: #ff0000">2008.12.23</span> 转载请注明原文链接：<a target="_blank" href="http://blog.s135.com/post/366.htm"><font color="#4f6371">http://blog.s135.com/post/366.htm</font></a>]</p>
<p>　　前言：本文是我撰写的关于搭建“Nginx + PHP（FastCGI）”Web服务器的第4篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一，为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章，安装、配置方式与第3篇文章相差不大，但配置参数有不同。Nginx 0.7.x系列版本虽然为开发版，但在很多大型网站的生产环境中已经使用。</p>
<p>　　链接：《<a target="_blank" href="http://blog.s135.com/read.php/297.htm"><font color="#4f6371">2007年9月的第1版</font></a>》、《<a target="_blank" href="http://blog.s135.com/read.php/314.htm"><font color="#4f6371">2007年12月的第2版</font></a>》、《<a target="_blank" href="http://blog.s135.com/read.php/351.htm"><font color="#4f6371">2008年6月的第3版</font></a>》</p>
<p>　　<a target="_blank" href="http://blog.s135.com/attachment/200806/nginx.png"><img border="0" src="http://blog.s135.com/attachment/200806/nginx.png" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" class="insertimage" /></a></p>
<p>　　<a target="_blank" href="http://www.nginx.net/"><font color="#4f6371">Nginx</font></a> (&#8221;engine x&#8221;) 是一个高性能的 HTTP 和反向代理服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。</p>
<p>　　Nginx 超越 Apache 的高性能和稳定性，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中包括<a target="_blank" href="http://blog.sina.com.cn/"><font color="#4f6371">新浪博客</font></a>、<a target="_blank" href="http://v.sina.com.cn/"><font color="#4f6371">新浪播客</font></a>、<a target="_blank" href="http://news.163.com/"><font color="#4f6371">网易新闻</font></a>等门户网站频道，<a target="_blank" href="http://www.6.cn/"><font color="#4f6371">六间房</font></a>、<a target="_blank" href="http://www.56.com/"><font color="#4f6371">56.com</font></a>等视频分享网站，<a target="_blank" href="http://www.discuz.net/"><font color="#4f6371">Discuz!官方论坛</font></a>、<a target="_blank" href="http://www.newsmth.net/"><font color="#4f6371">水木社区</font></a>等知名论坛，<a target="_blank" href="http://www.douban.com/"><font color="#4f6371">豆瓣</font></a>、<a target="_blank" href="http://www.yupoo.com/"><font color="#4f6371">YUPOO相册</font></a>、<a target="_blank" href="http://www.hainei.com/"><font color="#4f6371">海内SNS</font></a>、<a target="_blank" href="http://www.xunlei.com/"><font color="#4f6371">迅雷在线</font></a>等新兴Web 2.0网站。</p>
<hr />
　　Nginx 的官方中文维基：<a target="_blank" href="http://wiki.codemongers.com/NginxChs"><font color="#4f6371">http://wiki.codemongers.com/NginxChs</font></a></p>
<p><font color="#4f6371"><br />
<hr />
</font>　　在高并发连接的情况下，Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果，<strong>Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 可以承受3万以上的并发连接数，相当于同等环境下Apache的10倍</strong>。</p>
<p>　　根据我的经验，4GB内存的服务器+Apache（prefork模式）一般只能处理3000个并发连接，因为它们将占用3GB以上的内存，还得为系统预留1GB的内存。我曾经就有两台Apache服务器，因为在配置文件中设置的MaxClients为4000，当Apache并发连接数达到3800时，导致服务器内存和Swap空间用满而崩溃。</p>
<p>　　而这台 Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 服务器在3万并发连接下，开启的10个Nginx进程消耗150M内存（15M*10=150M），开启的64个php-cgi进程消耗1280M内存（20M*64=1280M），加上系统自身消耗的内存，总共消耗不到2GB内存。如果服务器内存较小，完全可以只开启25个php-cgi进程，这样php-cgi消耗的总内存数才500M。</p>
<p>　　在3万并发连接下，访问Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 服务器的PHP程序，仍然速度飞快。下图为Nginx的状态监控页面，显示的活动连接数为28457（关于Nginx的监控页配置，会在本文接下来所给出的Nginx配置文件中写明）：</p>
<p>　　<a target="_blank" href="http://blog.s135.com/attachment/200712/nginx_status.png"><img border="0" src="http://blog.s135.com/attachment/200712/nginx_status.png" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" class="insertimage" /></a></p>
<p>　　我生产环境下的两台Nginx + PHP5（FastCGI）服务器，跑多个一般复杂的纯PHP动态程序，单台Nginx + PHP5（FastCGI）服务器跑PHP动态程序的处理能力已经超过“<span style="color: #ff0000">700次请求/秒</span>”，相当于每天可以承受6000万（700*60*60*24=60480000）的访问量（<a target="_blank" href="http://blog.s135.com/read.php/334.htm"><font color="#4f6371">更多信息见此</font></a>），而服务器的系统负载也不高：</p>
<p>　　<a target="_blank" href="http://blog.s135.com/attachment/200803/nginx_php_la.gif"><img border="0" src="http://blog.s135.com/attachment/200803/nginx_php_la.gif" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" class="insertimage" /></a></p>
<hr />
　　安装步骤：<br />
　　（系统要求：Linux 2.6+ 内核，本文中的Linux操作系统为CentOS 5.1，另在RedHat AS4上也安装成功）</p>
<p>　　<strong>一、获取相关开源程序：</strong><br />
　　1、利用CentOS Linux系统自带的yum命令安装、升级所需的程序库（RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包，进行安装）：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">sudo -s<br />
LANG=C<br />
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel</p>
<p>　　2、RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包（事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在，通常是“xxx-devel”不存在，需要安装）。RedHat可以直接利用CentOS的RPM包安装，以下是RPM包下载网址：<br />
　　①、RedHat AS4 &amp; CentOS 4<br />
　　<a target="_blank" href="http://mirror.be10.com/centos/4/os/i386/CentOS/RPMS/"><font color="#4f6371">http://mirror.be10.com/centos/4/os/i386/CentOS/RPMS/</font></a><br />
　　<a target="_blank" href="http://mirror.be10.com/centos/4/os/x86_64/CentOS/RPMS/"><font color="#4f6371">http://mirror.be10.com/centos/4/os/x86_64/CentOS/RPMS/</font></a></p>
<p>　　②、RedHat AS5 &amp; CentOS 5<br />
　　<a target="_blank" href="http://mirror.be10.com/centos/5/os/i386/CentOS/"><font color="#4f6371">http://mirror.be10.com/centos/5/os/i386/CentOS/</font></a><br />
　　<a target="_blank" href="http://mirror.be10.com/centos/5/os/x86_64/CentOS/"><font color="#4f6371">http://mirror.be10.com/centos/5/os/x86_64/CentOS/</font></a></p>
<p>　　③、RPM包搜索网站<br />
　　<a target="_blank" href="http://rpm.pbone.net/"><font color="#4f6371">http://rpm.pbone.net/</font></a><br />
　　<a target="_blank" href="http://www.rpmfind.net/"><font color="#4f6371">http://www.rpmfind.net/</font></a></p>
<p>　　3、下载程序源码包：<br />
　　本文中提到的所有开源软件为截止到2008年12月17日的最新稳定版。<br />
　　①、从软件的官方网站下载：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">mkdir -p /data0/software<br />
cd /data0/software<br />
wget <a target="_blank" href="http://sysoev.ru/nginx/nginx-0.7.27.tar.gz"><font color="#4f6371">http://sysoev.ru/nginx/nginx-0.7.27.tar.gz</font></a><br />
wget <a target="_blank" href="http://www.php.net/get/php-5.2.8.tar.gz/from/this/mirror"><font color="#4f6371">http://www.php.net/get/php-5.2.8.tar.gz/from/this/mirror</font></a><br />
wget <a target="_blank" href="http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz"><font color="#4f6371">http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz</font></a><br />
wget <a target="_blank" href="http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mirrors.24-7-solutions.net/pub/mysql/"><font color="#4f6371">http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mirrors.24-7-solutions.net/pub/mysql/</font></a><br />
wget <a target="_blank" href="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz"><font color="#4f6371">http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz</font></a><br />
wget &#8220;http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&amp;big_mirror=0&#8243;<br />
wget &#8220;http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.7.tar.gz?modtime=1194463373&amp;big_mirror=0&#8243;<br />
wget <a target="_blank" href="http://pecl.php.net/get/memcache-2.2.4.tgz"><font color="#4f6371">http://pecl.php.net/get/memcache-2.2.4.tgz</font></a><br />
wget &#8220;http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&amp;big_mirror=0&#8243;<br />
wget <a target="_blank" href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz"><font color="#4f6371">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz</font></a><br />
wget <a target="_blank" href="http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2"><font color="#4f6371">http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2</font></a><br />
wget <a target="_blank" href="http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz"><font color="#4f6371">http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz</font></a><br />
　　②、从<a target="_blank" href="http://blog.s135.com/"><font color="#4f6371">blog.s135.com</font></a>下载（比较稳定，只允许在本站，或者在Linux/Unix下通过Wget、Curl等命令下载以下软件）：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">mkdir -p /data0/software<br />
cd /data0/software<br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.27.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.27.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.8.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.8.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.8-fpm-0.5.10.diff.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.8-fpm-0.5.10.diff.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.30.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.30.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.12.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.12.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.7.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.7.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.4.tgz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.4.tgz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.8.tar.gz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.8.tar.gz</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2</font></a><br />
wget <a target="_blank" href="http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz"><font color="#4f6371">http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz</font></a><br />
<font color="#4f6371"><br />
<hr />
</font>　　<strong>二、安装PHP 5.2.8（FastCGI模式）</strong><br />
　　1、编译安装PHP 5.2.8所需的支持库：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">tar zxvf libiconv-1.12.tar.gz<br />
cd libiconv-1.12/<br />
./configure &#8211;prefix=/usr/local<br />
make<br />
make install<br />
cd ../</p>
<p>tar zxvf libmcrypt-2.5.8.tar.gz<br />
cd libmcrypt-2.5.8/<br />
./configure<br />
make<br />
make install<br />
/sbin/ldconfig<br />
cd libltdl/<br />
./configure &#8211;enable-ltdl-install<br />
make<br />
make install<br />
cd ../../</p>
<p>tar zxvf mhash-0.9.9.tar.gz<br />
cd mhash-0.9.9/<br />
./configure<br />
make<br />
make install<br />
cd ../</p>
<p>ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la<br />
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so<br />
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4<br />
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8<br />
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a<br />
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la<br />
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so<br />
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2<br />
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1</p>
<p>tar zxvf mcrypt-2.6.7.tar.gz<br />
cd mcrypt-2.6.7/<br />
/sbin/ldconfig<br />
./configure<br />
make<br />
make install<br />
cd ../</p>
<hr />
　　2、编译安装MySQL 5.1.30</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/usr/sbin/groupadd mysql<br />
/usr/sbin/useradd -g mysql mysql<br />
tar zxvf mysql-5.1.30.tar.gz<br />
cd mysql-5.1.30/<br />
./configure &#8211;prefix=/usr/local/webserver/mysql/ &#8211;enable-assembler &#8211;with-extra-charsets=complex &#8211;enable-thread-safe-client &#8211;with-big-tables &#8211;with-readline &#8211;with-ssl &#8211;with-embedded-server &#8211;enable-local-infile &#8211;with-innodb<br />
make &amp;&amp; make install<br />
chmod +w /usr/local/webserver/mysql<br />
chown -R mysql:mysql /usr/local/webserver/mysql<br />
cp support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf<br />
cd ../</p>
<hr />
　　附：以下为附加步骤，如果你想在这台服务器上运行MySQL数据库，则执行以下两步。如果你只是希望让PHP支持MySQL扩展库，能够连接其他服务器上的MySQL数据库，那么，以下两步无需执行。<br />
　　①、以mysql用户帐号的身份建立数据表：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/usr/local/webserver/mysql/bin/mysql_install_db &#8211;basedir=/usr/local/webserver/mysql &#8211;datadir=/usr/local/webserver/mysql/data &#8211;user=mysql</p>
<p>　　②、启动MySQL（最后的&amp;表示在后台运行）</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe &#8211;defaults-file=/usr/local/webserver/mysql/my.cnf &amp;</p>
<hr />
　　3、编译安装PHP（FastCGI模式）</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">tar zxvf php-5.2.8.tar.gz<br />
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1<br />
cd php-5.2.8/<br />
./configure &#8211;prefix=/usr/local/webserver/php &#8211;with-config-file-path=/usr/local/webserver/php/etc &#8211;with-mysql=/usr/local/webserver/mysql &#8211;with-mysqli=/usr/local/webserver/mysql/bin/mysql_config &#8211;with-iconv-dir=/usr/local &#8211;with-freetype-dir &#8211;with-jpeg-dir &#8211;with-png-dir &#8211;with-zlib &#8211;with-libxml-dir=/usr &#8211;enable-xml &#8211;disable-rpath &#8211;enable-discard-path &#8211;enable-safe-mode &#8211;enable-bcmath &#8211;enable-shmop &#8211;enable-sysvsem &#8211;enable-inline-optimization &#8211;with-curl &#8211;with-curlwrappers &#8211;enable-mbregex &#8211;enable-fastcgi &#8211;enable-fpm &#8211;enable-force-cgi-redirect &#8211;enable-mbstring &#8211;with-mcrypt &#8211;with-gd &#8211;enable-gd-native-ttf &#8211;with-openssl &#8211;with-mhash &#8211;enable-pcntl &#8211;enable-sockets<br />
make ZEND_EXTRA_LIBS=&#8217;-liconv&#8217;<br />
make install<br />
cp php.ini-dist /usr/local/webserver/php/etc/php.ini<br />
cd ../</p>
<hr />
　　4、编译安装PHP5扩展模块</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">tar zxvf memcache-2.2.4.tgz<br />
cd memcache-2.2.4/<br />
/usr/local/webserver/php/bin/phpize<br />
./configure &#8211;with-php-config=/usr/local/webserver/php/bin/php-config<br />
make<br />
make install<br />
cd ../</p>
<p>tar jxvf eaccelerator-0.9.5.3.tar.bz2<br />
cd eaccelerator-0.9.5.3/<br />
/usr/local/webserver/php/bin/phpize<br />
./configure &#8211;enable-eaccelerator=shared &#8211;with-php-config=/usr/local/webserver/php/bin/php-config<br />
make<br />
make install<br />
cd ../</p>
<p>tar zxvf PDO_MYSQL-1.0.2.tgz<br />
cd PDO_MYSQL-1.0.2/<br />
/usr/local/webserver/php/bin/phpize<br />
./configure &#8211;with-php-config=/usr/local/webserver/php/bin/php-config &#8211;with-pdo-mysql=/usr/local/webserver/mysql<br />
make<br />
make install<br />
cd ../</p>
<p>　　5、修改php.ini文件<br />
　　<strong>手工修改：</strong>查找/usr/local/webserver/php/etc/php.ini中的extension_dir = &#8220;./&#8221;<br />
　　修改为extension_dir = &#8220;/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/&#8221;<br />
　　并在此行后增加以下几行，然后保存：<br />
　　extension = &#8220;memcache.so&#8221;<br />
　　extension = &#8220;pdo_mysql.so&#8221;</p>
<p>　　再查找output_buffering = Off<br />
　　修改为output_buffering = On</p>
<p>　　<strong>自动修改：</strong>若嫌手工修改麻烦，可执行以下shell命令，自动完成对php.ini文件的修改：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">sed -i &#8217;s#extension_dir = &#8220;./&#8221;#extension_dir = &#8220;/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/&#8221;\nextension = &#8220;memcache.so&#8221;\nextension = &#8220;pdo_mysql.so&#8221;\n#&#8217; /usr/local/webserver/php/etc/php.ini<br />
sed -i &#8217;s#output_buffering = Off#output_buffering = On#&#8217; /usr/local/webserver/php/etc/php.ini</p>
<p>　　6、配置eAccelerator加速PHP：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">mkdir -p /usr/local/webserver/eaccelerator_cache<br />
vi /usr/local/webserver/php/etc/php.ini<br />
　　按shift+g键跳到配置文件的最末尾，加上以下配置信息：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">[eaccelerator]<br />
zend_extension=&#8221;/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so&#8221;<br />
eaccelerator.shm_size=&#8221;128&#8243;<br />
eaccelerator.cache_dir=&#8221;/usr/local/webserver/eaccelerator_cache&#8221;<br />
eaccelerator.enable=&#8221;1&#8243;<br />
eaccelerator.optimizer=&#8221;1&#8243;<br />
eaccelerator.check_mtime=&#8221;1&#8243;<br />
eaccelerator.debug=&#8221;0&#8243;<br />
eaccelerator.filter=&#8221;"<br />
eaccelerator.shm_max=&#8221;0&#8243;<br />
eaccelerator.shm_ttl=&#8221;300&#8243;<br />
eaccelerator.shm_prune_period=&#8221;120&#8243;<br />
eaccelerator.shm_only=&#8221;0&#8243;<br />
eaccelerator.compress=&#8221;1&#8243;<br />
eaccelerator.compress_level=&#8221;9&#8243;</p>
<p>　　修改配置文件：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">vi /etc/sysctl.conf</p>
<p>　　输入以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">kernel.shmmax = 134217728</p>
<p>　　然后执行以下命令使配置生效：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/sbin/sysctl -p</p>
<hr />
　　7、创建www用户和组，以及供blog.s135.com和<a target="_blank" href="http://www.s135.com/"><font color="#4f6371">www.s135.com</font></a>两个虚拟主机使用的目录：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/usr/sbin/groupadd www<br />
/usr/sbin/useradd -g www www<br />
mkdir -p /data0/htdocs/blog<br />
chmod +w /data0/htdocs/blog<br />
chown -R www:www /data0/htdocs/blog<br />
mkdir -p /data0/htdocs/www<br />
chmod +w /data0/htdocs/www<br />
chown -R www:www /data0/htdocs/www</p>
<p>　　8、创建php-fpm配置文件（php-fpm是为PHP打的一个FastCGI管理补丁，可以平滑变更php.ini配置而无需重启php-cgi）：<br />
　　在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">rm -f /usr/local/webserver/php/etc/php-fpm.conf<br />
vi /usr/local/webserver/php/etc/php-fpm.conf<br />
　　输入以下内容（如果您安装 Nginx + PHP 用于程序调试，请将以下的&lt;value name=&#8221;display_errors&#8221;&gt;0&lt;/value&gt;改为&lt;value name=&#8221;display_errors&#8221;&gt;1&lt;/value&gt;，以便显示PHP错误信息，否则，Nginx 会报状态为500的空白错误页）：</p>
<p class="dp-highlighter">
<p class="bar">
<p class="tools"><a href="http://blog.s135.com/#" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;"><font color="#808080">view plain</font></a><a href="http://blog.s135.com/#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><font color="#808080">copy to clipboard</font></a><a href="http://blog.s135.com/#" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;"><font color="#808080">print</font></a><a href="http://blog.s135.com/#" onclick="dp.sh.Toolbar.Command('About',this);return false;"><font color="#808080">?</font></a></p>
<ol class="dp-xml">
<li class="alt"><span><strong><span class="tag"><font color="#0000ff">&lt;?</font></span><span class="tag-name">xml</span></strong><span> </span><span class="attribute"><font color="#ff0000">version</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">&#8220;1.0&#8243;</font></span><span> </span><span class="tag"><strong><font color="#0000ff">?&gt;</font></strong></span><span>  </span></span></li>
<li><span></span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">configuration</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>  All relative paths in this config are relative to php&#8217;s install prefix   </span></li>
<li class="alt"><span>  </span></li>
<li><span>  </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">section</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;global_options&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>    Pid file   </span></li>
<li class="alt"><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;pid_file&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/usr/local/webserver/php/logs/php-fpm.pid</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>    Error log file   </span></li>
<li><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;error_log&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/usr/local/webserver/php/logs/php-fpm.log</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>    Log level   </span></li>
<li class="alt"><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;log_level&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>notice</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>    When this amount of php processes exited with SIGSEGV or SIGBUS &#8230;   </span></li>
<li><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;emergency_restart_threshold&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>10</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>    &#8230; in a less than this interval of time, a graceful restart will be initiated.   </span></li>
<li class="alt"><span>    Useful to work around accidental curruptions in accelerator&#8217;s shared memory.   </span></li>
<li><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;emergency_restart_interval&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>1m</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>    Time limit on waiting child&#8217;s reaction on signals from master   </span></li>
<li class="alt"><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;process_control_timeout&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>5s</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>    Set to &#8217;no&#8217; to debug fpm   </span></li>
<li><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;daemonize&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>yes</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>  </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">section</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>  </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">workers</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">section</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;pool&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Name of pool. Used in logs and stats.   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;name&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>default</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      Address to accept fastcgi requests on.   </span></li>
<li><span>      Valid syntax is &#8217;ip.ad.re.ss:port&#8217; or just &#8217;port&#8217; or &#8217;/path/to/unix/socket&#8217;   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;listen_address&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>127.0.0.1:9000</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;listen_options&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>        Set listen(2) backlog   </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;backlog&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>-1</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>        Set permissions for unix socket, if one used.   </span></li>
<li class="alt"><span>        In Linux read/write permissions must be set in order to allow connections from web server.   </span></li>
<li><span>        Many BSD-derrived systems allow connections regardless of permissions.   </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;owner&#8221;</span><strong><span class="tag">&gt;</span><span class="tag">&lt;/</span></strong></font><strong><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;group&#8221;</span><strong><span class="tag">&gt;</span><span class="tag">&lt;/</span></strong></font><strong><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;mode&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>0666</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Additional php.ini defines, specific to this pool of workers.   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;php_defines&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;sendmail_path&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/usr/sbin/sendmail -t -i</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;display_errors&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>1</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Unix user of processes   </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;user&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>www</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      Unix group of processes   </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;group&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>www</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Process manager settings   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;pm&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>        Sets style of controling worker process count.   </span></li>
<li><span>        Valid values are &#8217;static&#8217; and &#8217;apache-like&#8217;   </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;style&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>static</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>        Sets the limit on the number of simultaneous requests that will be served.   </span></li>
<li><span>        Equivalent to Apache MaxClients directive.   </span></li>
<li class="alt"><span>        Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi   </span></li>
<li><span>        Used with any pm_style.   </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;max_children&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>128</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>        Settings group for &#8217;apache-like&#8217; pm style   </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;apache_like&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>          Sets the number of server processes created on startup.   </span></li>
<li class="alt"><span>          Used only when &#8217;apache-like&#8217; pm_style is selected   </span></li>
<li><span>          </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;StartServers&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>20</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>          Sets the desired minimum number of idle server processes.   </span></li>
<li class="alt"><span>          Used only when &#8217;apache-like&#8217; pm_style is selected   </span></li>
<li><span>          </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;MinSpareServers&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>5</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>          Sets the desired maximum number of idle server processes.   </span></li>
<li class="alt"><span>          Used only when &#8217;apache-like&#8217; pm_style is selected   </span></li>
<li><span>          </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;MaxSpareServers&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>35</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      The timeout (in seconds) for serving a single request after which the worker process will be terminated   </span></li>
<li class="alt"><span>      Should be used when &#8217;max_execution_time&#8217; ini option does not stop script execution for some reason   </span></li>
<li><span>      &#8217;0s&#8217; means &#8217;off&#8217;   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;request_terminate_timeout&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>0s</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file   </span></li>
<li><span>      &#8217;0s&#8217; means &#8217;off&#8217;   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;request_slowlog_timeout&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>0s</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      The log file for slow requests   </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;slowlog&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>logs/slow.log</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Set open file desc rlimit   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;rlimit_files&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>51200</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      Set max core size rlimit   </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;rlimit_core&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>0</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Chroot to this directory at the start, absolute path   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;chroot&#8221;</span><strong><span class="tag">&gt;</span><span class="tag">&lt;/</span></strong></font><strong><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      Chdir to this directory at the start, absolute path   </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;chdir&#8221;</span><strong><span class="tag">&gt;</span><span class="tag">&lt;/</span></strong></font><strong><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Redirect workers&#8217; stdout and stderr into main error log.   </span></li>
<li class="alt"><span>      If not set, they will be redirected to /dev/null, according to FastCGI specs   </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;catch_workers_output&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>yes</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      How much requests each process should execute before respawn.   </span></li>
<li class="alt"><span>      Useful to work around memory leaks in 3rd party libraries.   </span></li>
<li><span>      For endless request processing please specify 0   </span></li>
<li class="alt"><span>      Equivalent to PHP_FCGI_MAX_REQUESTS   </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;max_requests&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>500</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>      Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.   </span></li>
<li class="alt"><span>      Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)   </span></li>
<li><span>      Makes sense only with AF_INET listening socket.   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;allowed_clients&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>127.0.0.1</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>      Pass environment variables like LD_LIBRARY_PATH   </span></li>
<li><span>      All $VARIABLEs are taken from current environment   </span></li>
<li class="alt"><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;environment&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;HOSTNAME&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>$HOSTNAME</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;PATH&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/usr/local/bin:/usr/bin:/bin</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;TMP&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/tmp</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;TMPDIR&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/tmp</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;TEMP&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>/tmp</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;OSTYPE&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>$OSTYPE</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;MACHTYPE&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>$MACHTYPE</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>        </span><strong><span class="tag"><font color="#0000ff">&lt;</font></span><span class="tag-name">value</span></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><font color="#0000ff"><span class="attribute-value">&#8220;MALLOC_CHECK_&#8221;</span><span class="tag"><strong>&gt;</strong></span></font><span>2</span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li><span>      </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">value</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>    </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">section</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span>  </span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">workers</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
<li class="alt"><span>  </span></li>
<li><span></span><strong><span class="tag"><font color="#0000ff">&lt;/</font></span><span class="tag-name">configuration</span><span class="tag"><font color="#0000ff">&gt;</font></span></strong><span>  </span></li>
</ol>
<p><textarea cols="100" rows="15" name="code" style="display: none" class="xml">&lt;?xml version=&#8221;1.0&#8243; ?&gt; &lt;configuration&gt;    All relative paths in this config are relative to php&#8217;s install prefix    &lt;section name=&#8221;global_options&#8221;&gt;      Pid file     &lt;value name=&#8221;pid_file&#8221;&gt;/usr/local/webserver/php/logs/php-fpm.pid&lt;/value&gt;      Error log file     &lt;value name=&#8221;error_log&#8221;&gt;/usr/local/webserver/php/logs/php-fpm.log&lt;/value&gt;      Log level     &lt;value name=&#8221;log_level&#8221;&gt;notice&lt;/value&gt;      When this amount of php processes exited with SIGSEGV or SIGBUS &#8230;     &lt;value name=&#8221;emergency_restart_threshold&#8221;&gt;10&lt;/value&gt;      &#8230; in a less than this interval of time, a graceful restart will be initiated.     Useful to work around accidental curruptions in accelerator&#8217;s shared memory.     &lt;value name=&#8221;emergency_restart_interval&#8221;&gt;1m&lt;/value&gt;      Time limit on waiting child&#8217;s reaction on signals from master     &lt;value name=&#8221;process_control_timeout&#8221;&gt;5s&lt;/value&gt;      Set to &#8216;no&#8217; to debug fpm     &lt;value name=&#8221;daemonize&#8221;&gt;yes&lt;/value&gt;    &lt;/section&gt;    &lt;workers&gt;      &lt;section name=&#8221;pool&#8221;&gt;        Name of pool. Used in logs and stats.       &lt;value name=&#8221;name&#8221;&gt;default&lt;/value&gt;        Address to accept fastcgi requests on.       Valid syntax is &#8216;ip.ad.re.ss:port&#8217; or just &#8216;port&#8217; or &#8216;/path/to/unix/socket&#8217;       &lt;value name=&#8221;listen_address&#8221;&gt;127.0.0.1:9000&lt;/value&gt;        &lt;value name=&#8221;listen_options&#8221;&gt;          Set listen(2) backlog         &lt;value name=&#8221;backlog&#8221;&gt;-1&lt;/value&gt;          Set permissions for unix socket, if one used.         In Linux read/write permissions must be set in order to allow connections from web server.         Many BSD-derrived systems allow connections regardless of permissions.         &lt;value name=&#8221;owner&#8221;&gt;&lt;/value&gt;         &lt;value name=&#8221;group&#8221;&gt;&lt;/value&gt;         &lt;value name=&#8221;mode&#8221;&gt;0666&lt;/value&gt;       &lt;/value&gt;        Additional php.ini defines, specific to this pool of workers.       &lt;value name=&#8221;php_defines&#8221;&gt;         &lt;value name=&#8221;sendmail_path&#8221;&gt;/usr/sbin/sendmail -t -i&lt;/value&gt;         &lt;value name=&#8221;display_errors&#8221;&gt;1&lt;/value&gt;       &lt;/value&gt;        Unix user of processes         &lt;value name=&#8221;user&#8221;&gt;www&lt;/value&gt;        Unix group of processes         &lt;value name=&#8221;group&#8221;&gt;www&lt;/value&gt;        Process manager settings       &lt;value name=&#8221;pm&#8221;&gt;          Sets style of controling worker process count.         Valid values are &#8217;static&#8217; and &#8216;apache-like&#8217;         &lt;value name=&#8221;style&#8221;&gt;static&lt;/value&gt;          Sets the limit on the number of simultaneous requests that will be served.         Equivalent to Apache MaxClients directive.         Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi         Used with any pm_style.         &lt;value name=&#8221;max_children&#8221;&gt;128&lt;/value&gt;          Settings group for &#8216;apache-like&#8217; pm style         &lt;value name=&#8221;apache_like&#8221;&gt;            Sets the number of server processes created on startup.           Used only when &#8216;apache-like&#8217; pm_style is selected           &lt;value name=&#8221;StartServers&#8221;&gt;20&lt;/value&gt;            Sets the desired minimum number of idle server processes.           Used only when &#8216;apache-like&#8217; pm_style is selected           &lt;value name=&#8221;MinSpareServers&#8221;&gt;5&lt;/value&gt;            Sets the desired maximum number of idle server processes.           Used only when &#8216;apache-like&#8217; pm_style is selected           &lt;value name=&#8221;MaxSpareServers&#8221;&gt;35&lt;/value&gt;          &lt;/value&gt;        &lt;/value&gt;        The timeout (in seconds) for serving a single request after which the worker process will be terminated       Should be used when &#8216;max_execution_time&#8217; ini option does not stop script execution for some reason       &#8217;0s&#8217; means &#8216;off&#8217;       &lt;value name=&#8221;request_terminate_timeout&#8221;&gt;0s&lt;/value&gt;        The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file       &#8217;0s&#8217; means &#8216;off&#8217;       &lt;value name=&#8221;request_slowlog_timeout&#8221;&gt;0s&lt;/value&gt;        The log file for slow requests       &lt;value name=&#8221;slowlog&#8221;&gt;logs/slow.log&lt;/value&gt;        Set open file desc rlimit       &lt;value name=&#8221;rlimit_files&#8221;&gt;51200&lt;/value&gt;        Set max core size rlimit       &lt;value name=&#8221;rlimit_core&#8221;&gt;0&lt;/value&gt;        Chroot to this directory at the start, absolute path       &lt;value name=&#8221;chroot&#8221;&gt;&lt;/value&gt;        Chdir to this directory at the start, absolute path       &lt;value name=&#8221;chdir&#8221;&gt;&lt;/value&gt;        Redirect workers&#8217; stdout and stderr into main error log.       If not set, they will be redirected to /dev/null, according to FastCGI specs       &lt;value name=&#8221;catch_workers_output&#8221;&gt;yes&lt;/value&gt;        How much requests each process should execute before respawn.       Useful to work around memory leaks in 3rd party libraries.       For endless request processing please specify 0       Equivalent to PHP_FCGI_MAX_REQUESTS       &lt;value name=&#8221;max_requests&#8221;&gt;500&lt;/value&gt;        Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.       Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)       Makes sense only with AF_INET listening socket.       &lt;value name=&#8221;allowed_clients&#8221;&gt;127.0.0.1&lt;/value&gt;        Pass environment variables like LD_LIBRARY_PATH       All $VARIABLEs are taken from current environment       &lt;value name=&#8221;environment&#8221;&gt;         &lt;value name=&#8221;HOSTNAME&#8221;&gt;$HOSTNAME&lt;/value&gt;         &lt;value name=&#8221;PATH&#8221;&gt;/usr/local/bin:/usr/bin:/bin&lt;/value&gt;         &lt;value name=&#8221;TMP&#8221;&gt;/tmp&lt;/value&gt;         &lt;value name=&#8221;TMPDIR&#8221;&gt;/tmp&lt;/value&gt;         &lt;value name=&#8221;TEMP&#8221;&gt;/tmp&lt;/value&gt;         &lt;value name=&#8221;OSTYPE&#8221;&gt;$OSTYPE&lt;/value&gt;         &lt;value name=&#8221;MACHTYPE&#8221;&gt;$MACHTYPE&lt;/value&gt;         &lt;value name=&#8221;MALLOC_CHECK_&#8221;&gt;2&lt;/value&gt;       &lt;/value&gt;      &lt;/section&gt;    &lt;/workers&gt;  &lt;/configuration&gt;</textarea>　　9、启动php-cgi进程，监听127.0.0.1的9000端口，进程数为200（如果服务器内存小于3GB，可以只开启64个进程），用户为www：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">ulimit -SHn 51200<br />
/usr/local/webserver/php/sbin/php-fpm start<br />
　　注：/usr/local/webserver/php/sbin/php-fpm还有其他参数，包括：start|stop|quit|restart|reload|logrotate，修改php.ini后不重启php-cgi，重新加载配置文件使用reload。</p>
<hr />
　　<strong>三、安装Nginx 0.7.27</strong><br />
　　1、安装Nginx所需的pcre库：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">tar zxvf pcre-7.8.tar.gz<br />
cd pcre-7.8/<br />
./configure<br />
make &amp;&amp; make install<br />
cd ../</p>
<p>　　2、安装Nginx</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">tar zxvf nginx-0.7.27.tar.gz<br />
cd nginx-0.7.27/<br />
./configure &#8211;user=www &#8211;group=www &#8211;prefix=/usr/local/webserver/nginx &#8211;with-http_stub_status_module &#8211;with-http_ssl_module<br />
make &amp;&amp; make install<br />
cd ../</p>
<p>　　3、创建Nginx日志目录</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">mkdir -p /data1/logs<br />
chmod +w /data1/logs<br />
chown -R www:www /data1/logs</p>
<p>　　4、创建Nginx配置文件<br />
　　①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">rm -f /usr/local/webserver/nginx/conf/nginx.conf<br />
vi /usr/local/webserver/nginx/conf/nginx.conf<br />
　　输入以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">user  www www;</p>
<p>worker_processes 8;</p>
<p>error_log  /data1/logs/nginx_error.log  crit;</p>
<p>pid        /usr/local/webserver/nginx/nginx.pid;</p>
<p>#Specifies the value for maximum file descriptors that can be opened by this process.<br />
worker_rlimit_nofile 51200;</p>
<p>events<br />
{<br />
 use epoll;<br />
 worker_connections 51200;<br />
}</p>
<p>http<br />
{<br />
 include       mime.types;<br />
 default_type  application/octet-stream;</p>
<p> #charset  gb2312;<br />
     <br />
 server_names_hash_bucket_size 128;<br />
 client_header_buffer_size 32k;<br />
 large_client_header_buffers 4 32k;<br />
 client_max_body_size 8m;<br />
     <br />
 sendfile on;<br />
 tcp_nopush     on;</p>
<p> keepalive_timeout 60;</p>
<p> tcp_nodelay on;</p>
<p> fastcgi_connect_timeout 300;<br />
 fastcgi_send_timeout 300;<br />
 fastcgi_read_timeout 300;<br />
 fastcgi_buffer_size 64k;<br />
 fastcgi_buffers 4 64k;<br />
 fastcgi_busy_buffers_size 128k;<br />
 fastcgi_temp_file_write_size 128k;</p>
<p> gzip on;<br />
 gzip_min_length  1k;<br />
 gzip_buffers     4 16k;<br />
 gzip_http_version 1.0;<br />
 gzip_comp_level 2;<br />
 gzip_types       text/plain application/x-javascript text/css application/xml;<br />
 gzip_vary on;</p>
<p> #limit_zone  crawler  $binary_remote_addr  10m;</p>
<p> server<br />
 {<br />
   listen       80;<br />
   server_name  blog.s135.com;<br />
   index index.html index.htm index.php;<br />
   root  /data0/htdocs/blog;</p>
<p>   #limit_conn   crawler  20;    <br />
                           <br />
   location ~ .*\.(php|php5)?$<br />
   {      <br />
     #fastcgi_pass  unix:/tmp/php-cgi.sock;<br />
     fastcgi_pass  127.0.0.1:9000;<br />
     fastcgi_index index.php;<br />
     include fcgi.conf;<br />
   }<br />
   <br />
   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$<br />
   {<br />
     expires      30d;<br />
   }</p>
<p>   location ~ .*\.(js|css)?$<br />
   {<br />
     expires      1h;<br />
   }    </p>
<p>   log_format  access  &#8217;$remote_addr - $remote_user [$time_local] &#8220;$request&#8221; &#8216;<br />
             &#8217;$status $body_bytes_sent &#8220;$http_referer&#8221; &#8216;<br />
             &#8217;&#8221;$http_user_agent&#8221; $http_x_forwarded_for&#8217;;<br />
   access_log  /data1/logs/access.log  access;<br />
     }</p>
<p> server<br />
 {<br />
   listen       80;<br />
   server_name  <a target="_blank" href="http://www.s135.com;/"><font color="#4f6371">www.s135.com;</font></a><br />
   index index.html index.htm index.php;<br />
   root  /data0/htdocs/www;</p>
<p>   location ~ .*\.(php|php5)?$<br />
   {      <br />
     #fastcgi_pass  unix:/tmp/php-cgi.sock;<br />
     fastcgi_pass  127.0.0.1:9000;<br />
     fastcgi_index index.php;<br />
     include fcgi.conf;<br />
   }</p>
<p>   log_format  wwwlogs  &#8217;$remote_addr - $remote_user [$time_local] &#8220;$request&#8221; &#8216;<br />
              &#8216;$status $body_bytes_sent &#8220;$http_referer&#8221; &#8216;<br />
              &#8216;&#8221;$http_user_agent&#8221; $http_x_forwarded_for&#8217;;<br />
   access_log  /data1/logs/wwwlogs.log  wwwlogs;<br />
 }</p>
<p> server<br />
 {<br />
   listen  80;<br />
   server_name  status.blog.s135.com;</p>
<p>   location / {<br />
   stub_status on;<br />
   access_log   off;<br />
   }<br />
 }<br />
}</p>
<p>　　②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">vi /usr/local/webserver/nginx/conf/fcgi.conf</p>
<p>　　输入以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;<br />
fastcgi_param  SERVER_SOFTWARE    nginx;</p>
<p>fastcgi_param  QUERY_STRING       $query_string;<br />
fastcgi_param  REQUEST_METHOD     $request_method;<br />
fastcgi_param  CONTENT_TYPE       $content_type;<br />
fastcgi_param  CONTENT_LENGTH     $content_length;</p>
<p>fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;<br />
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;<br />
fastcgi_param  REQUEST_URI        $request_uri;<br />
fastcgi_param  DOCUMENT_URI       $document_uri;<br />
fastcgi_param  DOCUMENT_ROOT      $document_root;<br />
fastcgi_param  SERVER_PROTOCOL    $server_protocol;</p>
<p>fastcgi_param  REMOTE_ADDR        $remote_addr;<br />
fastcgi_param  REMOTE_PORT        $remote_port;<br />
fastcgi_param  SERVER_ADDR        $server_addr;<br />
fastcgi_param  SERVER_PORT        $server_port;<br />
fastcgi_param  SERVER_NAME        $server_name;</p>
<p># PHP only, required if PHP was built with &#8211;enable-force-cgi-redirect<br />
fastcgi_param  REDIRECT_STATUS    200;</p>
<p>　　5、启动Nginx</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">ulimit -SHn 51200<br />
/usr/local/webserver/nginx/sbin/nginx</p>
<hr />
　　<strong>四、配置开机自动启动Nginx + PHP</strong></p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">vi /etc/rc.local</p>
<p>　　在末尾增加以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">ulimit -SHn 51200<br />
/usr/local/webserver/php/sbin/php-fpm start<br />
/usr/local/webserver/nginx/sbin/nginx</p>
<hr />
　　<strong>五、优化Linux内核参数</strong></p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">vi /etc/sysctl.conf</p>
<p>　　在末尾增加以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">net.ipv4.tcp_fin_timeout = 30<br />
net.ipv4.tcp_keepalive_time = 300<br />
net.ipv4.tcp_syncookies = 1<br />
net.ipv4.tcp_tw_reuse = 1<br />
net.ipv4.tcp_tw_recycle = 1<br />
net.ipv4.ip_local_port_range = 5000    65000</p>
<p>　　使配置立即生效：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/sbin/sysctl -p</p>
<hr />
　　<strong>六、在不停止Nginx服务的情况下平滑变更Nginx配置</strong><br />
　　1、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后，请执行以下命令检查配置文件是否正确：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">/usr/local/webserver/nginx/sbin/nginx -t</p>
<p>　　如果屏幕显示以下两行信息，说明配置文件正确：<br />
　　<span style="color: #008000">the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok<br />
　　the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully</span></p>
<p>　　2、这时，输入以下命令查看Nginx主进程号：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">ps -ef | grep &#8220;nginx: master process&#8221; | grep -v &#8220;grep&#8221; | awk -F &#8216; &#8216; &#8216;{print $2}&#8217;</p>
<p>　　屏幕显示的即为Nginx主进程号，例如：<br />
　　<span style="color: #008000">6302</span><br />
　　这时，执行以下命令即可使修改过的Nginx配置文件生效：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">kill -HUP 6302</p>
<p>　　或者无需这么麻烦，找到Nginx的Pid文件：</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`</p>
<hr />
　　<strong>七、编写每天定时切割Nginx日志的脚本</strong><br />
　　1、创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh</p>
<p>　　输入以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">#!/bin/bash<br />
# This script run at 00:00</p>
<p># The Nginx logs path<br />
logs_path=&#8221;/usr/local/webserver/nginx/logs/&#8221;</p>
<p>mkdir -p ${logs_path}$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/<br />
mv ${logs_path}access.log ${logs_path}$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/access_$(date -d &#8220;yesterday&#8221; +&#8221;%Y%m%d&#8221;).log<br />
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`</p>
<p>　　2、设置crontab，每天凌晨00:00切割nginx访问日志</p>
<p style="margin: 5px 5px 0px; background-color: #ffffff; border: #00a0c6 1px dashed; padding: 3px">crontab -e</p>
<p>　　输入以下内容：</p>
<p class="quote">
<p class="quote-title">引用</p>
<p class="quote-content">00 00 * * * /bin/bash  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh</p>
<hr />
　　本文若有小的修改，会第一时间在以下网址发布：<br />
　　<a target="_blank" href="http://blog.s135.com/post/366.htm"><font color="#4f6371">http://blog.s135.com/post/366.htm</font></a></p>
<p><font color="#4f6371"><br />
<hr />
</font>　　<strong>附：文章修改历史</strong></p>
<p>　　● [2008年08月29日] [Version 4.0] 撰写本文</p>
<p>　　● [2008年09月03日] [Version 4.1] 修改了nginx.conf文件有关gzip压缩的项，“gzip_http_version 1.1;”改为“gzip_http_version 1.0;”，增加一项“gzip_vary on;”，目的是为了让Nginx前端的Squid 2.5/2.6缓存服务器能够缓存经过gzip压缩的页面。另外，将nginx版本由0.7.13升级到最新的0.7.14。</p>
<p>　　● [2008年10月06日] [Version 4.2] 增加第七章──“编写每天定时切割Nginx日志的脚本”；升级Nginx版本到0.7.17；升级PHP FastCGI补丁到php-5.2.6-fpm-0.5.9.diff.gz；修改php-fpm.conf配置文件。</p>
<p>　　● [2008年10月26日] [Version 4.3] 升级Nginx版本到0.7.19。</p>
<p>　　● [2008年11月02日] [Version 4.4] 升级MySQL版本到5.1.29-rc。对文中涉及到的开源软件增加blog.s135.com下载点。</p>
<p>　　● [2008年11月11日] [Version 4.5] MySQL编译参数加上对InnoDB存储引擎的支持。</p>
<p>　　● [2008年11月14日] [Version 4.6] 解决在某些64位CentOS系统上，编译PHP时出现的libcrypto和libcurl无法找到的错误；升级Nginx版本到0.7.21。</p>
<p>　　● [2008年11月24日] [Version 4.7] 为PHP增加PDO_MYSQL扩展支持；升级PHP的Memcache扩展到2.2.4版本；升级PCRE版本到0.7.8；升级Nginx版本到0.7.22。</p>
<p>　　● [2008年12月12日] [Version 4.8] 升级Nginx版本到0.7.26；升级MySQL版本到5.1.30。</p>
<p>　　● [2008年12月17日] [Version 4.9] 编译PHP时的“sed -i &#8217;s#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#&amp; -liconv#&#8217; Makefile”和“make”两条语句改为“make ZEND_EXTRA_LIBS=&#8217;-liconv&#8217;”；升级Nginx版本到0.7.27；升级PHP版本到5.2.8；升级PHP FastCGI补丁到php-5.2.8-fpm-0.5.10.diff.gz。</p>
<p>　　● [2008年12月23日] [Version 4.10] 编译PHP时增加此三项支持：&#8211;with-mhash &#8211;enable-pcntl &#8211;enable-sockets</p>
<p>　　（全文完）</p>
<p style="display: block" class="tags">Tags: <a rel="tag" href="http://blog.s135.com/tag.php?tag=linux" title="Tags:  linux"><font color="#4f6371">linux</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=php" title="Tags:  php"><font color="#4f6371">php</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=mysql" title="Tags:  mysql"><font color="#4f6371">mysql</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=nginx" title="Tags:  nginx"><font color="#4f6371">nginx</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=apache" title="Tags:  apache"><font color="#4f6371">apache</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=html" title="Tags:  html"><font color="#4f6371">html</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=centos" title="Tags:  centos"><font color="#4f6371">centos</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=http" title="Tags:  http"><font color="#4f6371">http</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=apc" title="Tags:  apc"><font color="#4f6371">apc</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=xcache" title="Tags:  xcache"><font color="#4f6371">xcache</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=memcached" title="Tags:  memcached"><font color="#4f6371">memcached</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=httpd" title="Tags:  httpd"><font color="#4f6371">httpd</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=memcache" title="Tags:  memcache"><font color="#4f6371">memcache</font></a> , <a rel="tag" href="http://blog.s135.com/tag.php?tag=epoll" title="Tags:  epoll"><font color="#4f6371">epoll</font></a></p>
<p class="textbox-bottom"><font color="#4f6371"><img src="http://pic1.s135.com/images/rewin/tree_linemiddle.gif" style="margin: 3px 1px -4px 0px" /></font> <a href="http://blog.s135.com/category_8.htm" title="查看分类： 技术大类">技术大类</a> » <a href="http://blog.s135.com/category_12.htm" title="查看分类： Web服务器">Web服务器</a> | <a href="http://blog.s135.com/post/366.htm#reply" title="发表您的评论">评论(135)</a> | <a href="javascript:%20void(0);" onclick="showhidediv("tb366"); if (document.getElementById("tbb366")) document.getElementById("tbb366").innerHTML=decodetburl("0%104%116%116%112%58%47%47%98%108%111%103%46%115%49%51%53%46%99%111%109%47%116%98%46%112%104%112%63%116%61%51%54%54%38%97%109%112%59%101%120%116%114%97%61%51%54%102%99%101", 1, 366);" title="查看引用地址">引用(0)</a> | <a href="http://blog.s135.com/post/366.htm">阅读(28604)</a></p>
<p style="display: none" id="tb366" class="textbox-tburl"><strong>引用地址：</strong> <span id="tbb366"></span><br />
<strong>注意：</strong> 该地址仅在今日23:59:59之前有效</p>
<p id="commentWrapper" class="comment-wrapper"><a name="topreply"></a></p>
<p id="blogcomment1459">
<p class="commentbox">
<p class="commentbox-title">ritto <a href="mailto:ritto.zhao@wswtek.com"><img border="0" src="http://blog.s135.com/template/RuiPai/images/email.gif" alt="Email" title="给他/她发邮件" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-8-29 21:48 </font></p>
<p class="commentbox-content">更新真是迅速呀，刚还在对着文档做你写的第三版的实验呢。 哥们，辛苦了~~ 赞一个</p>
<p style="display: none" id="replied_com_1459" class="quote">&nbsp;</p>
<p id="blogcomment1460">
<p class="commentbox">
<p class="commentbox-title">can</p>
<p class="commentbox-label"><font color="#337099">2008-8-29 22:11 </font></p>
<p class="commentbox-content">php-cgi进程经常出现僵尸进程，占用大量cpu，可能是什么原因？</p>
<p style="display: none" id="replied_com_1460" class="quote">&nbsp;</p>
<p id="blogcomment1463">
<p class="commentbox">
<p class="commentbox-title">wayne</p>
<p class="commentbox-label"><font color="#337099">2008-8-30 09:54 </font></p>
<p class="commentbox-content">又更新了,学习了,张兄</p>
<p style="display: none" id="replied_com_1463" class="quote">&nbsp;</p>
<p id="blogcomment1464">
<p class="commentbox">
<p class="commentbox-title">wayne</p>
<p class="commentbox-label"><font color="#337099">2008-8-30 10:10 </font></p>
<p class="commentbox-content">有一点不是很清楚,为什么这次用ea不用xcache呢,是不是xcache不是很稳定?</p>
<p>张宴对nginx在中国的推广的确是为了不少贡献.</p>
<p style="display: block" id="replied_com_1464" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-1 14:53</p>
<p class="quote-content">生产环境下，当缓存的PHP二进制文件太多，以至于超过shm_size后，eAccelerator在性能方面要高于Xcache</p>
<p id="blogcomment1466">
<p class="commentbox">
<p class="commentbox-title">chinauui <a target="_blank" href="http://www.chinauui.com/"><img border="0" src="http://blog.s135.com/template/RuiPai/images/homepage.gif" alt="Homepage" title="访问他/她的主页" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-8-30 18:35 </font></p>
<p class="commentbox-content">张大师又出手了</p>
<p>啥时候给我们写一篇简单的squid的配置帮助吧</p>
<p style="display: none" id="replied_com_1466" class="quote">&nbsp;</p>
<p id="blogcomment1465">
<p class="commentbox">
<p class="commentbox-title">chinauui <a target="_blank" href="http://www.chinauui.com/"><img border="0" src="http://blog.s135.com/template/RuiPai/images/homepage.gif" alt="Homepage" title="访问他/她的主页" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-8-30 18:36 </font></p>
<p class="commentbox-content">晕！发重复了</p>
<p>支持一下！</p>
<p style="display: none" id="replied_com_1465" class="quote">&nbsp;</p>
<p id="blogcomment1468">
<p class="commentbox">
<p class="commentbox-title">den <a href="mailto:dengjiuhong@gmail.com"><img border="0" src="http://blog.s135.com/template/RuiPai/images/email.gif" alt="Email" title="给他/她发邮件" /></a> <a target="_blank" href="http://www.hellochina.com/"><img border="0" src="http://blog.s135.com/template/RuiPai/images/homepage.gif" alt="Homepage" title="访问他/她的主页" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-8-31 02:41 </font></p>
<p class="commentbox-content">post 上传图片的时候出现：411 Length Required 错误，同样的程序在apache下面没有报错，不知道张兄有没有遇到类似的问题？<br />
<img border="0" src="http://blog.s135.com/images/emot/smile.gif" alt="smile" /></p>
<p style="display: none" id="replied_com_1468" class="quote">&nbsp;</p>
<p id="blogcomment1469">
<p class="commentbox">
<p class="commentbox-title">dd_macle</p>
<p class="commentbox-label"><font color="#337099">2008-8-31 13:29 </font></p>
<p class="commentbox-content">关注。。。。。</p>
<p style="display: none" id="replied_com_1469" class="quote">&nbsp;</p>
<p id="blogcomment1470">
<p class="commentbox">
<p class="commentbox-title">onefish</p>
<p class="commentbox-label"><font color="#337099">2008-9-1 10:58 </font></p>
<p class="commentbox-content">真有3万的并发吗？能否用PHPINFO页面做一个测试结果？按文中配置完后，并未发现比apache高出这么多。甚至不如apache的perfoce方式快？apache与Nginx真有这么大的差距吗？</p>
<p style="display: block" id="replied_com_1470" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-1 14:28</p>
<p class="quote-content">下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器，一台为Nginx，另一台为Apache，Nginx每秒处理的请求数是Apache的两倍多，Nginx服务器的系统负载、CPU使用率远低于Apache：<br />
（你可以将连接数开到10000～30000，去压Nginx和Apache上的phpinfo.php，用浏览器访问Nginx上的phpinfo.php一切正常，而访问Apache服务器的phpinfo.php，则是该页无法显示。）<br />
（webbench 下载地址：<a target="_blank" href="http://blog.s135.com/read.php/288.htm"><font color="#4f6371">http://blog.s135.com/read.php/288.htm</font></a>）</p>
<p>##### Nginx + PHP #####</p>
<p>[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a target="_blank" href="http://192.168.1.21/phpinfo.php"><font color="#4f6371">http://192.168.1.21/phpinfo.php</font></a><br />
Webbench - Simple Web Benchmark 1.5<br />
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.</p>
<p>Benchmarking: GET <a target="_blank" href="http://192.168.1.21/phpinfo.php"><font color="#4f6371">http://192.168.1.21/phpinfo.php</font></a><br />
100 clients, running 30 sec.</p>
<p>Speed=102450 pages/min, 16490596 bytes/sec.<br />
Requests: 51225 susceed, 0 failed.</p>
<p>top - 14:06:13 up 27 days,  2:25,  2 users,  load average: 14.57, 9.89, 6.51<br />
Tasks: 287 total,   4 running, 283 sleeping,   0 stopped,   0 zombie<br />
Cpu(s): 49.9% us,  6.7% sy,  0.0% ni, 41.4% id,  1.1% wa,  0.1% hi,  0.8% si<br />
Mem:   6230016k total,  2959468k used,  3270548k free,   635992k buffers<br />
Swap:  2031608k total,     3696k used,  2027912k free,  1231444k cached</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>##### Apache + PHP #####</p>
<p>[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a target="_blank" href="http://192.168.1.27/phpinfo.php"><font color="#4f6371">http://192.168.1.27/phpinfo.php</font></a><br />
Webbench - Simple Web Benchmark 1.5<br />
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.</p>
<p>Benchmarking: GET <a target="_blank" href="http://192.168.1.27/phpinfo.php"><font color="#4f6371">http://192.168.1.27/phpinfo.php</font></a><br />
100 clients, running 30 sec.</p>
<p>Speed=42184 pages/min, 31512914 bytes/sec.<br />
Requests: 21092 susceed, 0 failed.</p>
<p>top - 14:06:20 up 27 days,  2:13,  2 users,  load average: 62.15, 26.36, 13.42<br />
Tasks: 318 total,   7 running, 310 sleeping,   0 stopped,   1 zombie<br />
Cpu(s): 80.4% us, 10.6% sy,  0.0% ni,  7.9% id,  0.1% wa,  0.1% hi,  0.9% si<br />
Mem:   6230016k total,  3075948k used,  3154068k free,   379896k buffers<br />
Swap:  2031608k total,    12592k used,  2019016k free,  1117868k cached</p>
<p id="blogcomment1471">
<p class="commentbox">
<p class="commentbox-title">lostsnow <a target="_blank" href="http://www.lostk.com/blog"><img border="0" src="http://blog.s135.com/template/RuiPai/images/homepage.gif" alt="Homepage" title="访问他/她的主页" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-1 13:55 </font></p>
<p class="commentbox-content">post 上传图片的时候出现：411 Length Required 错误，同样的程序在apache下面没有报错，不知道张兄有没有遇到类似的问题？</p>
<p>========================</p>
<p>client_max_body_size 20m;<br />
设置一下最大 post大小</p>
<p style="display: none" id="replied_com_1471" class="quote">&nbsp;</p>
<p id="blogcomment1474">
<p class="commentbox">
<p class="commentbox-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_185" title="查看他/她的资料"><font color="#4f6371">leexhwhy</font></a> <a href="mailto:servicebroker@126.com"><img border="0" src="http://blog.s135.com/template/RuiPai/images/email.gif" alt="Email" title="给他/她发邮件" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-1 20:51 </font></p>
<p class="commentbox-content">看了张老师的文章，很想把我们的网站也改成ngnix的，我们的网站是apache+tomcat的，主要做用户子站服务，所以二级域名是个很重要的功能，原来在apache上做url rewrite ，配置如下：<br />
 RewriteEngine On<br />
 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.abc\.com$<br />
 RewriteRule ^/?$ /%{HTTP_HOST}<br />
 RewriteRule ^/([a-z0-9\-]+)\.abc\.com/?$ /site/$1 [R,L]<br />
将leexhwhy.abc.com定向到<a target="_blank" href="http://www.abc.com/site/leexhwhy"><font color="#4f6371">www.abc.com/site/leexhwhy</font></a><br />
请问张老师，在ngnix上能实现这种功能吗？google了没有找到答案。谢谢！</p>
<p style="display: block" id="replied_com_1474" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-1 21:27</p>
<p class="quote-content">Nginx对应的rewrite规则如下：</p>
<p>if ($host ~* &#8220;^[a-z0-9\-]+\.abc\.com$&#8221;)<br />
{<br />
rewrite ^/?$ /$host last;<br />
rewrite ^/([a-z0-9\-]+)\.abc\.com/?$ <a target="_blank" href="http://$host/site/$1"><font color="#4f6371">http://$host/site/$1</font></a> permanent;<br />
}</p>
<p id="blogcomment1476">
<p class="commentbox">
<p class="commentbox-title">dreampig</p>
<p class="commentbox-label"><font color="#337099">2008-9-1 23:15 </font></p>
<p class="commentbox-content">想知道为什么kernel.shmmax这个要配置成134217728<br />
默认的不可以吗？你这个数字是怎么计算出来的啊？</p>
<p style="display: block" id="replied_com_1476" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-2 08:49</p>
<p class="quote-content">因为php.ini中配置了eaccelerator.shm_size=&#8221;128&#8243;，允许eaccelerator可使用的共享内存大小为128M。</p>
<p>而 134217728bytes / 1024 / 1024 = 128MB</p>
<p>在Linux下，单个进程的最大内存使用量受/proc/sys/kernel/shmmax中设置的数字限制(单位为字节)，例如CentOS、Redhat的shmmax默认值为33554432字节(33554432bytes/1024/1024=32MB)。<br />
   <br />
临时更改该值：<br />
echo 字节数 &gt; /proc/sys/kernel/shmmax<br />
   <br />
按照以上方法更改，在每次重启系统时，该值会被自动还原。如果想永久更改，可以修改/etc/sysctl.conf文件，设置：<br />
kernel.shmmax = 字节数</p>
<p>如果你的eaccelerator使用默认的32M共享内存，可以不修改此值。</p>
<p id="blogcomment1477">
<p class="commentbox">
<p class="commentbox-title">den <a target="_blank" href="http://www.hellochina.com/"><img border="0" src="http://blog.s135.com/template/RuiPai/images/homepage.gif" alt="Homepage" title="访问他/她的主页" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-2 01:21 </font></p>
<p class="commentbox-content">貌似不是 client_max_body_size 的问题&#8230; 找了很多资料,始终解决不了..郁闷..</p>
<p style="display: none" id="replied_com_1477" class="quote">&nbsp;</p>
<p id="blogcomment1478">
<p class="commentbox">
<p class="commentbox-title">gusingchen</p>
<p class="commentbox-label"><font color="#337099">2008-9-2 10:11 </font></p>
<p class="commentbox-content">since the virtual address space is just 32 bits wide, each process can&#8217;t grow beyond 4 GB.</p>
<p>在Linux下，单个进程的最大内存使用量受/proc/sys/kernel/shmmax中设置的数字限制(单位为字节)，例如CentOS、Redhat的shmmax默认值为33554432字节(33554432bytes/1024/1024=32MB)。</p>
<p style="display: none" id="replied_com_1478" class="quote">&nbsp;</p>
<p id="blogcomment1479">
<p class="commentbox">
<p class="commentbox-title">明镜</p>
<p class="commentbox-label"><font color="#337099">2008-9-2 10:22 </font></p>
<p class="commentbox-content">我做了一个单机上的php-cgi的负载均衡，不知道对稳定性有无好处，请张宴点评<br />
upstream phpool {<br />
       server localhost:9000;<br />
       server localhost:9001;<br />
       server localhost:9002;<br />
       server localhost:9003;<br />
}</p>
<p>       location ~ \.php$ {<br />
           fastcgi_pass   phpool;<br />
           fastcgi_index  index.php;<br />
           include        /etc/nginx/fastcgi_params;<br />
       }</p>
<p>/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 8 -u apache -g apache -f /usr/bin/php-cgi<br />
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9001 -C 8 -u apache -g apache -f /usr/bin/php-cgi<br />
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9002 -C 8 -u apache -g apache -f /usr/bin/php-cgi<br />
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9003 -C 8 -u apache -g apache -f /usr/bin/php-cgi</p>
<p style="display: block" id="replied_com_1479" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-2 18:06</p>
<p class="quote-content">如果在同一台机器上，单独起4组独立的php-cgi进程（每组8个子进程），性能应该不如1组php-cgi进程（32个子进程），因为1组进程，eaccelerator的PHP二进制文件缓存是共享的，1组进程命中率较高。</p>
<p id="blogcomment1480">
<p class="commentbox">
<p class="commentbox-title">question</p>
<p class="commentbox-label"><font color="#337099">2008-9-2 13:45 </font></p>
<p class="commentbox-content">nginx配置里没有开启记录日志，为什么总在默认的logs目录记录日志呢(access.log)，请问应该如何去掉？</p>
<p style="display: block" id="replied_com_1480" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-2 16:35</p>
<p class="quote-content">access_log   off;</p>
<p id="blogcomment1483">
<p class="commentbox">
<p class="commentbox-title">明镜</p>
<p class="commentbox-label"><font color="#337099">2008-9-2 19:37 </font></p>
<p class="commentbox-content">对，跑四组的话eaccelerator的缓存不能共享，不过好处是，碰到某组的php假死的话，其他端口就可以接管了，我实测下来似乎发生502错误的概率降低了很多，或者说我这样配置以后还没有遇到</p>
<p style="display: none" id="replied_com_1483" class="quote">&nbsp;</p>
<p id="blogcomment1492">
<p class="commentbox">
<p class="commentbox-title">soone</p>
<p class="commentbox-label"><font color="#337099">2008-9-3 15:40 </font></p>
<p class="commentbox-content">作者最好能提出测试数据，确实按照文中配置，真不如apache，没有如文中所说的3万</p>
<p style="display: block" id="replied_com_1492" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-3 16:38</p>
<p class="quote-content">上面的回复中已经给出Apache VS Nginx的测试数据。</p>
<p>webbench -c 30000 -t 60 <a target="_blank" href="http://yourip/phpinfo.php"><font color="#4f6371">http://yourip/phpinfo.php</font></a><br />
设定3万并发连接，压力测试开始后，用你的浏览器访问Nginx上的phpinfo.php一切正常，而访问Apache服务器的phpinfo.php，已经打不开了。再看看系统负载，Nginx远低于Apache。</p>
<p>压力测试工具webbench也需要耗费内存和CPU资源，所以请将webbench装在独立的服务器上，对Apache和Nginx服务器进行压力测试。</p>
<p id="blogcomment1493">
<p class="commentbox">
<p class="commentbox-title">放飞天涯</p>
<p class="commentbox-label"><font color="#337099">2008-9-3 18:13 </font></p>
<p class="commentbox-content">所有的步骤都是按上面的装的，只是版本0.7.14。刚安装好什么都没跑就出现<br />
        502 Bad Gateway<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
        nginx/0.7.14</p>
<p style="display: block" id="replied_com_1493" class="quote">
<p class="quote-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_2" title="查看他/她的资料"><font color="#4f6371">张宴</font></a> 回复于 2008-9-3 18:29</p>
<p class="quote-content">后端的php-cgi有问题。编译php的时候在./configure和make的时候，请仔细检查是否有出错提示。因为PHP依赖的库比较多，如果这些被依赖的包找不到，编译时出错的几率较大。</p>
<p id="blogcomment1494">
<p class="commentbox">
<p class="commentbox-title">小叶</p>
<p class="commentbox-label"><font color="#337099">2008-9-3 18:31 </font></p>
<p class="commentbox-content">用NGINX时怎么样返回不同状态下的REDIRECT_STATUS,   php以模块方式安装在APACHE下的时候在404的时候可以返回REDIRECT_STATUS =404 普通页面无回值<br />
但是在这里<br />
# PHP only, required if PHP was built with &#8211;enable-force-cgi-redirect<br />
fastcgi_param  REDIRECT_STATUS    200;</p>
<p>打出来的无论是什么页面REDIRECT_STATUS都为200<br />
404页面里面对REDIRECT＿STATUS进行判断了<br />
if( intval($_SERVER[&#8217;REDIRECT_STATUS&#8217;])==404 )<br />
{<br />
}else{<br />
exit;<br />
}</p>
<p style="display: none" id="replied_com_1494" class="quote">&nbsp;</p>
<p id="blogcomment1495">
<p class="commentbox">
<p class="commentbox-title">xp <a href="mailto:jfnn001@gmail.com"><img border="0" src="http://blog.s135.com/template/RuiPai/images/email.gif" alt="Email" title="给他/她发邮件" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-3 21:07 </font></p>
<p class="commentbox-content">sed -i &#8217;s#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#&amp; -liconv#&#8217; Makefile</p>
<p>好像有问题,我一直装不上,找资料才知道是改makefile 在EXTRA_LIBS = &#8230;.. -lcrypt 最后加上-liconv</p>
<p>我系统为ubuntu server 8.04</p>
<p>现在通过make了</p>
<p style="display: none" id="replied_com_1495" class="quote">&nbsp;</p>
<p id="blogcomment1499">
<p class="commentbox">
<p class="commentbox-title">yyrjw</p>
<p class="commentbox-label"><font color="#337099">2008-9-4 17:27 </font></p>
<p class="commentbox-content">请问下nginx/0.6.31 和0.7.x在性能上面有什么改善没？不知道nginx的缓存功能你用过吗？<br />
用nginx的proxy_store模块缓存静态文件的时候图片好像缓存下来了，html的好像还是直接走后端取的，直接走的proxy_pass做代理，没有用upstream</p>
<p style="display: none" id="replied_com_1499" class="quote">&nbsp;</p>
<p id="blogcomment1501">
<p class="commentbox">
<p class="commentbox-title">laoliu</p>
<p class="commentbox-label"><font color="#337099">2008-9-5 00:21 </font></p>
<p class="commentbox-content">按照您的指点，很顺利的配置成功了nginx服务器<br />
可是使用的时候明显发现没有apache速度快，是我哪里参数没配置好么？<br />
CPU 至强 2.8 两颗，内存4G。<br />
晚上测试的，访问量不大。<br />
不过用压力测试软件，nginx确实比apache占系统资源少。</p>
<p style="display: none" id="replied_com_1501" class="quote">&nbsp;</p>
<p id="blogcomment1503">
<p class="commentbox">
<p class="commentbox-title">freeke <a href="mailto:myfreeke@gmail.com"><img border="0" src="http://blog.s135.com/template/RuiPai/images/email.gif" alt="Email" title="给他/她发邮件" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-5 15:53 </font></p>
<p class="commentbox-content">张老师您好!</p>
<p>什么时候也把Nginx &#8212;&gt;&gt; varnish 也更新总结版本</p>
<p style="display: none" id="replied_com_1503" class="quote">&nbsp;</p>
<p id="blogcomment1506">
<p class="commentbox">
<p class="commentbox-title">billy</p>
<p class="commentbox-label"><font color="#337099">2008-9-5 22:39 </font></p>
<p class="commentbox-content">您好，我按照您的文章成功安装了 Nginx 0.6.32 + PHP 5.2.6<br />
但是测试的时候，phpinfo 无任何输出，是一个空白页面。<br />
我又写了一个简单的 echo 输出，却没有问题，实在不知道问题出在哪里了，还望指教。</p>
<p style="display: none" id="replied_com_1506" class="quote">&nbsp;</p>
<p id="blogcomment1507">
<p class="commentbox">
<p class="commentbox-title">laoliu</p>
<p class="commentbox-label"><font color="#337099">2008-9-6 08:44 </font></p>
<p class="commentbox-content">哈哈，我的问题解决了，把gzip关掉就快多了。<br />
还有以前不能显示的js也可以了。</p>
<p style="display: none" id="replied_com_1507" class="quote">&nbsp;</p>
<p id="blogcomment1508">
<p class="commentbox">
<p class="commentbox-title">laoliu</p>
<p class="commentbox-label"><font color="#337099">2008-9-6 09:18 </font></p>
<p class="commentbox-content">不过把gzip观点，用webbench做压力测试，跟原来apache的结果差不多了：（</p>
<p style="display: none" id="replied_com_1508" class="quote">&nbsp;</p>
<p id="blogcomment1512">
<p class="commentbox">
<p class="commentbox-title">windy</p>
<p class="commentbox-label"><font color="#337099">2008-9-7 10:47 </font></p>
<p class="commentbox-content">这个是在64位的系统下面编译的吗？我在64位下面编译总是有问题，奇怪</p>
<p style="display: none" id="replied_com_1512" class="quote">&nbsp;</p>
<p id="blogcomment1514">
<p class="commentbox">
<p class="commentbox-title">hqhe <a href="mailto:ngwsx2008@126.com"><img border="0" src="http://blog.s135.com/template/RuiPai/images/email.gif" alt="Email" title="给他/她发邮件" /></a> <a target="_blank" href="http://ngwsx.eaxi.com/"><img border="0" src="http://blog.s135.com/template/RuiPai/images/homepage.gif" alt="Homepage" title="访问他/她的主页" /></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-7 16:23 </font></p>
<p class="commentbox-content">Nginx native port to MS Windows</p>
<p><a target="_blank" href="http://ngwsx.eaxi.com/"><font color="#4f6371">http://ngwsx.eaxi.com/</font></a></p>
<p style="display: none" id="replied_com_1514" class="quote">&nbsp;</p>
<p id="blogcomment1518">
<p class="commentbox">
<p class="commentbox-title">laoliu</p>
<p class="commentbox-label"><font color="#337099">2008-9-8 10:39 </font></p>
<p class="commentbox-content">今天是我网站访问量比较大的一天，10点左右，我不得不暂时放弃了nginx，恢复成apache<br />
因为服务器的负载比较高，感觉还不如apache<br />
不知道是我哪里设置有问题，还是其他原因。</p>
<p style="display: none" id="replied_com_1518" class="quote">&nbsp;</p>
<p id="blogcomment1519">
<p class="commentbox">
<p class="commentbox-title"><a target="_blank" href="http://blog.s135.com/view.php?go=user_188" title="查看他/她的资料"><font color="#4f6371">xi2008wang</font></a></p>
<p class="commentbox-label"><font color="#337099">2008-9-8 15:38 </font></p>
<p class="commentbox-content">给你顶一下<img border="0" src="http://blog.s135.com/images/emot/zan.gif" alt="zan" /></p>
<p style="display: none" id="replied_com_1519" class="quote">&nbsp;</p>
<p id="blogcomment1522">
<p class="commentbox">
<p class="commentbox-title">routerpipe</p>
<p class="commentbox-label"><fon