Приложение PSGI с Apache2, использующее Plack :: Handler :: Apache2, приводит к 'not found' - PullRequest
2 голосов
/ 05 октября 2011

первый постер, долгое время здесь скрывающийся.

Я использую крошечное приложение 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 Ответ

2 голосов
/ 06 октября 2011

Возможно, ваша настройка выиграет от настройки обратного 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>
...