Pers.narod.ru. 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 вышло уже немало, остаётся лишь пожелать вам успехов в его изучении.
гостевая; E-mail |