我正在努力将Apache设置为与FastCGI上的Wt应用程序一起使用。
我正在使用Arch Linux和Apache 2.4.7。
gcc 4.9.0 20140604
hello world示例,这是最简单的示例,编译后给我这个错误:
[Thu Sep 11 22:46:01.208926 2014] [fastcgi:error] [pid 27628] (101)Network is unreachable: [client 127.0.0.1:52788] FastCGI: failed to connect to server "/xxx/hello/hello.wt": connect() failed, referer: http://local.hello/
[Thu Sep 11 22:46:01.208992 2014] [fastcgi:error] [pid 27628] [client 127.0.0.1:52788] FastCGI: incomplete headers (0 bytes) received from server "/xxx/hello/hello.wt", referer: http://local.hello/
这是我要做的:
编译:
$ g++ -o hello.wt hello.cpp -lwtfcgi -lwt
我的虚拟主机:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/xxx/hello"
ServerName local.hello
ErrorLog "/var/log/httpd/local.hello-error_log"
CustomLog "/var/log/httpd/local.hello-access_log" common
<Directory /xxx/hello/>
Options All
Require all granted
</Directory>
FastCgiExternalServer /xxx/hello/hello.wt -host 127.0.0.0:9090
</VirtualHost>
以及httpd.conf中包含的我的fastcgi.conf:
<IfModule fastcgi_module>
AddHandler fastcgi-script .wt
# FastCgiIpcDir /tmp/fcgi_ipc/ # DOESN'T COMPILE WITH THIS UNCOMMENTED
FastCgiConfig -idle-timeout 100 -maxClassProcesses 1 -initial-env WT_APP_ROOT=/tmp
</IfModule>
如果我用它编译:
$ g++ -o hello.wt hello.cpp -lwthttp -lwt
并运行:
$ ./hello --docroot . --http-address 0.0.0.0 --http-port 9090
一切正常,所以我认为这与我的apache / fastcgi设置有关。
每个提示大都赞赏。
最佳答案
我有一个类似的错误,但我不记得它是什么,以及我是否有其他问题,但是也许您的主要问题是,当Wt使用fastcgi连接器时,您尚未创建Wt用来管理 session 的/var/run/wt
文件夹。
问题是,至少在Ubuntu中,/var/run
使用tmpfs文件系统,该文件系统是直接安装在RAM中的文件系统,因此在每次重新启动时都会被删除。因此,每次重新启动服务器时,都需要确保该文件夹存在并且具有适当的权限。
为什么是/var/run/wt
,而不是另一个文件夹?这取决于您在wt_config.xml
文件中设置的文件夹。在Ubuntu 14.04中,该文件位于/etc/wt/wt_config.xml
下; XML标记<run-directory>
,位于<connector-fcgi>
部分下。您可以根据需要将该指令更改为指向另一个持久文件夹。
但是,我要做的是创建一个init
作业,以便在启动时创建/var/run/wt/
文件夹,并使用以下内容创建一个/etc/init/witty.conf
文件(一个upstart
脚本):
#
# This task is run on startup to create the Witty's run folder
# (currently /var/run/wt) with suitable permissions.
description "set witty's run folder (/var/run/wt)"
start on startup
task
exec /usr/local/bin/witty_mkrunfolder
我的
witty_mkrunfolder
可执行文件是:#!/bin/bash
mkdir /var/run/wt
chown -R root:www-data /var/run/wt
chmod -R 770 /var/run/wt
额外:
witty_mkrunfolder
权限:$ chown root:root witty_mkrunfolder
$ chmod 750 witty_mkrunfolder
关于c++ - 从服务器收到Wt FastCGI不完整的 header (0字节),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25799993/