[交流分享] FastCGI 2.4.1移植指南_for_centos_7.6

 

1 简介

FastCGI 实际上是增加了一些扩展功能的 CGI 、是 CGI 的改进,描述了客户端和Web服务器程序之间传输数据的一种标准。

源码包可于http://www.fastcgi.com/下载

文档编写时该官网一直处于无法访问的状态,源码包由GitHub获取

如要使用FastCGI 2.4.1版本,可以根据此文档编译。

CentOS 7.6下编译需要用到如下组件:

GCC 4.8.5或更高版本


2 依赖

根据编译提示安装依赖

暂无

  

3 编译安装

1) 从github网站下载源码并解压

wget https://github.com/odis-project/fastcgi/tree/master/2.4.1/src


2) 进入目录

cd src

3) configure

./configure –build=arm-linux

4) 编译安装,依次执行如下命令

make 

make install

5) 执行cgi-fcgi -h, 如果出现下提示表明fastcgi就安装成功了。

[root@localhost ~]# cgi-fcgi -h

Unknown option -h

Missing application pathname

Missing -connect <connName>

Usage:

cgi-fcgi -f <cmdPath> , or

cgi-fcgi -connect <connName> <appPath> [<nServers>] , or

cgi-fcgi -start -connect <connName> <appPath> [<nServers>] , or

cgi-fcgi -bind -connect <connName> ,

where <connName> is either the pathname of a UNIX domain socket

or (if -bind is given) a hostName:portNumber specification

or (if -start is given) a :portNumber specification (uses local host).



4 参考信息

    更多关于FastCGI信息,请参考官网http://www.fastcgi.com/


5 问题处理方法

5.1问题一

问题现象:执行make出现如下错误

fcgio.cpp: In destructor 'virtual fcgi_streambuf::~fcgi_streambuf()':

fcgio.cpp:50:14: error: 'EOF' was not declared in this scope

     overflow(EOF);

              ^

fcgio.cpp: In member function 'virtual int fcgi_streambuf::overflow(int)':

fcgio.cpp:70:72: error: 'EOF' was not declared in this scope

             if (FCGX_PutStr(pbase(), plen, this->fcgx) != plen) return EOF;

                                                                        ^

fcgio.cpp:75:14: error: 'EOF' was not declared in this scope

     if (c != EOF) 

              ^

fcgio.cpp: In member function 'virtual int fcgi_streambuf::sync()':

fcgio.cpp:86:18: error: 'EOF' was not declared in this scope

     if (overflow(EOF)) return EOF;

                  ^

fcgio.cpp:87:41: error: 'EOF' was not declared in this scope

     if (FCGX_FFlush(this->fcgx)) return EOF;

                                         ^

fcgio.cpp: In member function 'virtual int fcgi_streambuf::underflow()':

fcgio.cpp:113:35: error: 'EOF' was not declared in this scope

             if (glen <= 0) return EOF;

处理方式 :

在include/fcgio.h文件中加上 #include < cstdio>,或者

在include/fcgio.h文件中加上 #include < stdio.h>,

然后再编译安装就通过了。