我已经实现了一个使用lighttp Web服务器和fcgi(c脚本)的程序。
而且我已经搜索了很多次,但是找不到任何页面指南来执行此操作。只需设置lighttpd和python fcgi或php fcgi ...但是C fcgi。
谁能帮助我配置lighttpd和c fcgi?
非常感谢。
我编写了一个示例,如下所示,并将其构建为可执行文件。但是现在我不知道如何在lighttpd Web服务器上运行它。
#include "fcgi_stdio.h"
#include <stdlib.h>
#include <stdio.h>
int count;
using namespace std;
void initialize(void)
{
count=0;
}
int main(void)
{
/* Initialization. */
initialize();
/* Response loop. */
while (FCGI_Accept() >= 0) {
printf("Content-type: text/html\r\n"
"\r\n"
"<title>FastCGI Hello! (C, fcgi_stdio library)</title>"
"<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
"Request number %d running on host <i>%s</i>\n",
++count, getenv("SERVER_HOSTNAME"));
}
return 0;
}
最佳答案
默认情况下,lighthttp仅允许在目录“cgi-bin”中执行cgi脚本。
因此,只需将您的cgi程序放在'/ cgi-bin'中,它就可以在默认配置下工作。
这是C语言中的cgi的示例
#include <stdio.h>
int main(void)
{
printf("Content-type: text/plain\n\n");
puts("Hello from cgi-bin!...");
return 0;
}
编译
cc 1.c -o 1
测试
wget localhost:82/cgi-bin/1
--2014-03-20 16:27:36-- http://localhost:82/cgi-bin/1
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:82... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: `1'
[ <=> ] 21 --.-K/s in 0s
2014-03-20 16:27:37 (1.08 MB/s) - `1' saved [21]
cat 1
hello from C cgi!...
更新了
默认情况下,您在此处放置了cgi的配置文件:
/etc/lighttpd/conf-available/10-cgi.conf
您必须创建一个symlinc并重新启动lighthttpd
sudo ln -s /etc/lighttpd/conf-available/10-cgi.conf /etc/lighttpd/conf-enabled/10-cgi.conf
这是cgi配置文件中必须包含的内容
cat /etc/lighttpd/conf-available/10-cgi.conf
server.modules += ( "mod_cgi" )
$HTTP["url"] =~ "^/cgi-bin/" {
cgi.assign = ( "" => "" )
}
关于c++ - 如何为C脚本配置lighttpd和fcgi?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22535837/