Nickolay.info. Perl. Установка Perl под Windows

Прекрасный язык CGI-программирования Perl, к сожалению, почти вытеснен PHP. Тем не менее, ничего красивее и удобнее для обработки строк и текстовых файлов я не знаю по сей день, и иногда проще "реанимировать" старый скрипт, чем делать то же самое средствами PHP или других языков. С помощью этой небольшой статьи Вы сможете скачать, установить и настроить Perl на локальной Windows-машине (на момент написания статьи это была Windows XP, но, думаю, всё будет работать и в более новых версиях), а также решить типичные проблемы, связанные с закачкой Perl-скриптов на хостинг.

1. Во-первых, нужно иметь установленный локальный сервер под Windows (можно, разумеется, установить Apache, но мне обычно хватало Internet Information Services - встроенного в Windows локального сервера). О том, как установить IIS, читайте в этой статье.

2. После установки IIS скачаем и установим Active Perl под Windows, надёжнее всего это сделать с официальной страницы: http://www.activestate.com/activeperl/, размер архива до 20 Мб. Во избежание проблем ставьте Perl в корень диска c: или d:, так, чтобы его папкой стала c:\Perl (d:\Perl).

3. Привяжем к IIS типы файлов Perl'а. Для этого зайдём Пуск, Администрирование, Internet Information Services (или Пуск, Выполнить, %SystemRoot%\system32\inetsrv\iis.msc, если вдруг нет такого меню), раскроем список Web-служб локального компьютера до уровня локального Web-сервера, нажмём на нём правую кнопку мыши и выберем "Свойства" (см. рис.)

В окне "Свойства" на вкладке "Документы" нажимаем кнопку "Добавить" и добавляем в список имён документов по умолчанию (опция "Задать документ, используемый по умолчанию" включена) имя index.pl. На вкладке "Домашний каталог" проверяем, что в списке "Разрешен запуск:" выбран пункт "Сценарии и исполняемые файлы", нажимаем кнопку "Настройка" в окне "Настройка приложения" делаем следующие добавления в список "Сопоставление приложений":
Исполняемый файл: c:\Perl\bin\perl.exe "%s" %s
Расширение: .pl
Команды (сократить до): GET,HEAD,POST (можно оставить и "все команды")
Включена опция "Проверка наличия файла".

Аналогично для расширения .plx можно сделать отдельную запись, назначив исполняемым файлом строку c:\Perl\bin\perlis.dll. Хотя я ставил это и на расширение .pl, всё равно всё работало.

Для надёжности можно перезапустить сервер IIS (из меню, показанного на рисунке выше, выбрать "Остановить", затем "Пуск").

4. Проверим работу на тестовом файле. В папке C:\Inetpub\wwwroot\ (корень нашего Web-сервера) создадим файл с именем test.pl и следующим содержимым:

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<html>Hello, Perl!</html>";

В адресной строке браузера выполним http://127.0.0.1/test.pl

На экране строка Hello, Perl!? Поздравляю, всё работает. Если что-то не так - во-первых, разбираемся с правами на файлы (в той же статье п. 3-5), во-вторых, проверяем, разрешает ли IIS выполнение файлов в корне сервера (помните, выше мы выбирали пункт "Сценарии и исполняемые файлы"?), в-третьих смотрим, нет ли ошибки в пути к интерпретатору Перла (назначение на тип файла .pl).

Разумется, скрипты можно размещать в любых папках, вложенных в wwwroot, тогда в пути к скрипту на локалхосте добавится путь по дереву папок, начиная с корня сервера - например, http://127.0.0.1/cgi-bin/test2.pl для скрипта test2.pl, расположенного локально в папке C:\Inetpub\wwwroot\cgi-bin (по умолчанию серверные скрипты, кстати, должны располагаться как раз в ней).

Типовые проблемы с Perl-скриптами на хостинге

Предполагается, что Вы закачиваете скрипты на сервер Интернет через службу передачи файлов FTP любым FTP-клиентом, имеющим необходимый минимум настроек. Мне лично в большинстве случаев хватает клиента, встроенного в Far Manager, поэтому скажу несколько слов о работе с FTP его средствами. Нажимаем Alt+F1 или Alt+F2, выбираем под списком дисков FTP. Если нужного соединения в панели ещё нет, создаём его нажатием Shift+F4. Обычно достаточно ввести в первое поле окна "Ввод адреса FTP" строку вида ftp://пользователь:пароль@сервер:порт/папка, например, ftp://misha314:pg0_xE1@ftp.narod.ru для пользователя сервиса Народ.Ру с логином misha314 и паролем pg0_xE1. Платные хостинги тем более обычно предоставляют данные для доступа к FTP. Для многих серверов также нужно выставить опции "Пассивный режим", в целях безопасности рекомендуется также "Использовать Firewall", "Расширенное окно команд" включено по умолчанию, так что пусть так и будет. Введя данные, нажимаем "Сохранить" и соединение сохраняется в панели. Перейдя по его ссылке, теперь мы можем закачивать файлы на сервер, создавать там папки и менять права доступа к этим объектам. Как раз последний шаг обычно создаёт проблемы, давайте вкратце обсудим, как меняются и что означают эти самые права. Для смены прав в панели FTP Far Manager'а выделите нужные файлы клавишей Ins и нажмите Ctrl+A. Появится окно как на рисунке:

Права доступа к файлам действуют во всех нормальных операционных системах (я не про Windows, а про Unix-совместимые системы, которые обычно стоят на серверах Интернет, куда Вы закачиваете файлы) и разделяются на три категории:

Именно в этом порядке на рисунке показаны 3 группы переключателей.

В каждой категории можно установить или снять 3 вида прав:

Права доступа обозначаются так же цифрами:

На самом деле это не просто цифры, а двоичные коды комбинаций RWX, но для простоты сойдёт и так. Сумма этих цифр и показывает права доступа. Вот основные варианты:

и т.д. для каждой из 3 категорий. В итоге получается, что права 777 обозначают, что и владелец, и группа пользователей, к которой он относится, и любой сторонний пользователь имеют полный доступ к этим файлам. Как в Windows с правами администратора. Поэтому ни один нормальный скрипт таких прав не потребует. А требуется обычно 755 (положение переключателей XXX X0X X0X) для папок и исполняемых файлов, в том числе, скриптов с расширением .pl, и 644 (X0X X00 X00) или 744 (XXX X00 X00) для всех остальных файлов. Теперь, надеюсь, Вы сможете понять фразу "поставить права 755". Кстати, какие права на рисунке? Правильно, 644.

Итак, всё, что потребуется - создать подключение FTP, закачать в нужную папку (хостер обычно сообщает, какую, а корневая папка Вашего сервера уже создана) файлы с расширением .pl, поставить на них и вложенные папки права 755, на прочие файлы - 644 и набарть URL-адрес нужной страницы? Как бы ни так. Есть ещё куча нюансов, ради них-то я и начал этот раздел.

1. Закачивать файлы с расширением .pl следует только как текстовые (включить флажок "Текстовый режим" окна "Передача файлов" Far Manager'а). Иначе рискуете получить внутреннюю ошибку сервера с кодом 500. Дело в том, что в Windows и DOS в конец каждой строки текстового файла добавляется по 2 символа - CR (возврат каретки, код символа 13) и LF (перевод строки, код 10), а в Unix-совместимых системах строка заканчивается единственным символом с кодом 10. Вариант передачи "Текстовый режим" как и раз и убирает лишние символы CR в конце строк. На самом деле мешает символ 13 только в конце первой строки Perl-скрипта -

#!/usr/bin/perl

Эта строка обозначает путь к интерпретатору Perl, на Windows-машине она ничего не делает, а вот при размещении на сервере необходима. Если файл не передан как текстовый, интерпретатор Перла просто воспринимает код 13 как часть пути и не может запустить скрипт. Думаю, не надо пояснять, что бинарные файлы (картинки, базы данных, видео и т.п.) ни в коем случае нельзя закачивать как текст - Вы просто испортите файл.

2. Кстати, эта строка не обязана быть такой как выше. На конкретном хосте может быть и

#!/usr/sbin/perl

и что-нибудь ещё. Поэтому, если скрипт не работает, во вторую очередь уточните по документации или у админа путь к интерпретатору Перла.

3. Третье - проверьте права на файлы, как рассказано выше. На многих хостингах просто отключены из соображений безопасности права 777, а разрешено только 755 и т.д.

4. Perl-скрипт должен полностью формировать документ HTML вместе с HTTP-заголовками. В простом переводе это означает, что первой в теле скрипта должна печататься оператором print или echo строка

print "Content-type: text/html\n\n";

- именно так, с двумя переводами строки \n в конце.

5. Ошибку сервера 500 с сообщением в логе вроде "Premature end of script headers" может породить и синтаксическая неточность где-нибудь глубоко в недрах скрипта. Я, например, однажды бился часа 2, пока не нашёл примерно в 1000-й строке текста конструкцию вида

if оператор1;
elsif оператор2;

вместо требуемой правилами языка

if { оператор1; }
elsif { оператор2; }

- фигурные скобки в if оказались обязательны... после этого "мёртвый" скрипт заработал безупречно.

6. Многие скрипты имеют в отдельном файле с именем вроде config.pl или просто в начале текста настройки вида

$datafolder="./"; #путь к папке с данными

Для работы скрипта обычно нужно корректно их установить. Если помнить, что в Unix, в отличие от Windows, в записи путей используется прямой слэш /, а не обратный \, обычно это не так сложно. Тем более, что авторы снабжают настройки комментариями. Всё, что следует после символа "решётки" # до конца строки и есть комментарий.

7. Кстати, при отладке чужих, да и своих скриптов, бывает нужно закомментарить сразу многострочный кусок кода. В стандарте Perl такой возможности, как многострочные комментарии, нет, но на самом деле почти везде работает конструкция

=START
 закомментаренные операторы;
=END

- бывает, очень помогает.

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

Рейтинг@Mail.ru

вверх гостевая; E-mail