我正在努力将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/

10-11 22:49