Отправляет email-рассылки с помощью сервиса Sendsay

mod_perl2

Есть опыт "прикручивания" темы к документной дириктории Апача, в которой
разрешено использование сценариев? Т.е. есть:
DocumentRoot /var/www/html/html.home
<Directory "/var/www/html/html.home">
Options +ExecCGI
AddHandler cgi-script pl
</Directory>
Не получается "подружить" дириктивы AddHandler отсюда и SetHandler из
темы. - Т.е. сценарий должен выполняться через тему при обращении к узлу
по имени, не указывая стартовый сценарий: http://me - а не то чтобы
срабатывать лишь на http://me/index.pl.

Ответить   Strong Mon, 01 Aug 2005 21:56:01 -0400 (#411231)

 

Ответы:

В сообщении от 1122922561 секунд после начала Эпохи Strong написал(а):

А теперь объясните нормальным языком что у вас есть, чего вы хотите
добиться, что вы предпринимали, и чем это закончилось. После прочтения
у меня возникает куча вопросов: Что означает "не получается подружить"?
Вы хотите оставить для каталога `/var/www/html/html.home' и ниже
возможность выполнения скриптов через обычный CGI интерфейс? Если да,
то для каких файлов? Какие файлы вы хотите чтобы обрабатывал mod_perl?
Вы хотите чтобы все стартовые страницы для каждого подкаталога
обрабатывались только mod_perl?

Ответить   Konstantin Korikov Mon, 1 Aug 2005 21:06:07 +0300 (#411435)

 

Чтобы они работали вместе: сценарии выполнялись в этой дириктории (с
расширением pl) и это выполнение происходило через тему.
Например: обращаемся к узлу: http://me - т.е. к /var/www/html/html.home
на сервере, тогда запускается, скажем, index.pl, который обрабатывается
темой.
На данный момент, у меня такие записи для /var/www/html/html.home:
DocumentRoot /var/www/html/html.home
<Directory "/var/www/html/html.home">
AddHandler perl-script pl
1 SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options ExecCGI
AllowOverride None
Allow from all
Order allow,deny
</Directory>
И при обращении http://me я получаю ответ: "The requested URL / was not
found on this server." Без строки 1, сценарий index.pl срабатывает, но,
не обработанный темой.
Идея проста: посетителя узла (т.е. когда он в обозревателе набирает
http://me) "встречает" index.pl, ускоренный темой. - Для этого я и
использую дир., которая описана как DocumentRoot. - Иначе, можно бы было
обойтись и /cgi-bin, в которой тема уже работает.
И ещё вопрос: можно ли пользователю просмотреть (взломать)
содержание /var/www/html/html.home? - Apache имеет права r-x. Поэтому, я
думаю, что нет. Верно ли это?

Нет. Через тему.

Все, у которых на конце имени ".pl".

только mod_perl?
Я хочу, чтобы лишь файлы у которых на конце имени ".pl" обрабатывались mod_perl,
стартовым должен быть лишь
index.pl, лежащий в /var/www/html/html.home. В остальных подкаталогах, сценарии
будт вызываться по прямому обращению
(путь в URL), а остальные файлы (html, gif, etc) не должны быть видны вообще,
даже путём прямого обращения.

Ответить   Strong Wed, 03 Aug 2005 06:14:16 -0400 (#412076)

 

Чтобы они работали вместе: сценарии выполнялись в этой дириктории (с
расширением pl) и это выполнение происходило через тему.
Например: обращаемся к узлу: http://me - т.е. к /var/www/html/html.home
на сервере, тогда запускается, скажем, index.pl, который обрабатывается
темой.
На данный момент, у меня такие записи для /var/www/html/html.home:
DocumentRoot /var/www/html/html.home
<Directory "/var/www/html/html.home">
AddHandler perl-script pl
1 SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options ExecCGI
AllowOverride None
Allow from all
Order allow,deny
</Directory>
И при обращении http://me я получаю ответ: "The requested URL / was not
found on this server." Без строки 1, сценарий index.pl срабатывает, но,
не обработанный темой.
Идея проста: посетителя узла (т.е. когда он в обозревателе набирает
http://me) "встречает" index.pl, ускоренный темой. - Для этого я и
использую дир., которая описана как DocumentRoot. - Иначе, можно бы было
обойтись и /cgi-bin, в которой тема уже работает.
И ещё вопрос: можно ли пользователю просмотреть (взломать)
содержание /var/www/html/html.home? - Apache имеет права r-x. Поэтому, я
думаю, что нет. Верно ли это?

Нет. Через тему.

Все, у которых на конце имени ".pl".

только mod_perl?
Я хочу, чтобы лишь файлы у которых на конце имени ".pl" обрабатывались mod_perl,
стартовым должен быть лишь
index.pl, лежащий в /var/www/html/html.home. В остальных подкаталогах, сценарии
будт вызываться по прямому обращению
(путь в URL), а остальные файлы (html, gif, etc) не должны быть видны вообще,
даже путём прямого обращения.

Ответить   Strong Wed, 03 Aug 2005 06:30:53 -0400 (#413368)

 

В сообщении от 1123039853 секунд после начала Эпохи Strong написал(а):

Тогда никому ни с кем дружить не нужно. Просто используйте `AddHandler
perl-script pl', а `SetHandler perl-script' удалите.

Этого можно добиться разными способами. Для того чтобы во всех
подкаталогах, стартовая страница была `index.pl' сделайте
`DirectoryIndex index.pl'.

Т.е. `index.pl' выполняется через обычный CGI интерфейс? Как вы это
определили?

При правильной настройке и отсутствии ошибок в самом web-сервере
удаленный пользователь не сможет просматривать содержание каталога
`/var/www/html/html.home', а тем более изменять его.

DocumentRoot /var/www/html/html.home
AliasMatch ^/?$ /var/www/html/html.home/index.pl
<Directory "/var/www/html/html.home">
AddHandler perl-script pl
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options ExecCGI
AllowOverride None
Allow from all
Order allow,deny
</Directory>

А вот этого я не понял. Если они (файлы html, gif, etc) не должны быть
доступны, то зачем они там есть?

Ответить   Konstantin Korikov Sat, 6 Aug 2005 04:37:48 +0300 (#413535)

 

Ясно... из документации не понятно: там set - именно обрабатываема handler, в
то время как add просто связывает раширение с сущностью.

Разная скорость если взаимо исключать Set/Add -Handler.

Очень мудро, ^^^^^^^^^^^ здорово просто!

Логично.
Спасибо большое, Константин, за Ваши ответы!

Ответить   Strong Mon, 08 Aug 2005 20:20:31 -0400 (#414466)

 

В сообщении от 1123521631 секунд после начала Эпохи Strong написал(а):

Знаете, скорость - это весьма субъективный параметр. Проверяйте этим
скриптом:

### test.pl ######################################
#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print "You using ".(grep({/MOD_PERL/} keys %ENV) ?
"mod_perl" : "standard CGI")."\n";
##################################################

К тому же, если убрать первую строчку ("#!/usr/bin/perl"), то скрипт
будет работать только с mod_perl.

Ответить   Konstantin Korikov Mon, 8 Aug 2005 18:00:07 +0300 (#414542)

 

Спасибо за сценарий - давно думал о нём.
Т.е. перл системы вообще ипользоваться не будет ни разу?
Тогда насколько тема полна по сравнению с самим перлом?

Ответить   Strong Tue, 09 Aug 2005 00:17:17 -0400 (#414575)