2

我正在努力设置 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 admin@xxx.com
    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 设置有关。

每个提示都受到赞赏。

4

1 回答 1

1

我有一个类似的错误,但我不记得它到底是什么,以及我是否有不同的问题,但也许你的主要问题是你没有创建/var/run/wtWt 在使用 fastcgi 连接器时用来管理会话的文件夹。

问题是,至少在 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.confupstart

#
# 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
于 2015-12-22T03:57:07.533 回答