Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Организация зап... 64601
Создание потоко... 61592
Модуль Forms 61229
Создание отчето... 61174
ТЕХНОЛОГИИ ДОСТ... 57621
Пример работы с... 55124
Имитационное мо... 53014
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,067
новичок: senata7
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Расчет обратной матрицы на Delphi + Пояснительная записка
Моделирование работы перекрёстка по регулированию движения на GPSS + Поя...
Сравнение двух бинарных деревьев на Turbo Pascal + отчет

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Установка поддержки PERL для IIS3 под Windows NT

1. Почему была написана эта заметка

Internet Information Server ( IIS ) под Windows NT является сейчас вторым ( после Apache ) по популярности web-сервером. Можно привести ряд аргументов в пользу того или иного выбора - Apache или IIS - это предмет отдельного разговора, выходящего за рамки данной заметки. Так или иначе, я столкнулся с задачей установки PERL для IIS3 под Windows NT. Цель данной операции вполне понятна: PERL в настоящее время - наиболее популярный язык автоматизации web-сервера. На нем написана масса полезных скриптов, всевозможных счетчиков, программ приема заявок, и многое другое. Хотелось бы уметь адаптировать все это под IIS, да и свои скрипты хотелось бы уметь писать так, чтобы они с минимальными изменениями годились для любого web-сервера. Значит, их стоит писать не на BASIC, а скорее на PERL.

Итак, хорошо бы поставить PERL на IIS под NT. Лезем в Интернет, выясняется - это интересует многих, и это таки-можно сделать : есть кампания Active State ( www.activestate.com ), которая разработала поддержку PERL для IIS; все, что для этого требуется, можно с ее сервера бесплатно скачать. А в качестве руководства к действию - читайте FAQ , который поддерживает некто Evangelo Prodromou. Замечательно.

Теперь можно обяснить цель появления данной заметки. Как выяснилость на практике, указанный выше FAQ от Evangelo Prodromou , на который много ссылок в разных местах, весьма мало пригоден как начальное руководство к действию по установке PERL для IIS. В нем есть много полезных сведений, тонкостей, но вот простой и внятной инструкции : делай раз, делай два, делай три - и твой первый скрипт типа "Здравствуй, ПЕРЛ" заработает на IIS- там нет. Что и привело в нашем случае к изрядной потере времени.Именно попытка создания такой простой инструкции и есть предмет данной заметки.

То, о чем дальше будет говориться, проверено уже не один раз для IIS3. Вероятно, все это верно и для версий IIS4 и IIS2, но сам я этого не проверял.

2. Кратко о PERL-модулях от Active State

Active State - на сегодняшний день основной поставщик модулей PERL для IIS. Для начала вполне достаточно того, что можно скачать у нее. ( Впрочем, если вас интересуют именно все возможные варианты или история вопроса - читайте указанный выше FAQ ). Кстати, в этом FAQ Active State называется свом старым именем - Active Ware.

Cушествует не один, а несколько модулей от Active State для разных аспектов поддержки PERL для IIS. Есть модуль "Perl for Win32" - это exe-файл,буквальный аналог соответствующего исполняемого perl-модуля под Unix. Однако специфика архитектуры Windows NT такова, что написанный специально под нее модуль- DLL, выполняя то же самое, будет работать быстрее ( не будем здесь вдаваться в объяснения - почему ). Этот модуль-DLL носит название "Perl for ISAPI". Двух указанных модулей - "Perl for Win32" и "Perl for ISAPI" хватает для решения большинства простейших задач с применением PERL. Их установку и использование мы и рассмотрим в данной заметке. ( Для многих задач хватило бы и одного "Perl for ISAPI", но технически его нельзя установить без "Perl for Win32" ).

А еще есть модуль "PerlScript", который глубже интегрирован в IIS - модуль для ASP ( Active Server Pages, особенность IIS начиная с IIS3, использующая Microsoft Active X.) Еще есть модуль "PerlEx" для ускорения работы CGI-скриптов ( еще раз ускорения, но уже за деньги) . И, наконец, графический Perl Debugger - тоже не бесплатный, бесплатна только версия на неделю.

3. Что скачивать

Итак, залезаем на , Perl for Win32, скачиваем Pw32i316.exe (примерно 1,5 Мб; 316 - номер версии, в дальнейшем вероятно, появится 317 и т.д. ). Cкачиваем там же PIISi316.exe (примерно 80 Кб; 316 - опять номер версии; он должен быть у обоих файлов одинаков)- это Perl for ISAPI.

4. Как устанавливать

а) Выбираем директорию под файлы PERL, например C:\PERL - ни в коем случае не внутри директории web, а то получим большую дыру в системе безопасности.

в) Разархивируем скачанные архивы в выбранную директорию ( например, при помощи WinZip - важно, чтобы длинные имена файлов сохранились).

c) Устанавливаем модуль "Perl for Win32" : в возникшей директории BIN находим и запускаем perlw32-install.bat. Соглашаемся со всем, что предлагается.

d) Устанавливаем модуль "Perl for ISAPI" : в возникшей директории BIN находим и запускаем perlis-install.bat. Соглашаемся со всем, что предлагается, НО : расширение под файлы, которые система будет ассоциировать с perlis.dll лучше сменить с предлагаемого .PL на .PLX, или что нибуть в этом роде : по традиции .PL обычно резервируется под файлы, обрабатываемые perl.exe - главным файлом "Perl for Win32".

e) Еще одно действие понадобится для тех случаев, когда желательно непосредственно применять perl.exe - главный файл "Perl for Win32". ( Напомним, что теоретически perlis.dll делает все то же самое, что и perl.exe, но только быстрее. Практически, однако, нам не удалось заставить его корректно работать с SSI- Server Side Include. А это ключевой элемент для счетчиков или , скажем, вставления часов на страницу. Есть и другие тонкости. Так что пожалуй, лучше сразу сделать - ну хотя бы для того, чтобы реально сравнить по скорости perl.exe и perlis.dll. ) Итак, нужно добавить в Registry запись, ассоциирующую файлы с расширением .PL с perl.exe. Любопытно : то же для perlis.dll инсталляционная программа сделала автоматически, а для perl.exe - нет.

Вызываем winnt/system32/regedt32 и находим HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services \W3SVC\Parameters\ScriptMap

Там уже должна быть запись

.plx:REG_SZ: c:\perl\bin\PerlIS.dll

( предполагается, что директория, выбранная в пункте а) - c:\perl ). После этой записи надо добавить

.pl:REG_SZ: c:\perl\bin\Perl.exe %s %s

Любопытно, что вот про эти %s %s - в FAQ от Evangelo Prodromou - ни слова, а без них все как настоящее, но не работает.

f) Если потребуется SSI ( а наверняка потребуется ), то ровно в том же месте Registry, прямо под двумя предыдущими записями делаем еще одну :

.stm:REG_SZ: C:\WINNT\system32\inetsrv\Ssinc.dll

-мы ассоциируем файлы с расширением .stm с отвечающим за SSI .dll. Это .dll из комплекта IIS и никак с perl не связан. Расширение можно, видимо, при желании изменить, но это не может быть .htm . Разумеется, если вы при инсталляции выбрали другое название для директории с файлами IIS - его и проставьте.

g) Теперь кладем наши скрипты в какую-нибуть директорию внутри web и при помощи Microsoft Internet Service Manager ( Inetmngr ) прописываем ее как директорию web с правами Access : Read Execute. Те же права нужны кстати и для SSI.

h) Все. Перегружаем NT ( именно NT перегружаем, а не только web - иначе записи в Registry не вступят в силу )

5. Как проверить

Ну например : test1.pl - работает при помощи perl.exe и выводит на экран фразу "Hello, Perl !".

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

А вот test2.plx использует perlis.dll и пишет на экране "Здравствуй, ПЕРЛ !". Обратите внимание : начальная строчка здесь другая, чем в test1.pl - именно так требуется для perlis.dll.

print "HTTP/1.0 200 OK \r\n";
print << "END";
Content-Type text/html

<HTML>
<HEAD>

<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
</HEAD>
<BODY>
Здравствуй, ПЕРЛ !
</BODY>
</HTML>
END

И наконец, test3.stm выдает на экран ваш IP-адрес используя скрипт test3.pl и SSI.

<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
</head>

<body bgcolor="#FFFFFF" link="#000080" vlink="#660033">
<center>
<font size=4 color=teal>Ваш IP-адрес</font>
<font size=5 color=navy>
<!-- #exec cgi="test3.pl" --></font>
</center>

</body>
</html>

А соответствующий скрипт test3.pl состоит всего из одной строки :

print $ENV{'REMOTE_ADDR'};

6. Что дальше

А вот дальше можно читать FAQ от Evangelo Prodromou, который доступен во многих местах, например, на . Полезно посетить - целая директория, посвященная Perl для Windows NT. А дальше - выходим на оперативный простор : банк CGI-ресурсов ; каталог докумнетации по Perl , учебник по CGI и PERL - например, . И так далее; проблема скорее не в том, чтобы найти, а в том, чтобы переварить. Удачи!

Опубликовал Kest October 31 2008 18:41:10 · 0 Комментариев · 4380 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Blib [Исходник на...
Советы от Даниилы...
Пример работы с б...
Панель случайной ...
Delphi 2006 - Спр...
Adapter (пример D...
Mass Photo Upload
Пример работы с ф...
Xrumer 4 Platinum...
База для Allsubmi...
SMExport
TsHintManager
Добавление к ссы...
PHP: обучение на ...
Animation (Пример...
Шкрыль А. - Разра...
Ильдар Хабибуллин...
Файловый менеджер
Исправление проц...
База игр

Топ загрузок
Приложение Клие... 100384
Delphi 7 Enterp... 83515
Converter AMR<-... 20051
GPSS World Stud... 11297
Borland C++Buil... 11233
Borland Delphi ... 8175
Turbo Pascal fo... 6987
Visual Studio 2... 4970
Калькулятор [Ис... 4416
FreeSMS v1.3.1 3516
Случайные статьи
Доступ к удаленной...
Обратные сортировк...
Параметр-шаблон
Клонирование и дру...
Пробелы в значения...
Определение функции
Требования голосов...
Настройка параметр...
Онлайн казино. Игр...
File variable expe...
Транзакты
Простейшие комбина...
уровню защиты
Хакинг
Обычно при внедрен...
Программа выводит ...
Ориентация и разме...
Редактор изображен...
Как определить коо...
ИСПОЛЬЗОВАНИЕ ПРЕД...
почту, чтобы отпра...
Подсказки к некото...
Организация ввода-...
Активизируйте режи...
излишними привилег...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?