Bug 4994

Summary: apache and apache-mod_perl in proxied mode dont work
Product: Sisyphus Reporter: tma <tma>
Component: apacheAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P2 CC: at, cas, combr, crux, ender, lakostis, ldv, mike, mithraen, qa_viy, rider, shaba, solo, viy
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 987    

Description tma 2004-08-13 19:00:39 MSD
По умолчанию при установке apache и apache-mod_perl подразумевается что они
должны работать в через perlproxied. При попытке запроса скриптов из /perl/
выдается сообщение о не найденом пути. Лог apache об этом так же говорит. Лог
apache-mod_perl при этом чистый. 
Поглядев конфиг apache, был найден  следующий кусок:

<IfDefine PERLPROXIED>
    <IfModule mod_proxy.c>
        ProxyPass               /perl/ http://127.0.0.1:8200/
        ProxyPassReverse        /perl/ http://127.0.0.1:8200/
    </IfModule>

    # Protect security-sensitive locations of httpd-perl server
    <Location ~ ^/perl/(perl-status|server-status|server-info)>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1 localhost
        #Allow from your.trusted.host
    </Location>
</IfDefine>
из которого следует что для работоспособности связки apache и  apache-mod_perl
через proxied требуется запускать apache  с параметром -DPERLPROXIED
После указания этого параметра в /etc/init.d/httpd все замечательно начинает
работать.
Comment 1 Michael Shigorin 2004-08-13 19:27:08 MSD
maybe I'd add some /etc/sysconfig/httpd which would get sourced by
/etc/init.d/httpd so that local administrator could inject the parameters
without hacking and maintaining initscript.
Comment 2 Michael Shigorin 2004-08-13 19:37:57 MSD
scheduled for weekend
Comment 3 Michael Shigorin 2004-08-16 13:23:42 MSD
Проверка показала, что функционирование "не зависит от".

Возможно, я совсем тормоз, но трогать то, что works for me, перед релизом не
буду.  Давайте продолжим через пару недель, все равно apache-1.3 будет
капитально перековыриваться.
Comment 4 tma 2004-08-17 08:00:07 MSD
Ну давайте, только не забыть бы об этом. :)

Comment 5 Michael Shigorin 2005-01-29 22:12:28 MSK
Так... а багзилла-то помнит.

Можете описать на пальцах для тупых майнтейнеров (меня :), как проверить
работу/неработу?

Покамест включение -DPERLPROXIED и hello.pl в /var/www/perl привели к 502 Proxy
Error (при том, что на 127.0.0.1:8200 httpd-perl сидит, грабли с (98)Address
already in use: make_sock: could not bind to port 80 лежат отдельно -- timing
issue, что-то мне так кажется).

2 mithraen: тебе mod_perl ближе, мож починишь?

Пока для 1.3.33rusPL30.20-alt3 делаю включение /etc/sysconfig/httpd и httpd-perl
соответственно инитскриптами с передачей $ARGS.
Comment 6 Denis Smirnov 2005-01-29 22:27:02 MSK
> Можете описать на пальцах для тупых майнтейнеров (меня :), как проверить
> работу/неработу?
> 
> Покамест включение -DPERLPROXIED и hello.pl в /var/www/perl привели к 502 Proxy
> Error (при том, что на 127.0.0.1:8200 httpd-perl сидит, грабли с (98)Address
> already in use: make_sock: could not bind to port 80 лежат отдельно -- timing
> issue, что-то мне так кажется).
> 
> 2 mithraen: тебе mod_perl ближе, мож починишь?

Честно говоря читая ленту так и не понял -- в чём именно проблема?
Ну что it works for me, это понятно. У меня уже давно штатные инитскрипты не
работают. У меня апачем вообще daemontools занимается (в связи с monit пора бы
перейти не него).

Никаких "Address already in use" быть не должно, разве что если httpd-perl
пытается и на 80-м порту повеситься.

Что в логах в этот момент? И какое содержимое hello.pl?
Comment 7 Michael Shigorin 2005-01-31 14:21:48 MSK
Говорю же -- про :80 отдельная тема, мелкий хак в alt3 состоит в том, что
/etc/init.d/httpd-perl смотрит не на pidfile, а на lockfile.

В hello.pl:

#!/usr/bin/perl
print "<html><body>Hello world!</body></html>"

Речь не о том.

В /var/log/error_log попадалось такое:

[Sat Jan 29 20:56:16 2005] [error] [client a.b.c.d] (111)Connection refused:
proxy connect to 127.0.0.1 port 8200 failed

-- при этом netstat -pan | grep 8200 показывал пальцем на httpd-perl, а telnet
localhost 8200 к чему-то даже коннектился.

К тебе, собсно, вопрос не по тому, как в твоей конфигурации оно чудно работает,
а как бы сделать так, чтобы работало в той, которая в данный момент обязана быть
в пакете. :)

[упс... забыл сказать Commit :]
Comment 8 Denis Smirnov 2005-01-31 17:37:08 MSK
А скрипт такой не будет работать :) Он будет Internal Server Error говорить.
Заголовки кто будет добавлять? ;-) mod_perl, как и CGI, требует всю работу
ручками делать. Или соответствующими модулями.

Я понял о чём ты. Я имею в виду "как я могу это воспроизвести?". В смысле на
каком срезе Сизифа, что выкачать? Ты имеешь в виду штатные установки?

Вот у меня под рукой есть машинка где пока нет апача. Что мне надо сделать чтобы
воспроизвести глюку? 
Comment 9 Michael Shigorin 2005-01-31 17:43:04 MSK
Вот "как" -- лучше с tma@ выясните (как на меня -- попробуй поднять mod_perl со
штатными инитскриптами и прочим).

На текущем Sisyphus, по вкусу -- с apache из Daedalus (только там ещё кой-чего
может быть разломано, но лучше отталкиваться от него) ну или уже со всем из
ALM2.4, поскольку было бы неплохо сделать errata, раз у нас всё взорвано.
Comment 10 Michael Shigorin 2005-08-24 21:28:14 MSD
(In reply to comment #8)
> А скрипт такой не будет работать :) Он будет Internal Server Error говорить.
> Заголовки кто будет добавлять? ;-) mod_perl, как и CGI, требует всю работу
> ручками делать. Или соответствующими модулями.
Брось hello.pl для тупых. :)
Comment 11 Michael Shigorin 2005-08-24 21:38:53 MSD
*** Bug 6437 has been marked as a duplicate of this bug. ***
Comment 12 Michael Shigorin 2005-08-24 22:25:21 MSD
#6437 dup
Comment 13 Michael Shigorin 2005-08-24 22:26:19 MSD
Народ, как думаете, что лучше:

- стартовать httpd-perl первым и при наличии /usr/sbin/httpd считать его
запускающимся (вариант: +проверять chkconfig) => PERLPROXIED, или
- написать в README.ALT, что запуск mod_perl требует добавления
ARGS=-DPERLPROXIED в /etc/sysconfig/apache?

Я пока делаю первое без chkconfig (неохота на ночь глядя писать парсилку
`chkconfig --list httpd`, точно наклепу чего-нить не того).
Comment 15 Michael Shigorin 2005-08-29 22:59:33 MSD
По идее, fixed; фидбэка я не получил, человеку у нас на хостинге облом, заливаю
в Sisyphus и backports.
Comment 16 Michael Shigorin 2005-09-02 19:03:47 MSD
ещё немного подновил:

* Fri Sep 02 2005 Michael Shigorin <mike@altlinux.org>
1.3.33rusPL30.20-alt3%release_tag
- whoops, README.ALT wasn't getting packaged (updated too)
- altlinux-release build dependency appears illegal
  (long unneeded though)