我正在努力设置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
我的vhost:
<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设置。
每个提示都受到赞赏。
答案 0 :(得分:1)
我遇到了类似的错误,但我不记得它到底是什么,以及我是否有不同的问题,但也许你的主要问题是你没有创建Wt用来管理的/var/run/wt
文件夹使用fastcgi连接器的会话。
问题是,至少在Ubuntu中,/var/run
使用tmpfs文件系统,这是一个直接安装在RAM中的文件系统,因此在每次重启时都会被删除。因此,每次重新启动服务器时,都需要确保该文件夹存在并具有适当的权限。
为什么/var/run/wt
而不是另一个文件夹?这取决于您在wt_config.xml
文件中设置的文件夹。在Ubuntu 14.04中,该文件存在于/etc/wt/wt_config.xml
下; <run-directory>
部分下的XML标记<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