运行 使用 FastCGI 和 NGINX 的 C 代码

Running C code using FastCGI & NGINX

我正在尝试 运行 使用 FastCGI 和 NGINX 编写 C 代码。现在,在完成本网站中的所有步骤后:http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/

我正处于准备生成fcgi的步骤。但是,我必须使用的系统是 32 位系统,不支持 sudo apt-get install 等命令。我尝试从我的 64 位系统复制 spawn-fcgi 二进制文件并尝试像这样使用它: ./spawn-fcgi -p 8000 -n hello_world 命令但它给我一个错误,说它无法执行二进制文件(我假设这是因为我尝试使用它时肯定是在 32 位系统上)。事实上,当我执行 file spawn-fcgi 时,它告诉我它是一个 64 位 LSB 可执行文件,而我 运行 在 32 位系统上运行它,这就是为什么 "Cannot execute binary file"那里有错误。

我想知道的是,我是否可以 运行 使用 FASTCGI 的 C 脚本而不调用 spawn-fcgicgi-fcgi 或者如果有的话我可以使用某种方式以 32 位获取这些二进制文件。我尝试在线搜索 FASTCGI 的 32 位下载,但似乎 fastcgi.com 已损坏,因为我无法访问该网站。

如果我遗漏了任何重要信息,请告诉我,我很乐意提供。谢谢!

通过使用 <fcgiapp.h> header 提供的 API,您可以指定插槽详细信息,spawning 通过外部方式为你.

您可以获得这样的 TCP 套接字文件描述符:

int sockfd = FCGX_OpenSocket("127.0.0.1:9000", 100);

...或使用 Unix 套接字:

int sockfd = FCGX_OpenSocket("/var/run/fcgi.sock", 100);

使用套接字,您可以:

FCGX_Request req;
FCGX_InitRequest(&req, sockfd, 0);

while (FCGX_Accept_r(&req) >= 0) {
    FCGX_FPrintF(req.out, "Content-Type: text/html\n\n");
    FCGX_FPrintF(req.out, "hello world");
    FCGX_Finish_r(&req);
}

编译后,您可以直接执行二进制文件而无需使用spawn-fcgicgi-fcgi