Nginx + FastCgi + Spawn-fcgi + C 架構的server環境搭建
阿新 • • 發佈:2017-05-13
text -c one install usr world abs for 中間件
2.FastCGI開發庫安裝 2.1 安裝fastcgi庫 下載://www.fastcgi.com/dist/fcgi.tar.gz ./configure
make
make install(須要root權限)
2.2 演示樣例程序
Makefile編譯:
nginx <-- socket --> php-fpm-------->php
那麽nginx既然要執行c寫的CGI那麽也應該有類似php-fpm的東西。
復制 編譯好的spawn-fcgi到 nginx文件夾(須要root權限)。非常主要!!。。
最後在瀏覽器中輸入 http://192.168.1.120:9990/1.cgi 192.168.1.120是我虛擬機的地址
1.Nginx
1.1.安裝
- Nginx 的中文維基 http://wiki.codemongers.com/NginxChs 下載 Nginx 0.6.26(開發版)(請下載最新版本號)
- tar zxvf nginx-0.6.26.tar.gz
- ./configure。註意了類似checking for *** ... not found項,可能是依賴包沒有。則須要安裝依賴包
- 缺少PCRE,yum install pcre安裝。
或者去:http://www.pcre.org/
- 假設缺少OpenSSL,yum install libssl-dev,或者去:http://www.openssl.org
- 假設缺少zlib,能夠yum install zlib1g,或者http://www.zlib.net/
- make & make install
- 建議安裝在/usr/local/nginx下
1.2 啟動
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf2.FastCGI開發庫安裝 2.1 安裝fastcgi庫 下載://www.fastcgi.com/dist/fcgi.tar.gz ./configure
make
make install(須要root權限)
2.2 演示樣例程序
#include <fcgi_stdio.h> 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 +++++++\n" ); } return 0; }
Makefile編譯:
TARGET = 1.cgi INSTALL_PATH = . LIBDIRS = -L/usr/local/lib LIBS += -lfcgi CC = gcc CXX = g++ CXXFLAGES += -Wall -O2 LDFLAGS = -Wl,-R /usr/local/lib RM = rm -f CP = cp -f SOURCES += first-cgi.cpp OBJECTS = $(SOURCES:.cpp=.o) .PHONY : all clean all:$(TARGET) $(TARGET):$(OBJECTS) $(CXX) -o $(TARGET) $(OBJECTS) $(LDFLAGS) $(LIBDIRS) $(LIBS) $(OBJECTS):%.o:%.cpp $(CXX) -c $(CXXFLAGES) $(INCLUDES) $< -o $@ clean: -$(RM) $(TARGET) $(OBJECTS)
3.spawn-fcgi
先有必要有這樣第一個認識:ngxin作為一個webserver,本身並不包括CGI的解釋器。須要通過一個中間件【比如php-fpm】來執行CGI。他們之間的模式大致是:nginx <-- socket --> php-fpm-------->php
那麽nginx既然要執行c寫的CGI那麽也應該有類似php-fpm的東西。
baidu, google了下。發現有一個spawn-fcgi的東西。原本是lighttp 內的fastcgi進程管理器
3.1 安裝 spawn-fcgi
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
復制 編譯好的spawn-fcgi到 nginx文件夾(須要root權限)。非常主要!!。。
cp ./src/spawn-fcgi /usr/local/nginx/sbin/
3.2 啟動spawn-fcgi
#!/bin/bash DESTDIR=. HOST=‘127.0.0.1‘ PORT=‘7000‘ PROCESSNAME=‘1.cgi‘ sudo killall -9 $PROCESSNAME echo "=====killed=====" RESTART="sudo /usr/local/nginx/sbin/spawn-fcgi -a $HOST -p $PORT -f $DESTDIR/$PROCESSNAME -F 1" echo $RESTART $RESTART echo "======done======" ps -ef | grep $PROCESSNAME?
4.配置nginx.conf
server { listen 9990; server_name localhost; #access_log logs/host.access.log main; location / { rewrite ^/(.*)$ localhost; root html; index index.html index.htm; } location ~ (.*) { fastcgi_pass 127.0.0.1:7000; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
最後在瀏覽器中輸入 http://192.168.1.120:9990/1.cgi 192.168.1.120是我虛擬機的地址
Nginx + FastCgi + Spawn-fcgi + C 架構的server環境搭建