П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 181860 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 81038 раз(а).

Учебник HTML.
Просмотров 76609 раз(а).

Руководство по PHP5.
Просмотров 47604 раз(а).

Хостинг через призму DNS.
Просмотров 55199 раз(а).

Подборка текстов стандартных документов.
Просмотров 47180 раз(а).

Учебник PHP - Самоучитель
Просмотров 53586 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 54247 раз(а).

Внешние атаки...
Просмотров 43871 раз(а).

Учебник PHP.
Просмотров 39291 раз(а).

SSI в примерах.
Просмотров 29138 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Скрипт ''mod_perl rules'' Apache::Registry

Как вы, должно быть, знаете, mod_perl позволяет повторно использовать написанные на Perl скрипты CGI, которые ранее использовались модулем mod_cgi. Поэтому наш первый тестовый скрипт может быть таким простым как:


mod_perl_rules1.pl
------------------
print "Content-type: text/plain\r\n\r\n";
print "mod_perl rules!\n";

Сохраните этот скрипт в файле /home/httpd/perl/mod_perl_rules1.pl. Обратите внимание, что строка #!/usr/bin/perl в mod_perl не нужна, но если хотите, можете ее сохранить. А следующий скрипт можно использовать вот таким образом:


mod_perl_rules1.pl
------------------
#!/usr/bin/perl
print "Content-type: text/plain\r\n\r\n";
print "mod_perl rules!\n";

Конечно, вы можете написать такой же скрипт используя Apache Perl API:


mod_perl_rules2.pl
------------------
my $r = shift;
$r->send_http_header('text/plain');
$r->print("mod_perl rules!\n");

Сохраните этот скрипт в файле /home/httpd/perl/mod_perl_rules2.pl. Теперь сделайте оба скрипта читаемыми и выполняемыми для сервера. Помните, что когда вы выполняете скрипты из shell, то они выполняются под тем именем пользователя, под которым вы вошли в систему. Если же вы пытаетесь запустить скрипты при помощи запросов, то Apache должен иметь возможность читать и выполнять их. Так что мы делаем скрипты доступными для чтения и выполнения каждому:

% chmod 0755   /home/httpd/perl/mod_perl_rules1.pl \
                                         /home/httpd/perl/mod_perl_rules2.pl

Если вы не хотите, чтобы остальные пользователи могли прочесть ваш скрипт, тогда добавьте себя в ту группу, в которой работает сервер (как это определено директивой Group), а затем сделайте этот скрипт принадлежностью группы и установите строгие права доступа. Например, на своей машине я запускаю сервер из-под группы httpd и в этой группе (помимо сервера) есть только я. Так что я могу поступить следующим образом:

% chown stas.httpd /home/httpd/perl/mod_perl_rules1.pl \
                 /home/httpd/perl/mod_perl_rules2.pl
% chmod 0750   /home/httpd/perl/mod_perl_rules1.pl \
                 /home/httpd/perl/mod_perl_rules2.pl

Первая команда определяет принадлежность файлов группе httpd, вторая - устанавливает должные права доступа для чтения и выполнения.

Это надежный способ, исходя из расчета, что для сервера у вас есть отдельная группа с собственным именем.

Также помните, что все содержащие скрипт директории должны быть доступны серверу для чтения и выполнения.

Так как файл mod_perl_rules1.pl по сути является обычным скриптом Perl, то вы можете проверить его из командной строки.

% perl /home/httpd/perl/mod_perl_rules1.pl

В строке вывода вы увидите следующее:

mod_perl rules!

Второй скрипт вы не сможете проверить из командной строки, поскольку он использует mod_perl API, доступный только при работе с сервера под mod_perl.

Убедитесь, что сервер запущен и с помощью вашего любимого броузера выполните следующие запросы:

http://localhost/perl/mod_perl_rules1.pl или http://localhost/perl/mod_perl_rules2.pl

В обоих случаях в ответ вы увидите следующее:

mod_perl rules!

Если вы видите это - мои поздравления! У вас работает сервер mod_perl.

Если вы вместо порта 80 используете порт 8080, тогда вы должны будете использовать эти ссылки:

http://localhost:8080/perl/mod_perl_rules1.pl или http://localhost:8080/perl/mod_perl_rules2.pl

В случае localhost это получится только если броузер работает на той же машине, что и сервер. Если это не так, тогда для этого теста используйте реальное имя сервера. Например:

http://your.server.name/perl/mod_perl_rules1.pl

Если возникли какие-либо проблемы, тогда посмотрите записи об ошибках в файле error_log.

Теперь пришло время переместить ваши скрипты CGI из директории /somewhere/cgi-bin в /home/httpd/perl/ и увидеть, насколько быстрее они работают, когда запрашиваются из только что настроенного базового URL'а (/perl/). Если раньше доступ к скрипту вы получали указывая /cgi-bin/test.pl, то теперь он доступен из /perl/test.pl.

Некоторые из ваших скриптов, возможно, не будут работать так сразу, и для нормальной работы под mod_perl потребуется их немного отладить или даже частично переписать. Но если вы не грешите небрежностью в программировании, то все шансы за то, что скрипты будут работать и без каких-либо изменений.

При возникновении проблем со скриптами лучше всего будет в файле httpd.conf заменить Apache::Registry на Apache::PerlRun, поскольку последний способен выполнять даже очень некорректно написанные скрипты. Поместите в файл httpd.conf вместо существующих нижеприведенные директивы конфигурации и перезапустите сервер:

PerlModule Apache::PerlRun
  <Location /perl>

    SetHandler perl-script
    PerlHandler Apache::PerlRun
    Options ExecCGI
    PerlSendHeader On
    allow from all
  </Location>

Теперь ваши скрипты должны работать даже в том случае, если что-либо в них не устраивает mod_perl. Мы обсудим эти нюансы в следующих статьях.

[Назад] [Содержание] [Вперед]



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: