运行 使用 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-fcgi
或 cgi-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-fcgi
或cgi-fcgi
。
我正在尝试 运行 使用 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-fcgi
或 cgi-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-fcgi
或cgi-fcgi
。