Приложение PSGI с Apache2, использующее Plack::Handler::Apache2, приводит к 'not found'
Первый постер, долгое время скрывался здесь.
Я использую крошечное приложение PSGI в plackup, но я хотел бы переключиться на Apache2 для поддоменов. Я запускаю приложение с помощью "plackup /home/ath88/work/kolle/script/dir.psgi -port 80". Он отлично работает на платке. Приложение довольно простое и его можно найти по адресу https://github.com/ath88/Kolletilmelding/blob/master/script/dir.psgi
Но я хотел бы запустить Apache2 вместо plackup по понятным причинам. Для этого я хочу использовать Plack::Handler::Apache2. Мой VirtualHost выглядит следующим образом:
<VirtualHost *:80>
ServerName aths.dk
ServerAdmin asbjoern@gmail.com
<Location />
SetHandler perl-script
PerlResponseHandler Plack::Handler::Apache2
PerlSetVar psgi_app /home/ath88/work/kolle/script/dir.psgi
</Location>
</VirtualHost>
Apache2 перезагружается нормально. Но когда я пытаюсь посетить aths.dk, я просто получаю 404 не найден. Каталог для приложения правильный, так как это приводит к внутренней ошибке 500. Глядя в apache2/error.log я получаю это: [Неактуально, см. Редактирование]
[Wed Oct 05 21:32:16 2011] [notice] caught SIGTERM, shutting down
[Wed Oct 05 21:32:17 2011] [notice] Apache/2.2.12 (Ubuntu) mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations
Это происходит каждый раз, когда я перезагружаю Apache2.
Я потратил 4 часа, пытаясь отладить это. Я совершенно ошеломлен.
Редактировать: Оказывается, SIGTERM был от остановки Apache2 для перезапуска. Это не происходит, когда я начинаю это. Дурак я.
1 ответ
Возможно, ваша настройка выиграет от настройки обратного HTTP-прокси.
Вы можете запустить приложение Plack вручную и связать его с 127.0.0.1:9001
вместо 127.0.0.1:80
, в этом случае вам нужен привилегированный пользователь (порт TCP ниже 1024).
Тогда конфигурация обратного HTTP-прокси, которая должна работать, может быть такой:
<VirtualHost *:80>
ServerName aths.dk
ServerAdmin asbjoern@gmail.com
ErrorLog /var/log/apache2/aths.dk-error.log
TransferLog /var/log/apache2/aths.dk.log
DocumentRoot /var/www/aths.dk
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:9001/
ProxyPassReverse / http://127.0.0.1:9001/
</VirtualHost>