<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践Ok]通过spawn-fcgi管理命令行直接启动PHP的fastCGI程序，fastCGI加入监控拉起功能备案。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Fri, 05 Jul 2013 07:49:21 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：Apache结合spawn-fcgi使用FastCGI的实践，和PHP启动fastCGI一个原理。<br/>关于PHP的相关情况参考：使用spawn-fcgi管理运行php-cgi&nbsp;&nbsp;Url： http://www.libaqiang.com/?p=78193<br/><br/>spawn-fcgi和nginx自带的fastcgi相比 有什么优势？<br/>为什么在用nginx的时候还要装spawn-fcgi，nginx不是自带有这个模块吗？ <br/>nginx的fastcgi_pass模块是用于代理fcgi协议的后端。spawn-fcgi用于管理支持fcgi协议的进程，属于process manager这类，免于重造轮子。<br/>对于PHP，推荐php-fpm，比spawn多了不少专门针对php的功能，例如slow_request等。 <br/>http://www.zhihu.com/question/19689162<br/><br/><br/>一）这个用spawn-fcgi 来管理FastCGI 以达到优化Apache 下PHP性能的方法比较另类，大家权当一种参考。<br/><br/>方法：系统平台是CentOS 5，前提是LAMP已配置好，运行正常。<br/><br/>1. wget -c http://www.21andy.com/centos/5/i386/spawn-fcgi-1.6.3-1.el5.i386.rpm（也可以去官方下载源码包编译安装：http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz）<br/>2. rpm -ivh spawn-fcgi-1.6.3-1.el5.i386.rpm<br/>3. 使用spawn-fcgi来控制php-cgi的FastCGI进程：<br/>/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u apache -g apache -f /usr/bin/php-cgi<br/><br/>参数含义如下：<br/>-f &lt;fcgiapp&gt; 指定调用FastCGI的进程的执行程序位置，根据系统上所装的PHP的情况具体设置。<br/>-a &lt;addr&gt; 绑定到地址addr。<br/>-p &lt;port&gt; 绑定到端口port。<br/>-s &lt;path&gt; 绑定到unix socket的路径path。<br/>-C &lt;childs&gt; 指定产生的FastCGI的进程数，默认为5。（仅用于PHP）<br/>-P &lt;path&gt; 指定产生的进程的PID文件路径。<br/>-u和-g FastCGI使用什么身份（-u 用户 -g 用户组）运行，CentOS下可以使用apache用户，其他的根据情况配置，如nobody、www-data等。<br/>4. 将这行代码加入到/etc/rc.local文件底部，这样系统启动的时候就可以同时启动PHP的FastCGI进程。<br/><br/><br/>实践内容：<br/>实践来源：http://www.phpabc.cn/apachejie-he-spawn-fcgishi-yong-fastcgi.html<br/>(1)通过spawn-fcgi来启动php进程<br/>/usr/local/webserver/fastcgi/spawn-fcgi/bin/spawn-fcgi&nbsp;&nbsp;-a 127.0.0.1 -p 9000 -C 5 -u apache -g www -f /usr/local/webserver/php/bin/php-cgi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>spawn-fcgi: child spawned successfully: PID: 7551<br/><br/>ps aux&#124;grep php<br/>apache&nbsp;&nbsp;&nbsp;&nbsp;7551 16.7&nbsp;&nbsp;1.6&nbsp;&nbsp;43396&nbsp;&nbsp;6016 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ssl&nbsp;&nbsp;15:14&nbsp;&nbsp; 0:01 /usr/local/webserver/php/bin/php-cgi<br/><br/>cd lighttpd_fastCGI_Codes/<br/>./configure &amp;&amp; make &amp;&amp; make install<br/>/usr/bin/install -c spawn-fcgi &#039;/usr/local/bin&#039;<br/>启动PHP：<br/>/usr/local/bin/spawn-fcgi&nbsp;&nbsp;-a 127.0.0.1 -p 9000 -C 5 -u apache -g www -f /usr/local/webserver/php/bin/php-cgi<br/>root@192.168.137.128:~/software/lighttpd_fastCGI_Codes# ps aux&#124;grep php&nbsp;&nbsp;//共5个<br/>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9754&nbsp;&nbsp;4.0&nbsp;&nbsp;2.4&nbsp;&nbsp;45112&nbsp;&nbsp;8588 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ss&nbsp;&nbsp; 15:50&nbsp;&nbsp; 0:00 /usr/local/webserver/php/bin/php-cgi<br/>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9756&nbsp;&nbsp;0.0&nbsp;&nbsp;1.1&nbsp;&nbsp;45112&nbsp;&nbsp;3988 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;15:50&nbsp;&nbsp; 0:00 /usr/local/webserver/php/bin/php-cgi<br/>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9757&nbsp;&nbsp;0.0&nbsp;&nbsp;1.1&nbsp;&nbsp;45112&nbsp;&nbsp;3988 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;15:50&nbsp;&nbsp; 0:00 /usr/local/webserver/php/bin/php-cgi<br/><br/>(2)要是自己编写一个fastcgi呢？简单如下操作（这儿好像不能像PHP一样有多个进程：fastcgi 多进程这部分，我还没研究到。可以有空再看看）：<br/>代码编写：<br/>vi hello.c<br/><textarea name="code" class="php" rows="15" cols="100">
#include &lt;fcgi_stdio.h&gt;
int main(void)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;while( FCGI_Accept() &gt;= 0)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf( &quot;Content-Type: text/html&#92;r&#92;n&quot; );
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&#92;r&#92;n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf( &quot;Hello world in C&#92;n&quot; );
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125;
</textarea><br/><br/>编译：<br/>gcc -o hello.fcgi hello.c -L /usr/local/webserver/fastcgi/fcgi/lib -lfcgi<br/>/usr/local/webserver/fastcgi/spawn-fcgi/bin/spawn-fcgi&nbsp;&nbsp;-a 127.0.0.1 -p 9000 -C 5 -u apache -g www -f ./hello.fcgi<br/><br/>启动成功没：<br/>root@192.168.137.128:/usr/local/test# ps aux&#124;grep hello<br/>apache&nbsp;&nbsp; 10485&nbsp;&nbsp;0.0&nbsp;&nbsp;0.1&nbsp;&nbsp; 2140&nbsp;&nbsp; 416 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ss&nbsp;&nbsp; 16:31&nbsp;&nbsp; 0:00 ./hello.fcgi<br/><br/>至于后面的ngnx配置，无非两种：<br/>一个是直接连sock，另一个是开9002端口两者对比效率上哪个高一点儿呢？<br/>一般来说本地的 unix sock要快一些。<br/><br/><br/>参考Url：<br/>http://blog.csdn.net/qzier_go/article/details/7340868<br/>http://terry831010.blog.163.com/blog/static/6916117120126185428827/<br/><br/>二）spawn-fcgi与fcgi的运行机制分析 ：在此基础上实现了守护监控功能<br/>http://blog.csdn.net/cleanfield/article/details/6412723<br/><br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践Ok]通过spawn-fcgi管理命令行直接启动PHP的fastCGI程序，fastCGI加入监控拉起功能备案。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>