最近尝试用ngnix+fastcgi+c开发webservse。记录下学习的过程。
要安装的程序及配置
- nginx
sudo apt-get install nginx-full
配置文件/etc/nginx/conf/nginx.conf:
...
server {
listen 8089;
server_name hello;
location /do {
root /home/www;
index index.cgi;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
}
...
- spawn-fcgi
sudo apt-get install spawn-fcgi
- fcgi2.4.0
wget http://www.fastcgi.com/dist/fcgi.tar.gz
tar -zxvf fcgi.tar.gz
cd fcgi-2.4.0
./configure
make
sudo make install
c fastcgi demo
特别注意在高并发下 spawn-fcgi 会有一个no response hangs的bug参考资料在php开发时用cgi的一个最大连接限制避免这个bug,
,本人尝试使用nginx的unix domain socket来避免这个bug(也可尝试在fcgi库中配置最大cgi连接),分布部署时nginx只能和cgi部署于同一台机器,再用另一台nginx做端口映射和负载均衡。
具体配置如下
ngnix.conf:
#fastcgi_pass 127.0.0.1:9000;
fast_psss unix:/home/www/fastcgi.sock
spawn-fcgi启动参数
spawn-fcgi -a 127.0.0.1 -s /home/www/fcgi.sock -u www-data -g www-data -F 8 ./helloCGI
参数-u
,-g
是用户和组与nginx相同 具体参看nginx.org和spawn-fcgi --help