编译安装spawn-fcgi
spawn-fcgi源码包下载地址:http://redmine.lighttpd.net/projects/spawn-fcgi/wiki
编译和安装spawn-fcgi相关命令:
tar -zxvf spawn-fcgi-1.6.4.tar.gz cd spawn-fcgi-1.6.4/ ./configure make sudo make install
如果遇到以下错误:
./autogen.sh: x: autoreconf: not found • 1
因为没有安装automake工具,ubuntu用下面的命令安装即可:
sudo apt-get install autoconf automake libtool
spawn-fcgi的帮助信息可以通过man spawn-fcgi或spawn-fcgi -h获得,下面是部分常用
spawn-fcgi参数信息:
编译安装fcgi
软件开发套件:fcgi
使用C/C++编写FastCGI应用程序,可以使用FastCGI软件开发套件或者其它开发框架,如fcgi。
fcgi源码包下载地址:http://www.filewatcher.com/d/Gentoo/distfiles/Other/fcgi-2.4.1-SNAP - 0910052249.tar.gz.614929.html
编译和安装fcgi相关命令:
tar -zxvf fcgi-2.4.1-SNAP-0910052249.tar.gz cd fcgi-2.4.1-SNAP-0910052249/ ./configure make sudo make install
测试检查是否成功
测试程序源代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include "fcgi_stdio.h" int main(int argc, char *argv[]) { int count = 0; //阻塞等待并监听某个端口,等待Nginx将数据发过来 while (FCGI_Accept() >= 0) { //如果想得到数据,需要从stdin去读,实际上从Nginx上去读 //如果想上传数据,需要往stdout写,实际上是给Nginx写数据 printf("Content-type: text/html\r\n"); printf("\r\n"); printf("<title>Fast CGI Hello!</title>"); printf("<h1>Fast CGI Hello!</h1>"); //SERVER_NAME:得到server的host名称 printf("Request number %d running on host <i>%s</i>\n", ++count, getenv("SERVER_NAME")); } return 0; }
需进行的有关Nginx的fcgi的配置
目录在sudo vi /usr/local/nginx/conf/nginx.conf
#监听用户的test请求,通过fastcgi_pass交给本地8001端口处理 #此时spwan-cgi已经将8001端口交给之前我们写好的test进程处理 location /test { fastcgi_pass 127.0.0.1:8001; fastcgi_index test; include fastcgi.conf; }
修改配置之后记得重新启动Nginx服务
sudo nginx -s reload • 1
编译运行代码:
编译:gcc fcgi_test.c -lfcgi -o test 运行:spawn-fcgi -a 127.0.0.1 -p 8001 -f ./test
报错处理:spawn-fcgi:child exited with: 127
请看下文解决方案:
https://blog.csdn.net/weixin_45525272/article/details/107822305
解决错误之后再编译运行,出现子进程的PID即配置成功。