几天以来,我一直在尝试在 Kubuntu 服务器上使用 apache 设置 fastcgi。尽管到处搜索,但我无法让它工作。如果我尝试使用 cgi 应用程序运行该站点,则 apache 挂起,超时后返回 500 错误。
这是我所做的:
我确保安装并启用了 mod_fastcgi:
# pwd /etc/apache2/mods-enabled # ls -l f* lrwxrwxrwx 1 root root 30 2010-07-22 10:01 fastcgi.conf -> ../mods-available/fastcgi.conf lrwxrwxrwx 1 root root 30 2010-07-22 10:01 fastcgi.load -> ../mods-available/fastcgi.load
据我所知,fastcgi.conf 配置正确:
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi #FastCgiWrapper /usr/lib/apache2/suexec FastCgiIpcDir /var/lib/apache2/fastcgi </IfModule>
我正在使用这个非常简单的示例脚本来测试设置:
#include <iostream> using namespace std; int main() { cout<<"Content-type: text/plain"<<endl<<endl; cout<<"Hello World!"<<endl; return 0; }
- 我编译它。它可以从命令行正常工作。
- 我将它放在从 Web 服务器可见的文件夹中:http: //127.0.0.1/fcgitest/run.fcgi
- 起初我得到:“禁止。您无权访问此服务器上的 /fcgitest/run.fcgi。”。
我在文件夹中添加一个
.htaccess
文件:Options +ExecCGI -Indexes
- 现在,当我尝试从我的网络浏览器访问脚本地址时,我得到了我在开始时描述的症状:浏览器首先挂起,超时后,我收到 500 Internal Server Error。
apache error.log 说:
Content-type: text/plain Hello World! [Sat Aug 28 09:08:23 2010] [warn] FastCGI: (dynamic) server "/var/www/fcgitest/run.fcgi" (pid 27758) terminated by calling exit with status '0'
似乎输出已写入错误日志!某处是否缺少套接字配置?
正如 joschi 所说,CGI != FastCGI 。在这种情况下,CGI 脚本会失败。
http://127.0.0.1/doc/libapache2-mod-fastcgi/mod_fastcgi.html
http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html