Nginx + FastCgi + Spawn-fcgi + c 的架構(gòu)嘗試

Nginx + FastCgi + Spawn-fcgi + c 的架構(gòu)嘗試

Php寫的很有段時(shí)間了,最近看公司一些關(guān)鍵的后端CGI都是用C寫的,以lighthttp 最為server 。忽然也有種學(xué)習(xí)用C寫CGI的想法。雖然php結(jié)合php-fpm的fastcgi模式也有不錯(cuò)的性能,反正多學(xué)一種東西又有和不可以呢?何況,某些情況下C的性能還是php無法比擬的。

先有必要有這樣第一個(gè)認(rèn)識:ngxin作為一個(gè)webserver,本身并不包含CGI的解釋器,需要通過一個(gè)中間件【例如php-fpm】來運(yùn)行CGI。他們之間的模式大致是:

nginx?? <--?? socket ? -->?? php-fpm-------->php

那么nginx既然要運(yùn)行c寫的CGI那么也應(yīng)該有類似php-fpm的東西。baidu, google了下,發(fā)現(xiàn)有一個(gè)spawn-fcgi的東西。原本是lighttp 內(nèi)的fastcgi進(jìn)程管理器。 于是又搜索了下,折騰了一個(gè)下午,終于拋出了經(jīng)典的hello world !!!?? 。下面是具體步驟:

大致分為5步:

1、安裝Spawn-fcgi??? 【啟動cgi的時(shí)候需要】

wget?? http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz

tar zxvf? lighttpd-1.4.19.tar.gz

cd? lighttpd-1.4.19

./configure

make

復(fù)制 編譯好的spawn-fcgi到 nginx目錄,很主要?。。?!

cp ./src/spawn-fcgi /usr/local/nginx/sbin/

2、安裝fastcgi庫:: 【提供編寫cgi時(shí)的類庫】

wget? http://www.fastcgi.com/dist/fcgi.tar.gz

tar zxvf? fcgi.tar.gz

cd? fcgi

./configure

make

make install

3、測試代碼::

#include

int main( int argc, char *argv[] )

{

while( FCGI_Accept() >= 0 )

{

FCGI_printf( "Status: 200 OK\r\n" );

FCGI_printf( "Content-Type: text/html\r\n\r\n" );

FCGI_printf( "Hello world in C\n" );

}

return 0;

}

編譯::

g++ -o test.cgi test.cpp -L /usr/local/lib/ -lfcgi

4、啟動Spawn-fcgi::

spawn-fcgi? -a 127.0.0.1 -p 7000 -u www? -f?? /data/cgi-bin/test.cgi

如果報(bào):error while loading shared libraries: libfcgi.so.0: cannot open shared object file: No such file or directory

請執(zhí)行如下命令:為了這個(gè)錯(cuò)誤,折騰了很長時(shí)間哦!

cp /usr/local/lib/libfcgi.so.0?? /usr/lib

5、配置nginx.conf

location ~ \.cgi$

{

fastcgi_pass? 127.0.0.1:7000;

fastcgi_index index.cgi;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

}

重啟nginx

service nginx restart

我的系統(tǒng)是ubuntu server版。 具體要依情況而定。

收工!?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容