获取spawn-fcgi编译安装包, 在 http://redmine.lighttpd.net/projects/spawn-fcgi/wiki 上可
以获取当 前最新的版本。
tar -zxvf spawn-fcgi-x.x.x.tar.gz
cd spawn-fcgi-x.x.x.tar.gz
./configure。
make
sudo make install
如果遇到 以下错误:
如果遇到 以下错误:
. /autogen. sh: x: autoreconf: not found
因为没有安装automake 工具, ubuntu用 下面的命令安装好就可以了
sudo apt-get install autoconf automake libtool
spawn-fcgi的帮 助信息可以通过man spawn-fcgi或spawn-fcgi –h获得, 下面是部分常用
spawn-fcgi参数信息:
f 指定调用 FastCGI的进程的执行程序位置
- a 绑定到 地址addr。
- p 绑定到 端口 port。
- s 绑定到 unix domain socket
- C 指定产 生的FastCGI的进程数, 默认为 5。 ( 仅用 于PHP)
- P 指定产 生的进程的PID文件路径。
- F 指定产 生的FastCGI的进程数( C的CGI用 这个)
- u和- g FastCGI使用 什么 身 份( - u 用 户 - g 用 户 组) 运行,
CentOS下可以使用 apache用 户 , 其他的根据情况配置, 如nobody、 www- data等。
使用 C/C++编写 fastcgi应 用 程序, 可以使用 FastCGI软件开发套件或者其它开发框架, 如
fastcgi++。
本文使用 FastCGI软件开发套件——fcgi
http://www.filewatcher.com/d/Gentoo/distfiles/Other/fcgi-2.4.1 -SNAP-
091 0052249.tar.gz.61 4929.html
通过此套件可以轻松编写 fastcgi应 用 程序, 安装fcgi:
. /configue
make
如果编译出 现类似以下错误:
6.3 Nginx与FastCGI
94
cgio. cpp: In destructor ’ virtual fcgi_streambuf: : ~fcgi_streambuf( ) ’ :
fcgio. cpp: 50: error: ’ EOF’ was not declared in this scope
fcgio. cpp: In member function ’ virtual int fcgi_streambuf: : overflow( int) ’ :
fcgio. cpp: 70: error: ’ EOF’ was not declared in this scope
fcgio. cpp: 75: error: ’ EOF’ was not declared in this scope
fcgio. cpp: In member function ’ virtual int fcgi_streambuf: : sync( ) ’ :
fcgio. cpp: 86: error: ’ EOF’ was not declared in this scope
fcgio. cpp: 87: error: ’ EOF’ was not declared in this scope
fcgio. cpp: In member function ’ virtual int fcgi_streambuf: : underflow( ) ’ :
fcgio. cpp: 113: error: ’ EOF’ was not declared in this scope
make[2] : * [fcgio. lo] Error 1
make[2] : Leaving directory /root/downloads/fcgi- 2. 4. 1- SNAP- 0910052249/libfcgi'
/root/downloads/fcgi- 2. 4. 1- SNAP- 0910052249’
make[1] : *** [all- recursive] Error 1
make[1] : Leaving directory
make: * [all] Error 2
解决办法:
cd include
sudo vi fcgio.h
头文件添加
#include
再次运行
make
sudo make install
fcgi_demo.c
#include
#include
#include
#include
#include "fcgi_stdio. h"
int main( int argc, char *argv[] )
{
int count = 0;
while ( FCGI_Accept( ) >= 0) {
printf( "Content- type: text/html\r\n") ;
printf( "\r\n") ;
printf( "Fast CGI Hello! ") ;
printf( "Fast CGI Hello!
") ;
printf( "Request number %d running on host %s\n", ++count, getenv( "SERVE
R_NAME") ) ;
}
return 0;
}
*编译:
gcc fcgi_demo.c -o demo -lfcgi
打开浏览器
192.168.21.128
cd usr/local/nginx/conf
sudo vi nginx.conf
把下面代码复制到
nginx.conf文件里
location /demo {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index demo.cgi;
include fastcgi.conf;
}
location = /upload.cgi{
root html;
index upload.html;
}
location = /upload/UploadAction{
fastcgi_pass 127.0.0.1:9002;
fastcgi_index echo.cgi;
include fastcgi.conf;
}
将zyfile.tar.gz复制到
/usr/local/nginx/html
解压
tar -zxvf zyfile.tar.gz
cd zyfile.tar.gz
./configure
make
sudo make install
然后将demo.html改名为upload.html
sudo mv demo.html upload.html
并把所有文件包括文件夹移动到
/usr/local/nginx/html目录下
sudo mv * /usr/local/nginx/html
会根据配置好的文件,去/usr/local/nginx/html目录下寻找zy工具。如果目录下没有移动过来的文件,则会出现404错误。
依次运行
spawn-fcgi -a 127.0.0.1 -p 9001 -f ./test/echo
spawn-fcgi -a 127.0.0.1 -p 9002 -f ./test/echo
出现两次PID= xxxxx则成功
重启nginx
sudo /usr/local/nginx/sbin/ -s reload
打开浏览器,输入ip地址192.168.21.128/upload.html
出现上传界面
选择文件,上传成功!
进入git
make clean
make
依次运行
spawn-fcgi -a 127.0.0.1 -p 9001 -f ./test/echo
spawn-fcgi -a 127.0.0.1 -p 9002 -f ./test/echo
出现两次PID= xxxxx则成功
重启nginx
sudo /usr/local/nginx/sbin/ -s reload