﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>P.Linux Laboratory &#187; Nginx</title>
	<atom:link href="http://www.penglixun.com/tag/nginx/feed" rel="self" type="application/rss+xml" />
	<link>http://www.penglixun.com</link>
	<description>MySQL DBA &#38; Linux SA</description>
	<lastBuildDate>Sun, 22 Jan 2012 16:34:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Nginx的502错误</title>
		<link>http://www.penglixun.com/tech/system/fix_nginx_502_bad_gateway.html</link>
		<comments>http://www.penglixun.com/tech/system/fix_nginx_502_bad_gateway.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 16:45:49 +0000</pubDate>
		<dc:creator>P.Linux</dc:creator>
				<category><![CDATA[操作系统]]></category>
		<category><![CDATA[502]]></category>
		<category><![CDATA[Nginx]]></category>

		<guid isPermaLink="false">http://blog.penglixun.com/?p=569</guid>
		<description><![CDATA[本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/system/fix_nginx_502_bad_gateway.html 重启服务器后发现Nginx在我的WordP... ]]></description>
			<content:encoded><![CDATA[<p><span style="color: #888888;">本文内容遵从<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">CC版权协议</a>, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明</br>网址: http://www.penglixun.com/tech/system/fix_nginx_502_bad_gateway.html </p>
<p></span>重启服务器后发现Nginx在我的WordPress报502 Bad Gateway错误。<br />
查了好久，以为是nginx.conf或者php-fpm.conf的错，突然想起来，好像哪里看到说php.ini中memory_limit设低了会出错，<br />
修改了php.ini的memory_limit为64M，重启nginx，发现真好了~<br />
原来是<acronym title="Pre-Hypertext Processing">PHP</acronym>的内存不足了。<br />
360M内存的服务器，扛这点应用应该OK~</p><h2  class="related_post_title">类似的文章</h2><ul class="related_post"><li>2009年07月15日 -- <a href="http://www.penglixun.com/tech/system/nginx_php_fastcgi_better_apache.html" title="Nginx 0.7.x + PHP 5.2.10（FastCGI）搭建胜过Apache十倍的Web服务器">Nginx 0.7.x + PHP 5.2.10（FastCGI）搭建胜过Apache十倍的Web服务器</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.penglixun.com/tech/system/fix_nginx_502_bad_gateway.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx 0.7.x + PHP 5.2.10（FastCGI）搭建胜过Apache十倍的Web服务器</title>
		<link>http://www.penglixun.com/tech/system/nginx_php_fastcgi_better_apache.html</link>
		<comments>http://www.penglixun.com/tech/system/nginx_php_fastcgi_better_apache.html#comments</comments>
		<pubDate>Wed, 15 Jul 2009 06:58:24 +0000</pubDate>
		<dc:creator>P.Linux</dc:creator>
				<category><![CDATA[操作系统]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.penglixun.com/PLX/Blog/?p=283</guid>
		<description><![CDATA[本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/system/nginx_php_fastcgi_better_apache.html [文章作者：张宴 本文版本... ]]></description>
			<content:encoded><![CDATA[<p><span style="color: #888888;">本文内容遵从<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">CC版权协议</a>, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明</br>网址: http://www.penglixun.com/tech/system/nginx_php_fastcgi_better_apache.html </p>
<p></span>[文章作者：张宴 本文版本：v5.4 最后修改：<span style="COLOR: #ff0000">2009.06.26</span> 转载请注明原文链接：<a href="http://blog.s135.com/nginx_php_v5/" target="_blank">http://blog.s135.com/nginx_php_v5/</a>]</p>
<p>　　前言：本文是我撰写的关于搭建“Nginx + <acronym title="Pre-Hypertext Processing">PHP</acronym>（FastCGI）”Web服务器的第5篇文章。本系列文章作为国内最早详细介绍 Nginx + <acronym title="Pre-Hypertext Processing">PHP</acronym> 安装、配置、使用的资料之一，为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章，安装、配置方式与第4篇文章相差不大，但增加了MySQL安装配置的信息、<strong><acronym title="Pre-Hypertext Processing">PHP</acronym> 5.2.10 的 php-fpm 补丁</strong>。Nginx 0.7.x系列版本虽然为开发版，但在很多大型网站的生产环境中已经使用。</p>
<p>　　<span id="more-283"></span>链接：《<a href="post/297/" target="_blank">2007年9月的第1版</a>》、《<a href="post/314/" target="_blank">2007年12月的第2版</a>》、《<a href="post/351/" target="_blank">2008年6月的第3版</a>》、《<a href="nginx_php_v4/" target="_blank">2008年8月的第4版</a>》</p>
<p>　　<a href="http://blog.s135.com/attachment/200806/nginx.png" target="_blank"><img style="border: 0px;" title="点击在新窗口中浏览此图片" src="http://blog.s135.com/attachment/200806/nginx.png" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p>　　<a href="http://www.nginx.net/" target="_blank">Nginx</a> (“engine x”) 是一个高性能的 <acronym title="HyperText Transfer Protocol">HTTP</acronym> 和反向代理服务器，也是一个 <acronym title="Internet Message Access Protocol">IMAP</acronym>/<acronym title="Post Office Protocol 3">POP3</acronym>/<acronym title="Simple Mail Transfer Protocol">SMTP</acronym> 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。</p>
<p>　　Nginx 超越 Apache 的高性能和稳定性，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中包括<a href="http://blog.sina.com.cn/" target="_blank">新浪博客</a>、<a href="http://v.sina.com.cn/" target="_blank">新浪播客</a>、<a href="http://news.163.com/" target="_blank">网易新闻</a>等门户网站频道，<a href="http://www.6.cn/" target="_blank">六间房</a>、<a href="http://www.56.com/" target="_blank">56.com</a>等视频分享网站，<a href="http://www.discuz.net/" target="_blank">Discuz!官方论坛</a>、<a href="http://www.newsmth.net/" target="_blank">水木社区</a>等知名论坛，<a href="http://www.douban.com/" target="_blank">豆瓣</a>、<a href="http://www.yupoo.com/" target="_blank">YUPOO相册</a>、<a href="http://www.hainei.com/" target="_blank">海内SNS</a>、<a href="http://www.xunlei.com/" target="_blank">迅雷在线</a>等新兴Web 2.0网站。</p>
<hr />　　Nginx 的官方中文维基：<a href="http://wiki.nginx.org/NginxChs" target="_blank">http://wiki.nginx.org/NginxChs</a></p>
<hr />　　在高并发连接的情况下，Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果，<strong>Nginx 0.7.61 + <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.2.10 (FastCGI) 可以承受3万以上的并发连接数，相当于同等环境下Apache的10倍</strong>。</p>
<p>　　根据我的经验，4GB内存的服务器+Apache（prefork模式）一般只能处理3000个并发连接，因为它们将占用3GB以上的内存，还得为系统预留1GB的内存。我曾经就有两台Apache服务器，因为在配置文件中设置的MaxClients为4000，当Apache并发连接数达到3800时，导致服务器内存和Swap空间用满而崩溃。</p>
<p>　　而这台 Nginx 0.7.61 + <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.2.10 (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.61 + <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.2.10 (FastCGI) 服务器的<acronym title="Pre-Hypertext Processing">PHP</acronym>程序，仍然速度飞快。下图为Nginx的状态监控页面，显示的活动连接数为28457（关于Nginx的监控页配置，会在本文接下来所给出的Nginx配置文件中写明）：</p>
<p>　　<a href="http://blog.s135.com/attachment/200712/nginx_status.png" target="_blank"><img style="border: 0px;" title="点击在新窗口中浏览此图片" src="http://blog.s135.com/attachment/200712/nginx_status.png" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p>　　我生产环境下的两台Nginx + PHP5（FastCGI）服务器，跑多个一般复杂的纯<acronym title="Pre-Hypertext Processing">PHP</acronym>动态程序，单台Nginx + PHP5（FastCGI）服务器跑<acronym title="Pre-Hypertext Processing">PHP</acronym>动态程序的处理能力已经超过“<span style="COLOR: #ff0000">700次请求/秒</span>”，相当于每天可以承受6000万（700*60*60*24=60480000）的访问量（<a href="read.php/334.htm" target="_blank">更多信息见此</a>），而服务器的系统负载也不高：</p>
<p>　　<a href="http://blog.s135.com/attachment/200803/nginx_php_la.gif" target="_blank"><img style="border: 0px;" title="点击在新窗口中浏览此图片" src="http://blog.s135.com/attachment/200803/nginx_php_la.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<hr />　　下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器，一台为Nginx，另一台为Apache，Nginx每秒处理的请求数是Apache的两倍多，Nginx服务器的系统负载、CPU使用率远低于Apache：</p>
<p>　　你可以将连接数开到10000～30000，去压Nginx和Apache上的phpinfo.php，这是用浏览器访问Nginx上的phpinfo.php一切正常，而访问Apache服务器的phpinfo.php，则是该页无法显示。4G内存的服务器，即使再优化，Apache也很难在“webbench -c 30000 -t 60 <a href="http://xxx.xxx.xxx.xxx/phpinfo.php" target="_blank">http://xxx.xxx.xxx.xxx/phpinfo.php</a>”的压力情况下正常访问，而调整参数优化后的Nginx可以。</p>
<p>　　webbench 下载地址：<a href="http://blog.s135.com/post/288/" target="_blank">http://blog.s135.com/post/288/</a></p>
<p>　　注意：webbench 做压力测试时，该软件自身也会消耗CPU和内存资源，为了测试准确，请将 webbench 安装在别的服务器上。</p>
<p>　　测试结果：##### Nginx + <acronym title="Pre-Hypertext Processing">PHP</acronym> #####</p>
<div>引用</div>
<p>[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a href="http://192.168.1.21/phpinfo.php" target="_blank">http://192.168.1.21/phpinfo.php</a><br />
Webbench &#8211; Simple Web Benchmark 1.5<br />
Copyright (c) Radim Kolar 1997-2004, <acronym title="GNU General Public License">GPL</acronym> Open Source Software.</p>
<p>Benchmarking: GET <a href="http://192.168.1.21/phpinfo.php" target="_blank">http://192.168.1.21/phpinfo.php</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 &#8211; 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>　　测试结果：#####  Apache + <acronym title="Pre-Hypertext Processing">PHP</acronym> #####</p>
<div>引用</div>
<p>[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a href="http://192.168.1.27/phpinfo.php" target="_blank">http://192.168.1.27/phpinfo.php</a><br />
Webbench &#8211; Simple Web Benchmark 1.5<br />
Copyright (c) Radim Kolar 1997-2004, <acronym title="GNU General Public License">GPL</acronym> Open Source Software.</p>
<p>Benchmarking: GET <a href="http://192.168.1.27/phpinfo.php" target="_blank">http://192.168.1.27/phpinfo.php</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 &#8211; 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>
<hr />　　为什么Nginx的性能要比Apache高得多？这得益于Nginx使用了最新的epoll（Linux 2.6内核）和kqueue（freebsd）网络I/O模型，而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。</p>
<p>　　处理大量的连接的读写，Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别：</p>
<p>　　假设你在大学读书，住的宿舍楼有很多间房间，你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找，直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号，你的朋友来时，只需告诉你的朋友你住在哪个房间即可，不用亲自带着你的朋友满大楼找人。如果来了10000个人，都要找自己住这栋楼的同学时，select版和epoll版宿管大妈，谁的效率更高，不言自明。同理，在高并发服务器中，轮询I/O是最耗时间的操作之一，select和epoll的性能谁的性能更高，同样十分明了。</p>
<hr />　　安装步骤：<br />
　　（系统要求：Linux 2.6+ 内核，本文中的Linux操作系统为CentOS 5.3，另在RedHat AS4上也安装成功）<br />
<a name="entrymore"></a><br />
　　<strong>一、获取相关开源程序：</strong><br />
　　1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库（RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包，进行安装）：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 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 openldap openldap-devel nss_ldap openldap-clients openldap-servers</div>
<p>　　2、【适用RedHat操作系统】RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包（事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在，通常是“xxx-devel”不存在，需要安装）。RedHat可以直接利用CentOS的RPM包安装，以下是RPM包下载网址：<br />
　　①、RedHat AS4 &amp; CentOS 4<br />
　　<a href="http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/" target="_blank">http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/</a><br />
　　<a href="http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/" target="_blank">http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/</a></p>
<p>　　②、RedHat AS5 &amp; CentOS 5<br />
　　<a href="http://mirrors.163.com/centos/5/os/i386/CentOS/" target="_blank">http://mirrors.163.com/centos/5/os/i386/CentOS/</a><br />
　　<a href="http://mirrors.163.com/centos/5/os/x86_64/CentOS/" target="_blank">http://mirrors.163.com/centos/5/os/x86_64/CentOS/</a></p>
<p>　　③、RPM包搜索网站<br />
　　<a href="http://rpm.pbone.net/" target="_blank">http://rpm.pbone.net/</a><br />
　　<a href="http://www.rpmfind.net/" target="_blank">http://www.rpmfind.net/</a></p>
<p>　　④、RedHat AS4 系统环境，通常情况下缺少的支持包安装：<br />
　　Ⅰ、i386 系统</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">wget <a href="http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libjpeg-devel-6b-33.i386.rpm" target="_blank">http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libjpeg-devel-6b-33.i386.rpm</a><br />
rpm -ivh libjpeg-devel-6b-33.i386.rpm<br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/rpm/i386/freetype-devel-2.1.9-1.i386.rpm" target="_blank">http://blog.s135.com/soft/linux/nginx_php/rpm/i386/freetype-devel-2.1.9-1.i386.rpm</a><br />
rpm -ivh freetype-devel-2.1.9-1.i386.rpm<br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libpng-devel-1.2.7-1.i386.rpm" target="_blank">http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libpng-devel-1.2.7-1.i386.rpm</a><br />
rpm -ivh libpng-devel-1.2.7-1.i386.rpm</div>
<p>　　Ⅱ、x86_64 系统</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">wget <a href="http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libjpeg-devel-6b-33.x86_64.rpm" target="_blank">http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libjpeg-devel-6b-33.x86_64.rpm</a><br />
rpm -ivh libjpeg-devel-6b-33.x86_64.rpm<br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/freetype-devel-2.1.9-1.x86_64.rpm" target="_blank">http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/freetype-devel-2.1.9-1.x86_64.rpm</a><br />
rpm -ivh freetype-devel-2.1.9-1.x86_64.rpm<br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libpng-devel-1.2.7-1.x86_64.rpm" target="_blank">http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libpng-devel-1.2.7-1.x86_64.rpm</a><br />
rpm -ivh libpng-devel-1.2.7-1.x86_64.rpm</div>
<p>　　3、【适用CentOS、RedHat及其它Linux操作系统】下载程序源码包：<br />
　　本文中提到的所有开源软件为截止到<span style="COLOR: #ff0000">2009年06月26日</span>的最新稳定版。<br />
　　①、从软件的官方网站下载：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">mkdir -p /data0/software<br />
cd /data0/software<br />
wget <a href="http://sysoev.ru/nginx/nginx-0.7.61.tar.gz" target="_blank">http://sysoev.ru/nginx/nginx-0.7.61.tar.gz</a><br />
wget <a href="http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror" target="_blank">http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.10-fpm-0.5.11.diff.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.10-fpm-0.5.11.diff.gz</a><br />
wget <a href="http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.35.tar.gz/from/http://mysql.he.net/" target="_blank">http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.35.tar.gz/from/http://mysql.he.net/</a><br />
wget <a href="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz" target="_blank">http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz</a><br />
wget “http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&amp;big_mirror=0&#8243;<br />
wget “http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&amp;big_mirror=0&#8243;<br />
wget <a href="http://pecl.php.net/get/memcache-2.2.5.tgz" target="_blank">http://pecl.php.net/get/memcache-2.2.5.tgz</a><br />
wget “http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&amp;big_mirror=0&#8243;<br />
wget <a href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz" target="_blank">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz</a><br />
wget <a href="http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2" target="_blank">http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2</a><br />
wget <a href="http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz" target="_blank">http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz</a><br />
wget <a href="http://pecl.php.net/get/imagick-2.2.2.tgz" target="_blank">http://pecl.php.net/get/imagick-2.2.2.tgz</a></div>
<p>　　②、从<a href="http://blog.s135.com" target="_blank">blog.s135.com</a>下载（比较稳定，只允许在本站，或者在Linux/Unix下通过Wget、Curl等命令下载以下软件）：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">mkdir -p /data0/software<br />
cd /data0/software<br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.61.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.61.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.10.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.10.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.10-fpm-0.5.11.diff.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.10-fpm-0.5.11.diff.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.35.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.35.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.9.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.9.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2" target="_blank">http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz</a><br />
wget <a href="http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.2.2.tgz" target="_blank">http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.2.2.tgz</a></div>
<p> </p>
<hr />　　<strong>二、安装<acronym title="Pre-Hypertext Processing">PHP</acronym> 5.2.10（FastCGI模式）</strong><br />
　　1、编译安装<acronym title="Pre-Hypertext Processing">PHP</acronym> 5.2.10所需的支持库：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">tar zxvf libiconv-1.13.tar.gz<br />
cd libiconv-1.13/<br />
./configure &#8211;prefix=/usr/local<br />
make<br />
make install<br />
cd ../</div>
<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.9.tar.gz<br />
cd mhash-0.9.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.8.tar.gz<br />
cd mcrypt-2.6.8/<br />
/sbin/ldconfig<br />
./configure<br />
make<br />
make install<br />
cd ../</p>
<p> </p>
<hr />　　2、编译安装MySQL 5.1.35</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/usr/sbin/groupadd mysql<br />
/usr/sbin/useradd -g mysql mysql<br />
tar zxvf mysql-5.1.35.tar.gz<br />
cd mysql-5.1.35/<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-plugins=innobase<br />
make &amp;&amp; make install<br />
chmod +w /usr/local/webserver/mysql<br />
chown -R mysql:mysql /usr/local/webserver/mysql<br />
cd ../</div>
<p> </p>
<hr />　　附：以下为附加步骤，如果你想在这台服务器上运行MySQL数据库，则执行以下两步。如果你只是希望让<acronym title="Pre-Hypertext Processing">PHP</acronym>支持MySQL扩展库，能够连接其他服务器上的MySQL数据库，那么，以下两步无需执行。</p>
<p>　　①、创建MySQL数据库存放目录</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">mkdir -p /data0/mysql/3306/data/<br />
chown -R mysql:mysql /data0/mysql/</div>
<p>　　②、以mysql用户帐号的身份建立数据表：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/usr/local/webserver/mysql/bin/mysql_install_db &#8211;basedir=/usr/local/webserver/mysql &#8211;datadir=/data0/mysql/3306/data &#8211;user=mysql</div>
<p>　　③、创建my.cnf配置文件：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">vi /data0/mysql/3306/my.cnf</div>
<p>　　输入以下内容：</p>
<div>引用</div>
<p>[client]<br />
default-character-set = utf8<br />
port    = 3306<br />
socket  = /tmp/mysql.sock</p>
<p>[mysql]<br />
prompt=”(\u:blog.s135.com:)[\d]&gt; ”<br />
no-auto-rehash</p>
<p>[mysqld]<br />
#default-character-set = utf8<br />
user    = mysql<br />
port    = 3306<br />
socket  = /tmp/mysql.sock<br />
basedir = /usr/local/webserver/mysql<br />
datadir = /data0/mysql/3306/data<br />
open_files_limit    = 10240<br />
back_log = 600<br />
max_connections = 3000<br />
max_connect_errors = 6000<br />
table_cache = 614<br />
external-locking = FALSE<br />
max_allowed_packet = 32M<br />
sort_buffer_size = 2M<br />
join_buffer_size = 2M<br />
thread_cache_size = 300<br />
thread_concurrency = 8<br />
query_cache_size = 32M<br />
query_cache_limit = 2M<br />
query_cache_min_res_unit = 2k<br />
default-storage-engine = MyISAM<br />
default_table_type = MyISAM<br />
thread_stack = 192K<br />
transaction_isolation = READ-COMMITTED<br />
tmp_table_size = 246M<br />
max_heap_table_size = 246M<br />
long_query_time = 1<br />
log_long_format<br />
log-bin = /data0/mysql/3306/binlog<br />
binlog_cache_size = 4M<br />
binlog_format = MIXED<br />
max_binlog_cache_size = 8M<br />
max_binlog_size = 512M<br />
expire_logs_days = 7<br />
key_buffer_size = 256M<br />
read_buffer_size = 1M<br />
read_rnd_buffer_size = 16M<br />
bulk_insert_buffer_size = 64M<br />
myisam_sort_buffer_size = 128M<br />
myisam_max_sort_file_size = 10G<br />
myisam_max_extra_sort_file_size = 10G<br />
myisam_repair_threads = 1<br />
myisam_recover</p>
<p>skip-name-resolve<br />
master-connect-retry = 10<br />
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396</p>
<p>server-id = 1</p>
<p>innodb_additional_mem_pool_size = 16M<br />
innodb_buffer_pool_size = 2048M<br />
innodb_data_file_path = ibdata1:1024M:autoextend<br />
innodb_file_io_threads = 4<br />
innodb_thread_concurrency = 8<br />
innodb_flush_log_at_trx_commit = 2<br />
innodb_log_buffer_size = 16M<br />
innodb_log_file_size = 128M<br />
innodb_log_files_in_group = 3<br />
innodb_max_dirty_pages_pct = 90<br />
innodb_lock_wait_timeout = 120<br />
innodb_file_per_table = 0<br />
[mysqldump]<br />
quick<br />
max_allowed_packet = 32M</p>
<p>　　④、创建管理MySQL数据库的shell脚本：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">vi /data0/mysql/3306/mysql</div>
<p>　　输入以下内容（这里的用户名admin和密码12345678接下来的步骤会创建）：</p>
<div>
<div><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="#">?</a></div>
</div>
<li><span><span>#!/bin/sh </span><span>  </span></span></li>
<li><span>  </span></li>
<li><span>mysql_port=3306   </span></li>
<li><span>mysql_username=</span><span>“admin”</span><span>  </span></li>
<li><span>mysql_password=</span><span>“12345678&#8243;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>function_start_mysql()   </span></li>
<li><span>{   </span></li>
<li><span>    printf </span><span>“Starting MySQL&#8230;\n”</span><span>  </span></li>
<li><span>    /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe &#8211;defaults-file=/data0/mysql/${mysql_port}/my.cnf 2&gt;&amp;1 &gt; /dev/null &amp;   </span></li>
<li><span>}   </span></li>
<li><span>  </span></li>
<li><span>function_stop_mysql()   </span></li>
<li><span>{   </span></li>
<li><span>    printf </span><span>“Stoping MySQL&#8230;\n”</span><span>  </span></li>
<li><span>    /usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown   </span></li>
<li><span>}   </span></li>
<li><span>  </span></li>
<li><span>function_restart_mysql()   </span></li>
<li><span>{   </span></li>
<li><span>    printf </span><span>“Restarting MySQL&#8230;\n”</span><span>  </span></li>
<li><span>    function_stop_mysql   </span></li>
<li><span>    sleep 5   </span></li>
<li><span>    function_start_mysql   </span></li>
<li><span>}   </span></li>
<li><span>  </span></li>
<li><span>function_kill_mysql()   </span></li>
<li><span>{   </span></li>
<li><span>    kill -9 $(ps -ef | grep </span><span>&#8216;bin/mysqld_safe&#8217;</span><span> | grep ${mysql_port} | awk </span><span>&#8216;{printf $2}&#8217;</span><span>)   </span></li>
<li><span>    kill -9 $(ps -ef | grep </span><span>&#8216;libexec/mysqld&#8217;</span><span> | grep ${mysql_port} | awk </span><span>&#8216;{printf $2}&#8217;</span><span>)   </span></li>
<li><span>}   </span></li>
<li><span>  </span></li>
<li><span> </span><span>if</span><span> [ </span><span>"$1"</span><span> = </span><span>"start"</span><span> ]; then   </span></li>
<li><span>    function_start_mysql   </span></li>
<li><span>elif [ </span><span>"$1"</span><span> = </span><span>"stop"</span><span> ]; then   </span></li>
<li><span>    function_stop_mysql   </span></li>
<li><span>elif [ </span><span>"$1"</span><span> = </span><span>"restart"</span><span> ]; then   </span></li>
<li><span>function_restart_mysql   </span></li>
<li><span>elif [ </span><span>"$1"</span><span> = </span><span>"kill"</span><span> ]; then   </span></li>
<li><span>function_kill_mysql   </span></li>
<li><span> </span><span>else</span><span>  </span></li>
<li><span>    printf </span><span>“Usage: /data0/mysql/${mysql_port}/mysql {start|stop|restart|kill}\n”</span><span>  </span></li>
<li><span>fi  </span></li>
<p><textarea style="DISPLAY: none" cols="100" rows="15" name="code">#!/bin/sh  mysql_port=3306 mysql_username=”admin” mysql_password=”12345678&#8243;  function_start_mysql() {     printf “Starting MySQL&#8230;\n”     /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe &#8211;defaults-file=/data0/mysql/${mysql_port}/my.cnf 2&gt;&amp;1 &gt; /dev/null &amp; }  function_stop_mysql() {     printf “Stoping MySQL&#8230;\n”     /usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown }  function_restart_mysql() {     printf “Restarting MySQL&#8230;\n”     function_stop_mysql     sleep 5     function_start_mysql }  function_kill_mysql() {     kill -9 $(ps -ef | grep &#8216;bin/mysqld_safe&#8217; | grep ${mysql_port} | awk &#8216;{printf $2}&#8217;)     kill -9 $(ps -ef | grep &#8216;libexec/mysqld&#8217; | grep ${mysql_port} | awk &#8216;{printf $2}&#8217;) }  if [ "$1" = "start" ]; then     function_start_mysql elif [ "$1" = "stop" ]; then     function_stop_mysql elif [ "$1" = "restart" ]; then function_restart_mysql elif [ "$1" = "kill" ]; then function_kill_mysql else     printf “Usage: /data0/mysql/${mysql_port}/mysql {start|stop|restart|kill}\n” fi</textarea><br />
　　⑤、赋予shell脚本可执行权限：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">chmod +x /data0/mysql/3306/mysql</div>
<p>　　⑥、启动MySQL：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/data0/mysql/3306/mysql start</div>
<p>　　⑦、通过命令行登录管理MySQL服务器（提示输入密码时直接回车）：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock</div>
<p>　　⑧、输入以下<acronym title="Structured Query Language">SQL</acronym>语句，创建一个具有root权限的用户（admin）和密码（12345678）：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">GRANT ALL PRIVILEGES ON *.* TO &#8216;admin&#8217;@'localhost&#8217; IDENTIFIED BY &#8217;12345678&#8242;;<br />
GRANT ALL PRIVILEGES ON *.* TO &#8216;admin&#8217;@&#8217;127.0.0.1&#8242; IDENTIFIED BY &#8217;12345678&#8242;;</div>
<p>　　⑨、（可选）停止MySQL：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/data0/mysql/3306/mysql stop</div>
<p> </p>
<hr />　　3、编译安装<acronym title="Pre-Hypertext Processing">PHP</acronym>（FastCGI模式）</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">tar zxvf php-5.2.10.tar.gz<br />
gzip -cd php-5.2.10-fpm-0.5.11.diff.gz | patch -d php-5.2.10 -p1<br />
cd php-5.2.10/<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 &#8211;with-ldap &#8211;with-ldap-sasl &#8211;with-xmlrpc &#8211;enable-zip &#8211;enable-soap &#8211;without-pear<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 ../</div>
<p> </p>
<hr />　　4、编译安装PHP5扩展模块</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">tar zxvf memcache-2.2.5.tgz<br />
cd memcache-2.2.5/<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 ../</div>
<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>tar zxvf ImageMagick.tar.gz<br />
cd ImageMagick-6.5.1-2/<br />
./configure<br />
make<br />
make install<br />
cd ../</p>
<p>tar zxvf imagick-2.2.2.tgz<br />
cd imagick-2.2.2/<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>　　5、修改php.ini文件<br />
　　<strong>手工修改：</strong>查找/usr/local/webserver/php/etc/php.ini中的extension_dir = “./”<br />
　　修改为extension_dir = “/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/”<br />
　　并在此行后增加以下几行，然后保存：<br />
　　extension = “memcache.so”<br />
　　extension = “pdo_mysql.so”<br />
　　extension = “imagick.so”</p>
<p>　　再查找output_buffering = Off<br />
　　修改为output_buffering = On</p>
<p>　　<strong>自动修改：</strong>若嫌手工修改麻烦，可执行以下shell命令，自动完成对php.ini文件的修改：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">sed -i &#8216;s#extension_dir = “./”#extension_dir = “/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/”\nextension = “memcache.so”\nextension = “pdo_mysql.so”\nextension = “imagick.so”\n#&#8217; /usr/local/webserver/php/etc/php.ini<br />
sed -i &#8216;s#output_buffering = Off#output_buffering = On#&#8217; /usr/local/webserver/php/etc/php.ini<br />
sed -i “s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g” /usr/local/webserver/php/etc/php.ini</div>
<p>　　6、配置eAccelerator加速<acronym title="Pre-Hypertext Processing">PHP</acronym>：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">mkdir -p /usr/local/webserver/eaccelerator_cache<br />
vi /usr/local/webserver/php/etc/php.ini</div>
<p>　　按shift+g键跳到配置文件的最末尾，加上以下配置信息：</p>
<div>引用</div>
<p>[eaccelerator]<br />
zend_extension=”/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”<br />
eaccelerator.shm_size=”64&#8243;<br />
eaccelerator.cache_dir=”/usr/local/webserver/eaccelerator_cache”<br />
eaccelerator.enable=”1&#8243;<br />
eaccelerator.optimizer=”1&#8243;<br />
eaccelerator.check_mtime=”1&#8243;<br />
eaccelerator.debug=”0&#8243;<br />
eaccelerator.filter=”"<br />
eaccelerator.shm_max=”0&#8243;<br />
eaccelerator.shm_ttl=”3600&#8243;<br />
eaccelerator.shm_prune_period=”3600&#8243;<br />
eaccelerator.shm_only=”0&#8243;<br />
eaccelerator.compress=”1&#8243;<br />
eaccelerator.compress_level=”9&#8243;</p>
<hr />　　7、创建www用户和组，以及供blog.s135.com和<a href="http://www.s135.com" target="_blank">www.s135.com</a>两个虚拟主机使用的目录：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 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</div>
<p>　　8、创建php-fpm配置文件（php-fpm是为<acronym title="Pre-Hypertext Processing">PHP</acronym>打的一个FastCGI管理补丁，可以平滑变更php.ini配置而无需重启php-cgi）：<br />
　　在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">rm -f /usr/local/webserver/php/etc/php-fpm.conf<br />
vi /usr/local/webserver/php/etc/php-fpm.conf</div>
<p>　　输入以下内容（如果您安装 Nginx + <acronym title="Pre-Hypertext Processing">PHP</acronym> 用于程序调试，请将以下的&lt;value name=”display_errors”&gt;0&lt;/value&gt;改为&lt;value name=”display_errors”&gt;1&lt;/value&gt;，以便显示<acronym title="Pre-Hypertext Processing">PHP</acronym>错误信息，否则，Nginx 会报状态为500的空白错误页）：</p>
<div>
<div><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="#">?</a></div>
</div>
<li><span><span>&lt;?</span>xml</span><span> </span><span>version</span><span>=</span>“1.0&#8243;<span> </span><span>?&gt;</span><span>  </span></li>
<li><span> </span><span>&lt;</span>configuration<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>  All relative paths in this config are relative to php&#8217;s install prefix   </span></li>
<li><span>  </span></li>
<li><span>  </span><span>&lt;</span>section<span> </span><span>name</span><span>=</span>“global_options”<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    Pid file   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“pid_file”<span>&gt;</span><span>/usr/local/webserver/php/logs/php-fpm.pid</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    Error log file   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“error_log”<span>&gt;</span><span>/usr/local/webserver/php/logs/php-fpm.log</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    Log level   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“log_level”<span>&gt;</span><span>notice</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    When this amount of php processes exited with SIGSEGV or SIGBUS &#8230;   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“emergency_restart_threshold”<span>&gt;</span><span>10</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    &#8230; in a less than this interval of time, a graceful restart will be initiated.   </span></li>
<li><span>    Useful to work around accidental curruptions in accelerator&#8217;s shared memory.   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“emergency_restart_interval”<span>&gt;</span><span>1m</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    Time limit on waiting child&#8217;s reaction on signals from master   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“process_control_timeout”<span>&gt;</span><span>5s</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    Set to &#8217;no&#8217; to debug fpm   </span></li>
<li><span>    </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“daemonize”<span>&gt;</span><span>yes</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>  </span><span>&lt;/</span>section<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>  </span><span>&lt;</span>workers<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    </span><span>&lt;</span>section<span> </span><span>name</span><span>=</span>“pool”<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Name of pool. Used in logs and stats.   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“name”<span>&gt;</span><span>default</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><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><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“listen_address”<span>&gt;</span><span>127.0.0.1:9000</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“listen_options”<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>        Set listen(2) backlog   </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“backlog”<span>&gt;</span><span>-1</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>        Set permissions for unix socket, if one used.   </span></li>
<li><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><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“owner”<span>&gt;</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“group”<span>&gt;</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“mode”<span>&gt;</span><span>0666</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>      </span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Additional php.ini defines, specific to this pool of workers.   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“php_defines”<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“sendmail_path”<span>&gt;</span><span>/usr/sbin/sendmail -t -i</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“display_errors”<span>&gt;</span><span>1</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>      </span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Unix user of processes   </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“user”<span>&gt;</span><span>www</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Unix group of processes   </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“group”<span>&gt;</span><span>www</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Process manager settings   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“pm”<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><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><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“style”<span>&gt;</span><span>static</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><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><span>        Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi   </span></li>
<li><span>        Used with any pm_style.   </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“max_children”<span>&gt;</span><span>128</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>        Settings group for &#8217;apache-like&#8217; pm style   </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“apache_like”<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>          Sets the number of server processes created on startup.   </span></li>
<li><span>          Used only when &#8217;apache-like&#8217; pm_style is selected   </span></li>
<li><span>          </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“StartServers”<span>&gt;</span><span>20</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>          Sets the desired minimum number of idle server processes.   </span></li>
<li><span>          Used only when &#8217;apache-like&#8217; pm_style is selected   </span></li>
<li><span>          </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“MinSpareServers”<span>&gt;</span><span>5</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>          Sets the desired maximum number of idle server processes.   </span></li>
<li><span>          Used only when &#8217;apache-like&#8217; pm_style is selected   </span></li>
<li><span>          </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“MaxSpareServers”<span>&gt;</span><span>35</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>        </span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      </span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><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><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><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“request_terminate_timeout”<span>&gt;</span><span>0s</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><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><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“request_slowlog_timeout”<span>&gt;</span><span>0s</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      The log file for slow requests   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“slowlog”<span>&gt;</span><span>logs/slow.log</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Set open file desc rlimit   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“rlimit_files”<span>&gt;</span><span>51200</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Set max core size rlimit   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“rlimit_core”<span>&gt;</span><span>0</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Chroot to this directory at the start, absolute path   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“chroot”<span>&gt;</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Chdir to this directory at the start, absolute path   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“chdir”<span>&gt;</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Redirect workers&#8217; stdout and stderr into main error log.   </span></li>
<li><span>      If not set, they will be redirected to /dev/null, according to FastCGI specs   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“catch_workers_output”<span>&gt;</span><span>yes</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      How much requests each process should execute before respawn.   </span></li>
<li><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><span>      Equivalent to PHP_FCGI_MAX_REQUESTS   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“max_requests”<span>&gt;</span><span>102400</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.   </span></li>
<li><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><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“allowed_clients”<span>&gt;</span><span>127.0.0.1</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>      Pass environment variables like LD_LIBRARY_PATH   </span></li>
<li><span>      All $VARIABLEs are taken from current environment   </span></li>
<li><span>      </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“environment”<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“HOSTNAME”<span>&gt;</span><span>$HOSTNAME</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“PATH”<span>&gt;</span><span>/usr/local/bin:/usr/bin:/bin</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“TMP”<span>&gt;</span><span>/tmp</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“TMPDIR”<span>&gt;</span><span>/tmp</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“TEMP”<span>&gt;</span><span>/tmp</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“OSTYPE”<span>&gt;</span><span>$OSTYPE</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“MACHTYPE”<span>&gt;</span><span>$MACHTYPE</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>        </span><span>&lt;</span>value<span> </span><span>name</span><span>=</span>“MALLOC_CHECK_”<span>&gt;</span><span>2</span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>      </span><span>&lt;/</span>value<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>    </span><span>&lt;/</span>section<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span>  </span><span>&lt;/</span>workers<span>&gt;</span><span>  </span></li>
<li><span>  </span></li>
<li><span> </span><span>&lt;/</span>configuration<span>&gt;</span><span>  </span></li>
<p><textarea style="DISPLAY: none" cols="100" rows="15" name="code">&lt;?xml version=”1.0&#8243; ?&gt; &lt;configuration&gt;    All relative paths in this config are relative to php&#8217;s install prefix    &lt;section name=”global_options”&gt;      Pid file     &lt;value name=”pid_file”&gt;/usr/local/webserver/php/logs/php-fpm.pid&lt;/value&gt;      Error log file     &lt;value name=”error_log”&gt;/usr/local/webserver/php/logs/php-fpm.log&lt;/value&gt;      Log level     &lt;value name=”log_level”&gt;notice&lt;/value&gt;      When this amount of php processes exited with SIGSEGV or SIGBUS &#8230;     &lt;value name=”emergency_restart_threshold”&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=”emergency_restart_interval”&gt;1m&lt;/value&gt;      Time limit on waiting child&#8217;s reaction on signals from master     &lt;value name=”process_control_timeout”&gt;5s&lt;/value&gt;      Set to &#8216;no&#8217; to debug fpm     &lt;value name=”daemonize”&gt;yes&lt;/value&gt;    &lt;/section&gt;    &lt;workers&gt;      &lt;section name=”pool”&gt;        Name of pool. Used in logs and stats.       &lt;value name=”name”&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=”listen_address”&gt;127.0.0.1:9000&lt;/value&gt;        &lt;value name=”listen_options”&gt;          Set listen(2) backlog         &lt;value name=”backlog”&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=”owner”&gt;&lt;/value&gt;         &lt;value name=”group”&gt;&lt;/value&gt;         &lt;value name=”mode”&gt;0666&lt;/value&gt;       &lt;/value&gt;        Additional php.ini defines, specific to this pool of workers.       &lt;value name=”php_defines”&gt;         &lt;value name=”sendmail_path”&gt;/usr/sbin/sendmail -t -i&lt;/value&gt;         &lt;value name=”display_errors”&gt;1&lt;/value&gt;       &lt;/value&gt;        Unix user of processes         &lt;value name=”user”&gt;www&lt;/value&gt;        Unix group of processes         &lt;value name=”group”&gt;www&lt;/value&gt;        Process manager settings       &lt;value name=”pm”&gt;          Sets style of controling worker process count.         Valid values are &#8216;static&#8217; and &#8216;apache-like&#8217;         &lt;value name=”style”&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=”max_children”&gt;128&lt;/value&gt;          Settings group for &#8216;apache-like&#8217; pm style         &lt;value name=”apache_like”&gt;            Sets the number of server processes created on startup.           Used only when &#8216;apache-like&#8217; pm_style is selected           &lt;value name=”StartServers”&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=”MinSpareServers”&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=”MaxSpareServers”&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=”request_terminate_timeout”&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=”request_slowlog_timeout”&gt;0s&lt;/value&gt;        The log file for slow requests       &lt;value name=”slowlog”&gt;logs/slow.log&lt;/value&gt;        Set open file desc rlimit       &lt;value name=”rlimit_files”&gt;51200&lt;/value&gt;        Set max core size rlimit       &lt;value name=”rlimit_core”&gt;0&lt;/value&gt;        Chroot to this directory at the start, absolute path       &lt;value name=”chroot”&gt;&lt;/value&gt;        Chdir to this directory at the start, absolute path       &lt;value name=”chdir”&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=”catch_workers_output”&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=”max_requests”&gt;102400&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=”allowed_clients”&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=”environment”&gt;         &lt;value name=”HOSTNAME”&gt;$HOSTNAME&lt;/value&gt;         &lt;value name=”PATH”&gt;/usr/local/bin:/usr/bin:/bin&lt;/value&gt;         &lt;value name=”TMP”&gt;/tmp&lt;/value&gt;         &lt;value name=”TMPDIR”&gt;/tmp&lt;/value&gt;         &lt;value name=”TEMP”&gt;/tmp&lt;/value&gt;         &lt;value name=”OSTYPE”&gt;$OSTYPE&lt;/value&gt;         &lt;value name=”MACHTYPE”&gt;$MACHTYPE&lt;/value&gt;         &lt;value name=”MALLOC_CHECK_”&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>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">ulimit -SHn 51200<br />
/usr/local/webserver/php/sbin/php-fpm start</div>
<p>　　注：/usr/local/webserver/php/sbin/php-fpm还有其他参数，包括：start|stop|quit|restart|reload|logrotate，修改php.ini后不重启php-cgi，重新加载配置文件使用reload。</p>
<hr />　　<strong>三、安装Nginx 0.7.61</strong><br />
　　1、安装Nginx所需的pcre库：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">tar zxvf pcre-7.9.tar.gz<br />
cd pcre-7.9/<br />
./configure<br />
make &amp;&amp; make install<br />
cd ../</div>
<p>　　2、安装Nginx</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">tar zxvf nginx-0.7.61.tar.gz<br />
cd nginx-0.7.61/<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 ../</div>
<p>　　3、创建Nginx日志目录</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">mkdir -p /data1/logs<br />
chmod +w /data1/logs<br />
chown -R www:www /data1/logs</div>
<p>　　4、创建Nginx配置文件<br />
　　①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">rm -f /usr/local/webserver/nginx/conf/nginx.conf<br />
vi /usr/local/webserver/nginx/conf/nginx.conf</div>
<p>　　输入以下内容：</p>
<div>引用</div>
<p>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 &#8211; $remote_user [$time_local] “$request” &#8216;<br />
              &#8217;$status $body_bytes_sent “$http_referer” &#8216;<br />
              &#8217;”$http_user_agent” $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 href="http://www.s135.com;" target="_blank">www.s135.com;</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 &#8211; $remote_user [$time_local] “$request” &#8216;<br />
               &#8216;$status $body_bytes_sent “$http_referer” &#8216;<br />
               &#8216;”$http_user_agent” $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>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">vi /usr/local/webserver/nginx/conf/fcgi.conf</div>
<p>　　输入以下内容：</p>
<div>引用</div>
<p>fastcgi_param  GATEWAY_INTERFACE  <acronym title="Common Gateway Interface">CGI</acronym>/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># <acronym title="Pre-Hypertext Processing">PHP</acronym> only, required if <acronym title="Pre-Hypertext Processing">PHP</acronym> was built with &#8211;enable-force-cgi-redirect<br />
fastcgi_param  REDIRECT_STATUS    200;</p>
<p>　　5、启动Nginx</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">ulimit -SHn 51200<br />
/usr/local/webserver/nginx/sbin/nginx</div>
<p> </p>
<hr />　　<strong>四、配置开机自动启动Nginx + <acronym title="Pre-Hypertext Processing">PHP</acronym></strong></p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">vi /etc/rc.local</div>
<p>　　在末尾增加以下内容：</p>
<div>引用</div>
<p>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>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">vi /etc/sysctl.conf</div>
<p>　　在末尾增加以下内容：</p>
<div>引用</div>
<p># Add<br />
net.ipv4.tcp_max_syn_backlog = 65536<br />
net.core.netdev_max_backlog =  32768<br />
net.core.somaxconn = 32768</p>
<p>net.core.wmem_default = 8388608<br />
net.core.rmem_default = 8388608<br />
net.core.rmem_max = 16777216<br />
net.core.wmem_max = 16777216</p>
<p>net.ipv4.tcp_timestamps = 0<br />
net.ipv4.tcp_synack_retries = 2<br />
net.ipv4.tcp_syn_retries = 2</p>
<p>net.ipv4.tcp_tw_recycle = 1<br />
#net.ipv4.tcp_tw_len = 1<br />
net.ipv4.tcp_tw_reuse = 1</p>
<p>net.ipv4.tcp_mem = 94500000 915000000 927000000<br />
net.ipv4.tcp_max_orphans = 3276800</p>
<p>#net.ipv4.tcp_fin_timeout = 30<br />
#net.ipv4.tcp_keepalive_time = 120<br />
net.ipv4.ip_local_port_range = 1024  65535</p>
<p>　　使配置立即生效：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/sbin/sysctl -p</div>
<p> </p>
<hr />　　<strong>六、在不停止Nginx服务的情况下平滑变更Nginx配置</strong><br />
　　1、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后，请执行以下命令检查配置文件是否正确：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">/usr/local/webserver/nginx/sbin/nginx -t</div>
<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>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">ps -ef | grep “nginx: master process” | grep -v “grep” | awk -F &#8216; &#8216; &#8216;{print $2}&#8217;</div>
<p>　　屏幕显示的即为Nginx主进程号，例如：<br />
　　<span style="COLOR: #008000">6302</span><br />
　　这时，执行以下命令即可使修改过的Nginx配置文件生效：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">kill -HUP 6302</div>
<p>　　或者无需这么麻烦，找到Nginx的Pid文件：</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`</div>
<p> </p>
<hr />　　<strong>七、编写每天定时切割Nginx日志的脚本</strong><br />
　　1、创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh</div>
<p>　　输入以下内容：</p>
<div>引用</div>
<p>#!/bin/bash<br />
# This script run at 00:00</p>
<p># The Nginx logs path<br />
logs_path=”/usr/local/webserver/nginx/logs/”</p>
<p>mkdir -p ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/<br />
mv ${logs_path}access.log ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/access_$(date -d “yesterday” +”%Y%m%d”).log<br />
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`</p>
<p>　　2、设置crontab，每天凌晨00:00切割nginx访问日志</p>
<div style="BORDER-BOTTOM: #00a0c6 1px dashed; BORDER-LEFT: #00a0c6 1px dashed; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #ffffff; MARGIN: 5px 5px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #00a0c6 1px dashed; BORDER-RIGHT: #00a0c6 1px dashed; PADDING-TOP: 3px">crontab -e</div>
<p>　　输入以下内容：</p>
<div>引用</div>
<p>00 00 * * * /bin/bash  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh</p>
<hr /><h2  class="related_post_title">类似的文章</h2><ul class="related_post"><li>2009年07月15日 -- <a href="http://www.penglixun.com/tech/system/build_webserver_use_lighttpd_spuid_apache.html" title="Lighttpd+Squid+Apache搭建高效率Web服务器">Lighttpd+Squid+Apache搭建高效率Web服务器</a> (0)</li><li>2010年04月9日 -- <a href="http://www.penglixun.com/tech/system/xfce_zendstudio_error.html" title="Xfce下ZendStudio的报错处理">Xfce下ZendStudio的报错处理</a> (0)</li><li>2010年01月18日 -- <a href="http://www.penglixun.com/tech/system/linux_compile_php_error.html" title="Linux下编译PHP的几种错误">Linux下编译PHP的几种错误</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.penglixun.com/tech/system/nginx_php_fastcgi_better_apache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

