Я изо всех сил пытаюсь настроить Apache для работы с приложением Wt на FastCGI.
Я использую Arch Linux и Apache 2.4.7.
gcc 4.9.0 20140604
Привет, мир пример, который является самым простым примером, после компиляции выдает мне эту ошибку:
[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>
и мой fastcgi.conf, который включается из httpd.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.
Каждый намек в основном ценится.
У меня была похожая ошибка, но я не помню точно, что это было, и были ли у меня другие проблемы, но, возможно, ваша главная проблема в том, что вы не создали /var/run/wt
папка, используемая Wt для управления сеансами, когда он использует соединитель fastcgi.
Дело в том, что, по крайней мере, в Ubuntu, /var/run
использует файловую систему tmpfs, которая является файловой системой, смонтированной непосредственно в ОЗУ и, следовательно, удаляемой при каждой перезагрузке. Таким образом, вы должны убедиться, что папка существует и имеет соответствующие разрешения при каждой перезагрузке сервера.
Зачем /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