<?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>蓝色数据 &#187; fastcgi</title>
	<atom:link href="http://bluedata.org/tag/fastcgi/feed/" rel="self" type="application/rss+xml" />
	<link>http://bluedata.org</link>
	<description>奋斗是幸福的……</description>
	<lastBuildDate>Mon, 14 Sep 2009 01:53:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>以 FastCGI 模式安装 PHP5</title>
		<link>http://bluedata.org/2009/08/10/install_php5_fcgi/</link>
		<comments>http://bluedata.org/2009/08/10/install_php5_fcgi/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 15:52:00 +0000</pubDate>
		<dc:creator>Bluedata</dc:creator>
				<category><![CDATA[应用技术]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>

		<guid isPermaLink="false">http://bluedata.org/?p=171</guid>
		<description><![CDATA[软件下载：
PHP5(http://www.php.net/downloads.php):
wget http://cn.php.net/get/php-5.2.10.tar.bz2/from/this/mirror
php-fpm(http://php-fpm.org/Download):
wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz
安装依赖的包：
CentOS:
yum install mysql-devel gd-devel libxml2-devel
Debian:
apt-get install libmysqlclient15-dev libgd2-xpm-dev libxml2-dev
应用 php-fpm 补丁：
tar jxvf php-5.2.10.tar.bz2
gzip -cd php-5.2.10-fpm-0.5.13.diff.gz &#124; patch -d php-5.2.10 -p1
安装 PHP5:
cd php-5.2.10
./configure \
--prefix=/usr/local/php-fcgi \
--enable-discard-path \
--enable-fastcgi \
--enable-fpm \
--enable-force-cgi-redirect \
--enable-mbstring \
--enable-sockets \
--with-config-file-path=/usr/local/php-fcgi/etc \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-zlib \
--with-mysql \
--with-mysqli
make
make install
cp -f php.ini-recommended /usr/local/php-fcgi/etc/php.ini
一些必备模块的安装：
安装 ZendOptimizer:
Zend 的优化器，免费使用，如果加密了 PHP 程序文件，这是必须的。
如果没有使用 Zend 优化器，PHP 进程的内存会难以释放。
下载： http://www.zend.com/en/products/guard/downloads
tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install
安装 eAccelerator:
PHP [...]]]></description>
			<content:encoded><![CDATA[<p>软件下载：<br />
PHP5(http://www.php.net/downloads.php):<br />
wget http://cn.php.net/get/php-5.2.10.tar.bz2/from/this/mirror</p>
<p>php-fpm(http://php-fpm.org/Download):<br />
wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz</p>
<p>安装依赖的包：<br />
CentOS:<br />
yum install mysql-devel gd-devel libxml2-devel</p>
<p>Debian:<br />
apt-get install libmysqlclient15-dev libgd2-xpm-dev libxml2-dev</p>
<p>应用 php-fpm 补丁：<br />
tar jxvf php-5.2.10.tar.bz2<br />
gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1</p>
<p>安装 PHP5:<br />
<coolcode linenum="off">cd php-5.2.10<br />
./configure \<br />
--prefix=/usr/local/php-fcgi \<br />
--enable-discard-path \<br />
--enable-fastcgi \<br />
--enable-fpm \<br />
--enable-force-cgi-redirect \<br />
--enable-mbstring \<br />
--enable-sockets \<br />
--with-config-file-path=/usr/local/php-fcgi/etc \<br />
--with-gd \<br />
--with-jpeg-dir \<br />
--with-png-dir \<br />
--with-freetype-dir \<br />
--with-zlib \<br />
--with-mysql \<br />
--with-mysqli</p>
<p>make<br />
make install</p>
<p>cp -f php.ini-recommended /usr/local/php-fcgi/etc/php.ini</coolcode></p>
<p>一些必备模块的安装：<br />
安装 ZendOptimizer:<br />
Zend 的优化器，免费使用，如果加密了 PHP 程序文件，这是必须的。<br />
如果没有使用 Zend 优化器，PHP 进程的内存会难以释放。<br />
下载： http://www.zend.com/en/products/guard/downloads<br />
tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
cd ZendOptimizer-3.3.3-linux-glibc23-i386<br />
./install</p>
<p>安装 eAccelerator:<br />
PHP scripts 的缓存，对于提高 PHP 程序执行速度很有帮助。<br />
下载： http://eaccelerator.net/<br />
tar jxvf eaccelerator-0.9.5.3.tar.bz2<br />
cd eaccelerator-0.9.5.3<br />
/usr/local/php-fcgi/bin/phpize<br />
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php-fcgi/bin/php-config<br />
make<br />
make install</p>
<p>安装 memcache:<br />
用于操作 Memcached ，应用非常广泛。<br />
下载： http://pecl.php.net/package/memcache<br />
tar zxvf memcache-2.2.5.tgz<br />
cd memcache-2.2.5<br />
/usr/local/php-fcgi/bin/phpize<br />
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config<br />
make<br />
make install</p>
<p>PHP5 的配置：<br />
vi /usr/local/php-fcgi/etc/php.ini<br />
<coolcode linenum="off"># 开启短标记支持<br />
short_open_tag = On<br />
# 最大执行时间<br />
max_execution_time = 5<br />
# 最大使用内存<br />
memory_limit = 8M<br />
# 扩展模块的目录<br />
extension_dir = "/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20060613"<br />
# 关闭 mysql 持久连接。高访问量下会把数据库可用连接用完。<br />
mysql.allow_persistent = Off<br />
# 缩短连接超时时间<br />
mysql.connect_timeout = 10<br />
# session 文件存储目录<br />
session.save_path = "/tmpfs"<br />
# session 过期时间设为一小时<br />
session.gc_maxlifetime = 3600<br />
# 关闭 session.bug_compat_warn<br />
session.bug_compat_warn = 0</p>
<p># 开启 eAccelerator<br />
[eAccelerator]<br />
extension="eaccelerator.so"<br />
# 可使用内存设为了 16M ，太大会启动不了 PHP ，以 CGI 模式运行的 PHP ，各进程间也不能共享内存， eAccelerator 的共享模式也就无效了。<br />
eaccelerator.shm_size="16"<br />
eaccelerator.cache_dir="/tmpfs"<br />
eaccelerator.enable="1"<br />
eaccelerator.optimizer="1"<br />
eaccelerator.check_mtime="1"<br />
eaccelerator.debug="0"<br />
eaccelerator.filter=""<br />
eaccelerator.shm_max="0"<br />
eaccelerator.shm_ttl="0"<br />
eaccelerator.shm_prune_period="0"<br />
eaccelerator.shm_only="0"<br />
eaccelerator.compress="1"<br />
eaccelerator.compress_level="9"</p>
<p># 在 eAccelerator 之后启用 ZendOptimizer ，避免 eaccelerator.so 不能加载。<br />
[Zend]<br />
zend_optimizer.optimization_level=1023<br />
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3<br />
zend_optimizer.version=3.3.3<br />
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so</p>
<p># 开启 memcache<br />
[memcache]<br />
extension=memcache.so</coolcode></p>
<p>用 tmpfs 提升性能：<br />
mkdir /tmpfs<br />
在 /etc/fstab 中加入<br />
tmpfs                   /tmpfs              tmpfs   size=256m,mode=1777        0 0</p>
<p>mount -a</p>
<p>定时清除：<br />
vi /etc/crontab<br />
0 * * * * root find /tmpfs -type f -amin +60 -exec rm {} \;</p>
<p>配置 php-fpm ，如：<br />
vi /usr/local/php-fcgi/etc/php-fpm.conf<br />
<coolcode linenum="off" lang="xml"><?xml version="1.0" ?><br />
<configuration></p>
<p>        All relative paths in this config are relative to php's install prefix</p>
<p>        <section name="global_options"></p>
<p>                Pid file<br />
                <value name="pid_file">/usr/local/php-fcgi/logs/php-fpm.pid</value></p>
<p>                Error log file<br />
                <value name="error_log">/usr/local/php-fcgi/logs/php-fpm.log</value></p>
<p>                Log level<br />
                <value name="log_level">notice</value></p>
<p>                When this amount of php processes exited with SIGSEGV or SIGBUS ...<br />
                <value name="emergency_restart_threshold">10</value></p>
<p>                ... in a less than this interval of time, a graceful restart will be initiated.<br />
                Useful to work around accidental curruptions in accelerator's shared memory.<br />
                <value name="emergency_restart_interval">1m</value></p>
<p>                Time limit on waiting child's reaction on signals from master<br />
                <value name="process_control_timeout">5s</value></p>
<p>                Set to 'no' to debug fpm<br />
                <value name="daemonize">yes</value></p>
<p>        </section></p>
<p>        <workers></p>
<p>                <section name="pool"></p>
<p>                        Name of pool. Used in logs and stats.<br />
                        <value name="name">default</value></p>
<p>                        Address to accept fastcgi requests on.<br />
                        Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'<br />
                        <value name="listen_address">127.0.0.1:9000</value></p>
<p>                        <value name="listen_options"></p>
<p>                                Set listen(2) backlog<br />
                                <value name="backlog">-1</value></p>
<p>                                Set permissions for unix socket, if one used.<br />
                                In Linux read/write permissions must be set in order to allow connections from web server.<br />
                                Many BSD-derrived systems allow connections regardless of permissions.<br />
                                <value name="owner"></value><br />
                                <value name="group"></value><br />
                                <value name="mode">0666</value><br />
                        </value></p>
<p>                        Additional php.ini defines, specific to this pool of workers.<br />
                        <value name="php_defines"><br />
                                <value name="sendmail_path">/usr/sbin/sendmail -t -i</value><br />
                                <value name="display_errors">0</value><br />
                        </value></p>
<p>                        Unix user of processes<br />
                        <value name="user">www-data</value></p>
<p>                        Unix group of processes<br />
                        <value name="group">www-data</value></p>
<p>                        Process manager settings<br />
                        <value name="pm"></p>
<p>                                Sets style of controling worker process count.<br />
                                Valid values are 'static' and 'apache-like'<br />
                                <value name="style">static</value></p>
<p>                                Sets the limit on the number of simultaneous requests that will be served.<br />
                                Equivalent to Apache MaxClients directive.<br />
                                Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi<br />
                                Used with any pm_style.<br />
                                <value name="max_children">16</value></p>
<p>                                Settings group for 'apache-like' pm style<br />
                                <value name="apache_like"></p>
<p>                                        Sets the number of server processes created on startup.<br />
                                        Used only when 'apache-like' pm_style is selected<br />
                                        <value name="StartServers">2</value></p>
<p>                                        Sets the desired minimum number of idle server processes.<br />
                                        Used only when 'apache-like' pm_style is selected<br />
                                        <value name="MinSpareServers">4</value></p>
<p>                                        Sets the desired maximum number of idle server processes.<br />
                                        Used only when 'apache-like' pm_style is selected<br />
                                        <value name="MaxSpareServers">16</value></p>
<p>                                </value></p>
<p>                        </value></p>
<p>                        Time limit on waiting execution of single request<br />
                        Should be used when 'max_execution_time' ini option does not terminate execution for some reason<br />
                        <value name="request_execution_timeout">31s</value></p>
<p>                        Set open file desc rlimit<br />
                        <value name="rlimit_files">65536</value></p>
<p>                        Set max core size rlimit<br />
                        <value name="rlimit_core">0</value></p>
<p>                        Chroot to this directory at the start<br />
                        <value name="chroot"></value></p>
<p>                        Chdir to this directory at the start<br />
                        <value name="chdir"></value></p>
<p>                        Redirect workers' stdout and stderr into main error log.<br />
                        If not set, they will be redirected to /dev/null, according to FastCGI specs<br />
                        <value name="catch_workers_output">yes</value></p>
<p>                        How much requests each process should execute before respawn.<br />
                        Useful to work around memory leaks in 3rd party libraries.<br />
                        For endless request processing please specify 0<br />
                        Equivalent to PHP_FCGI_MAX_REQUESTS<br />
                        <value name="max_requests">65536</value></p>
<p>                        Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.<br />
                        Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)<br />
                        Makes sense only with AF_INET listening socket.<br />
                        <value name="allowed_clients">127.0.0.1</value></p>
<p>                        Pass environment variables like LD_LIBRARY_PATH<br />
                        All $VARIABLEs are taken from current environment<br />
                        <value name="environment"><br />
                                <value name="HOSTNAME">$HOSTNAME</value><br />
                                <value name="PATH">/usr/local/bin:/usr/bin:/bin</value><br />
                                <value name="TMP">/tmp</value><br />
                                <value name="TMPDIR">/tmp</value><br />
                                <value name="TEMP">/tmp</value><br />
                                <value name="OSTYPE">$OSTYPE</value><br />
                                <value name="MACHTYPE">$MACHTYPE</value><br />
                                <value name="MALLOC_CHECK_">2</value><br />
                        </value></p>
<p>                </section></p>
<p>        </workers></p>
<p></configuration></coolcode></p>
<p>系统的相关设置：<br />
echo -ne "<br />
fs.file-max = 65536<br />
" >> /etc/sysctl.conf<br />
sysctl -p</p>
<p>echo -ne "<br />
www-data soft nofile 65536<br />
www-data hard nofile 65536<br />
" >> /etc/security/limits.conf</p>
<p>启动 PHP-FCGI:<br />
/usr/local/php-fcgi/sbin/php-fpm start</p>
<p>可写入 /etc/rc.local 文件开机自启动。</p>
]]></content:encoded>
			<wfw:commentRss>http://bluedata.org/2009/08/10/install_php5_fcgi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nginx PHP FastCGI 安装配置记录</title>
		<link>http://bluedata.org/2008/04/18/nginx-php-fastcgi/</link>
		<comments>http://bluedata.org/2008/04/18/nginx-php-fastcgi/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 10:26:47 +0000</pubDate>
		<dc:creator>Bluedata</dc:creator>
				<category><![CDATA[应用技术]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.bluedata.org/nginx-php-fastcgi/</guid>
		<description><![CDATA[安装 PHP
下载：http://www.php.net/downloads.php
因需要兼容老程序，这里用的还是 PHP4 ，可根据自己的需要更改编译选项。
tar jxvf php-4.4.8.tar.bz2
cd php-4.4.8
./configure \
--prefix=/usr/local/php-fcgi \
--enable-fastcgi \
--enable-discard-path \
--enable-force-cgi-redirect \
--enable-mbstring=all \
--enable-memcache \
--with-config-file-path=/usr/local/php-fcgi/etc \
--with-gd=/usr/local/gd \
--with-zlib \
--with-png \
--with-jpeg \
--with-freetype \
--with-mysql=/usr/local/mysql \
--with-dom
make
make install
cp -f php.ini-dist /usr/local/php-fcgi/etc/php.ini
安装 ZendOptimizer
Zend 的优化器，免费使用，如果加密了 PHP 程序文件，这是必须的。
如果没有使用 Zend 优化器，PHP 进程的内存会难以释放。
下载：http://www.zend.com/en/products/guard/downloads
tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install
cd ..
安装 eAccelerator
PHP scripts 的缓存，对于提高 PHP 程序执行速度很有帮助。
下载：http://eaccelerator.net/
tar jxvf eaccelerator-0.9.5.2.tar.bz2
cd eaccelerator-0.9.5.2
/usr/local/php-fcgi/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php-fcgi/bin/php-config
make
make install
cd ..
安装 memcache
用于缓存 sql 查询，对于降低数据库压力，提升查询速度有很大好处。
下载：http://pecl.php.net/package/memcache
tar zxvf memcache-2.2.3.tgz
cd memcache-2.2.3
/usr/local/php-fcgi/bin/phpize
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config
make
make [...]]]></description>
			<content:encoded><![CDATA[<p>安装 PHP<br />
下载：http://www.php.net/downloads.php<br />
因需要兼容老程序，这里用的还是 PHP4 ，可根据自己的需要更改编译选项。<br />
tar jxvf php-4.4.8.tar.bz2<br />
cd php-4.4.8<br />
./configure \<br />
--prefix=/usr/local/php-fcgi \<br />
--enable-fastcgi \<br />
--enable-discard-path \<br />
--enable-force-cgi-redirect \<br />
--enable-mbstring=all \<br />
--enable-memcache \<br />
--with-config-file-path=/usr/local/php-fcgi/etc \<br />
--with-gd=/usr/local/gd \<br />
--with-zlib \<br />
--with-png \<br />
--with-jpeg \<br />
--with-freetype \<br />
--with-mysql=/usr/local/mysql \<br />
--with-dom<br />
make<br />
make install<br />
cp -f php.ini-dist /usr/local/php-fcgi/etc/php.ini</p>
<p>安装 ZendOptimizer<br />
Zend 的优化器，免费使用，如果加密了 PHP 程序文件，这是必须的。<br />
如果没有使用 Zend 优化器，PHP 进程的内存会难以释放。<br />
下载：http://www.zend.com/en/products/guard/downloads<br />
tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
cd ZendOptimizer-3.3.3-linux-glibc23-i386<br />
./install<br />
cd ..</p>
<p>安装 eAccelerator<br />
PHP scripts 的缓存，对于提高 PHP 程序执行速度很有帮助。<br />
下载：http://eaccelerator.net/<br />
tar jxvf eaccelerator-0.9.5.2.tar.bz2<br />
cd eaccelerator-0.9.5.2<br />
/usr/local/php-fcgi/bin/phpize<br />
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php-fcgi/bin/php-config<br />
make<br />
make install<br />
cd ..</p>
<p>安装 memcache<br />
用于缓存 sql 查询，对于降低数据库压力，提升查询速度有很大好处。<br />
下载：http://pecl.php.net/package/memcache<br />
tar zxvf memcache-2.2.3.tgz<br />
cd memcache-2.2.3<br />
/usr/local/php-fcgi/bin/phpize<br />
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config<br />
make<br />
make install</p>
<p>安装 Linghttpd's spawn-fcgi<br />
用 Lighttpd 的 spawn-fcgi 来管理 PHP FastCGI 进程。<br />
下载 Lighttpd: http://www.lighttpd.net/download<br />
yum -y install pcre-devel<br />
(debian: apt-get -y install libpcre3-dev)<br />
tar zxvf lighttpd-1.4.19.tar.bz2<br />
cd lighttpd-1.4.19<br />
./configure --without-bzip2<br />
make<br />
cp -a src/spawn-fcgi /usr/local/php-fcgi/bin/</p>
<p>安装 Nginx<br />
下载：http://nginx.net/<br />
tar zxvf nginx-0.5.35.tar.gz<br />
cd nginx-0.5.35<br />
./configure \<br />
--user=nobody \<br />
--group=nobody \<br />
--prefix=/usr/local/nginx \<br />
--with-http_stub_status_module<br />
make<br />
make install</p>
<p>配置 PHP<br />
vi /usr/local/php-fcgi/etc/php.ini<br />
# 最大执行时间<br />
max_execution_time = 5<br />
# 打开全局变量兼容老程序<br />
register_globals = On<br />
# 默认编码<br />
default_charset = "gbk"<br />
# 扩展模块的目录<br />
extension_dir = "/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20020429"<br />
# 关闭 mysql 持久连接。高访问量下会把数据库可用连接用完。<br />
mysql.allow_persistent = Off<br />
# 降低连接超时时间<br />
mysql.connect_timeout = 10<br />
# session 文件存储目录，这里为两级目录，需要手动创建。<br />
session.save_path = "2;/tmpfs/phpsession"<br />
# session 过期时间设为一小时。<br />
session.gc_maxlifetime = 3600<br />
# 关闭<br />
session.bug_compat_42 = 0<br />
session.bug_compat_warn = 0</p>
<p># 开启 eAccelerator<br />
[eAccelerator]<br />
extension="eaccelerator.so"<br />
# 可使用内存设为了 32M，太大会启动不了 PHP。<br />
eaccelerator.shm_size="32"<br />
eaccelerator.cache_dir="/tmpfs/eaccelerator"<br />
eaccelerator.enable="1"<br />
eaccelerator.optimizer="1"<br />
eaccelerator.check_mtime="1"<br />
eaccelerator.debug="0"<br />
eaccelerator.filter=""<br />
eaccelerator.shm_max="0"<br />
eaccelerator.shm_ttl="0"<br />
eaccelerator.shm_prune_period="0"<br />
eaccelerator.shm_only="0"<br />
eaccelerator.compress="1"<br />
eaccelerator.compress_level="9"</p>
<p># 在 eAccelerator 之后启用 ZO ，避免 eaccelerator.so 不能加载。<br />
[Zend]<br />
zend_optimizer.optimization_level=1023<br />
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3<br />
zend_optimizer.version=3.3.3<br />
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so</p>
<p># 开启 memcache<br />
[memcache]<br />
extension=memcache.so</p>
<p>配置 Nginx<br />
建立相应目录<br />
mkdir /var/log/nginx<br />
cd /usr/local/nginx<br />
mv logs conf/vhosts<br />
cd conf<br />
vi nginx.conf<br />
<coolcode lang="c"><br />
# 运行 Nginx 的用户<br />
user  nobody nobody;<br />
# Nginx 的进程数<br />
worker_processes  8;</p>
<p># 错误日志<br />
error_log  /var/log/nginx/error.log;</p>
<p># pid 文件<br />
pid        /var/run/nginx.pid;</p>
<p>events {<br />
# 使用 epoll(For Linux Kernel 2.6+) 提升 Nginx 性能。<br />
    use  epoll;<br />
# 最大连接数<br />
    worker_connections  4096;<br />
}</p>
<p>http {<br />
# 包含 mime types 的配置文件<br />
    include       conf/mime.types;<br />
# 默认类型<br />
    default_type  application/octet-stream;</p>
<p># 定义 temp 的路径<br />
    client_body_temp_path  /tmpfs/nginx/client_body_temp;<br />
    proxy_temp_path        /tmpfs/nginx/proxy_temp;<br />
    fastcgi_temp_path      /tmpfs/nginx/fastcgi_temp;</p>
<p># 如果 server_name 定义的域名过多，需要增大这个值<br />
    server_names_hash_bucket_size  128;</p>
<p># 定义主访问日志格式，因开启了 gzip，加入了 $gzip_ratio<br />
    log_format  main  '$remote_addr - $remote_user [$time_local] $request '<br />
                      '"$status" $body_bytes_sent "$http_referer" '<br />
                      '"$http_user_agent" "$gzip_ratio"';</p>
<p># 默认的访问日志存放文件<br />
    access_log  /var/log/nginx/access.log  main;</p>
<p># Linux Kernel 2.4+ 可通过调用内核级 sendfile() 来提高性能<br />
    sendfile  on;</p>
<p># FreeBSD 或基于 TCP_CORK 的 Linux 系统可使用<br />
    tcp_nopush on;</p>
<p># 只在 keep-alive 连接状态中使用<br />
    tcp_nodelay  on;</p>
<p># 设置保持连接超时时间 和 header 超时时间（单位：秒）<br />
    keepalive_timeout  60 15;</p>
<p># 开启 gzip<br />
    gzip  on;<br />
# 压缩级别 1-9，9 为最高压缩级别<br />
    gzip_comp_level  9;<br />
# 回送给客户端最小的 gzip 压缩大小<br />
    gzip_min_length  1100;<br />
# 设置 gzip 缓存的大小，默认是 4-8k 之间<br />
    gzip_buffers  4 8k;<br />
# gzip http 版本<br />
    gzip_http_version  1.1;<br />
# 需要使用 gzip 压缩的文件类型<br />
    gzip_types  text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;</p>
<p># 定义默认主机<br />
    server {<br />
# 监听端口<br />
        listen       80;<br />
# 匹配所有域名<br />
        server_name  _ *;<br />
# 默认首页<br />
        index  index.php;<br />
# 根目录路径<br />
        root  /home/www;<br />
# 执行 php 程序文件的设置<br />
        location ~ .*\.php?$ {<br />
            include  conf/fcgi.conf;<br />
        }<br />
# 对于以下文件不记录访问日志<br />
        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {<br />
            access_log  off;<br />
        }<br />
    }</p>
<p># 包含其它虚拟主机的配置<br />
    include  conf/vhosts/*.conf;<br />
}<br />
</coolcode></p>
<p>vi fcgi.conf<br />
<coolcode lang="c"><br />
fastcgi_pass  127.0.0.1:10080;</p>
<p>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 --enable-force-cgi-redirect<br />
fastcgi_param  REDIRECT_STATUS    200;<br />
</coolcode></p>
<p>再来配置 Discuz! 论坛和 SupeSite/X-Space 的虚拟主机<br />
vi vhosts/main.conf<br />
<coolcode lang="c"><br />
    server {<br />
    listen       80;<br />
# 分论坛可使用子域名<br />
    server_name  bbs.domain.com *.bbs.domain.com;<br />
    index  index.php;<br />
    root  /home/www/bbs;<br />
# 和 Apache Rewrite 规则很相似<br />
    rewrite  ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1;<br />
    rewrite  ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&#038;page=$2;<br />
    rewrite  ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&#038;extra=page\%3D$3&#038;page=$2;<br />
    rewrite  ^/space-(username|uid)-(.+)\.html$ /space.php?action=viewpro&#038;$1=$2;<br />
    rewrite  ^/tag-(.+)\.html$ /tag.php?name=$1;<br />
        location ~ .*\.php?$ {<br />
            include  conf/fcgi.conf;<br />
        }<br />
        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {<br />
            access_log  off;<br />
        }<br />
    }</p>
<p>    server {<br />
    listen       80;<br />
    server_name  blog.domain.com;<br />
    index  index.php;<br />
    root  /home/www/blog;<br />
    rewrite  ^([0-9]+)/spacelist(.*)$ index.php?$1/action_spacelist$2;<br />
    rewrite  ^([0-9]+)/viewspace_(.+)$ index.php?$1/action_viewspace_itemid_$2;<br />
    rewrite  ^([0-9]+)/viewbbs_(.+)$ index.php?$1/action_viewbbs_tid_$2;<br />
    rewrite  ^([0-9]+)/(.*)$ index.php?$1/$2;<br />
    rewrite  ^([0-9]+)$ index.php?$1;<br />
    rewrite  ^action_(.+)$ index.php?action_$1;<br />
    rewrite  ^category_(.+)$ index.php?action_category_catid_$1;<br />
    rewrite  ^itemlist_(.+)$ index.php?action_itemlist_catid_$1;<br />
    rewrite  ^viewnews_(.+)$ index.php?action_viewnews_itemid_$1;<br />
    rewrite  ^viewthread_(.+)$ index.php?action_viewthread_tid_$1;<br />
    rewrite  ^index([\.a-zA-Z0-9]*)$ index.php;<br />
    rewrite  ^html/([0-9]+)/viewnews_itemid_([0-9]+)\.html$ index.php?action_viewnews_itemid_$2;</p>
<p>    rewrite  ^/([0-9]+)/spacelist(.+)$ /index.php?uid/$1/action/spacelist/type$2;<br />
    rewrite  ^/([0-9]+)/viewspace(.+)$ /index.php?uid/$1/action/viewspace/itemid$2;<br />
    rewrite  ^/([0-9]+)/viewbbs(.+)$ /index.php?uid/$1/action/viewbbs/tid$2;<br />
    rewrite  ^/([0-9]+)/(.*)$ /index.php?uid/$1/$2;<br />
    rewrite  ^/([0-9]+)$ /index.php?uid/$1;</p>
<p>    rewrite  ^/action(.+)$ /index.php?action$1;<br />
    rewrite  ^/category(.+)$ /index.php?action/category/catid$1;<br />
    rewrite  ^/viewnews(.+)$ /index.php?action/viewnews/itemid$1;<br />
    rewrite  ^/viewthread(.+)$ /index.php?action/viewthread/tid$1;<br />
    rewrite  ^/mygroup(.+)$ /index.php?action/mygroup/gid$1;<br />
# 归档目录的默认首页设置<br />
        location /archiver/ {<br />
            index index.html;<br />
        }<br />
        location ~ .*\.php?$ {<br />
            include  conf/fcgi.conf;<br />
        }<br />
        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {<br />
            access_log  off;<br />
        }<br />
    }<br />
</coolcode></p>
<p>用 tmpfs 提升性能<br />
mkdir /tmpfs<br />
在 /etc/fstab 中加入<br />
tmpfs                   /tmpfs              tmpfs   size=256m,mode=1777        0 0</p>
<p>mount -a</p>
<p>创建相关目录<br />
vi /usr/local/sbin/mkdir.sh<br />
<coolcode lang="cpp" linenum="off"><br />
#/bin/sh</p>
<p>mkdir /tmpfs/nginx<br />
chown -R nobody:nobody /tmpfs/nginx<br />
chmod -R 1777 /tmpfs/nginx</p>
<p>mkdir /tmpfs/eaccelerator<br />
chown -R nobody:nobody /tmpfs/eaccelerator<br />
chmod -R 1777 /tmpfs/eaccelerator</p>
<p>I="0 1 2 3 4 5 6 7 8 9 a b c d e f"<br />
for acm in $I;<br />
do<br />
for x in $I;<br />
do<br />
mkdir -p /tmpfs/phpsession/$acm/$x;<br />
done;<br />
done<br />
chown -R nobody:nobody /tmpfs/phpsession<br />
chmod -R 1777 /tmpfs/phpsession<br />
</coolcode></p>
<p>chmod +x /usr/local/sbin/mkdir.sh<br />
mkdir.sh</p>
<p>启动 PHP 和 Nginx<br />
/usr/local/php-fcgi/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 32 -u nobody -g nobody -f /usr/local/php-fcgi/bin/php<br />
监听在 127.0.0.1 的 10080 端口并开启 32 个进程，使用和 Nginx 一样的 nobody 用户。（PHP5 的执行程序是 php-cgi）<br />
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf<br />
重启 PHP 进程可以先 killall php 再启动。<br />
重启 Nginx<br />
kill -HUP `cat /var/run/nginx.pid`</p>
<p>清除超过一小时没有被访问到的 eAccelerator 缓存文件和创建时间超过一小时的 php session 文件，防止占满空间。<br />
vi /etc/crontab<br />
0 * * * * root find /tmpfs/eaccelerator -type f -amin +60 -exec rm {} \;<br />
0 * * * * root find /tmpfs/phpsession -type f -cmin +60 -exec rm {} \;</p>
<p>配置开机自启动<br />
vi /etc/rc.local<br />
/usr/local/sbin/mkdir.sh<br />
/usr/local/php-fcgi/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 32 -u nobody -g nobody -f /usr/local/php-fcgi/bin/php<br />
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf</p>
<p>方便重启 Nginx<br />
vi ~/.bashrc<br />
alias nginx='kill -HUP `cat /var/run/nginx.pid`'</p>
<p>source ~/.bashrc</p>
]]></content:encoded>
			<wfw:commentRss>http://bluedata.org/2008/04/18/nginx-php-fastcgi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
