Установка Perl на IIS 7 для Windows Server 2008
Быстрые ссылки
- Копирование бинарников Perl
- Настройка IIS 7 для запуска Perl-скриптов
- Тестирование Perl
- Отладка и распространённые проблемы
- Контрольные списки и сценарий отката
- Ссылки

Копирование бинарников Perl
Перед настройкой IIS нужно подготовить файлы Perl. Скачайте ActivePerl (возьмите ZIP-пакет, не установщик) и распакуйте содержимое в папку на сервере, например C:\perl. Именно к этому каталогу будет обращаться IIS при выполнении CGI-скриптов.
Советы:
- Используйте ZIP-пакет ActivePerl, чтобы избежать глобальных изменений в реестре и системных путях.
- Размещайте бинарники в корне диска (например C:\perl), чтобы упростить указание путей в сопоставлениях.
Настройка IIS 7 для запуска Perl-скриптов
Откройте “Диспетчер служб IIS (Internet Information Services)” и перейдите в раздел “Сопоставления обработчиков” (Handler Mappings).

- Нажмите «Add Script Map» (Добавить сопоставление скрипта).

- Для поддержки файлов .pl создайте сопоставление со следующими настройками:
- Request path: *.pl
- Executable: C:\perl\bin\perl.exe “%s” %s (замените C:\perl на ваш путь, если другой)
- Name: Perl-pl

- В диалоге “Request Restrictions” на вкладке Verbs разрешите методы: GET, HEAD, POST.

- При создании сопоставления IIS спросит, хотите ли вы разрешить запуск этого сопоставления как CGI-приложения. Выберите «Yes» (Да).

- Если вы также используете расширение .cgi, добавьте аналогичное сопоставление:
- Request path: *.cgi
- Executable: C:\perl\bin\perl.exe “%s” %s
- Name: Perl-cgi
- Verbs: GET, HEAD, POST
Подтвердите запуск как CGI-приложения и примените изменения.

- После добавления сопоставлений вы увидите их в списке Handler Mappings.

- Примените настройки и выполните перезапуск IIS из командной строки, чтобы изменения вступили в силу:
iisreset
После этого IIS должен быть способен обрабатывать Perl-скрипты через CGI.
Тестирование Perl
Создайте в папке C:\Inetpub\wwwroot два текстовых файла: test.pl и test.cgi. Пример минимального CGI-скрипта Perl (с переносами и корректной шебанг-строкой):
#!C:\perl\bin\perl.exe
use strict;
use warnings;
use CGI;
my $cgi = CGI->new;
print $cgi->header('text/html');
print $cgi->start_html('Perl Test');
print $cgi->h1('Perl is working!');
print $cgi->end_html;Проверьте в браузере на самом сервере:
Если страница загружается и показывает «Perl is working!», конфигурация успешна.

Отладка — когда что не работает
Important: права доступа и антивирус/маршрутизация часто мешают выполнению CGI. Ниже — список распространённых проблем и действий.
- 500 Internal Server Error сразу при обращении к .pl
- Проверьте, что в Handler Mappings путь к perl.exe указан с обратными слешами и в кавычках: C:\perl\bin\perl.exe “%s” %s
- Проверьте права NTFS: учётная запись пула приложений должна иметь право на чтение и выполнение файла perl.exe и каталога с вашими скриптами.
- Посмотрите события в Event Viewer и журнал IIS (обычно в %SystemDrive%\inetpub\logs\LogFiles).
- Скрипт скачивается вместо выполнения
- Убедитесь, что сопоставление обработчиков для расширения присутствует и активно.
- Проверьте, что запрос проходит через нужный сайт/виртуальную директорию, где сопоставление включено.
- Ошибки модуля CGI или других модулей
- Убедитесь, что в каталоге C:\perl присутствуют необходимые модули (install via ppm/CPAN если нужно).
- Для модулей установленных локально используйте PERL5LIB или установите модули в глобальную папку Perl.
- Проблемы с путями и шебангом
- Используйте абсолютный путь к perl.exe в шебанг-строке: #!C:\perl\bin\perl.exe
- На Windows шебанг не всегда используется, важно, чтобы сопоставление обработчика в IIS корректно указывало на perl.exe.
Критерии приёмки:
- Запрос на http://localhost/test.pl возвращает 200 и отображает HTML.
- Логи IIS не содержат ошибок выполнения для запроса.
- Пул приложения запускается под ожидаемой учётной записью и имеет права доступа на файлы.
Чек-листы и роли
Администратор IIS:
- Скопировать бинарники в C:\perl
- Настроить Handler Mappings для .pl и .cgi
- Перезапустить IIS (iisreset)
- Проверить права NTFS
Разработчик Perl:
- Подготовить тестовый CGI-скрипт
- Убедиться, что используемые модули доступны на сервере
- Тестировать в локальном браузере и проверять логи
Операционная команда (DevOps):
- Настроить мониторинг логов IIS
- Добавить правило в антивирус/брандмауэр для исключения perl.exe, если нужно
- Документировать путь установки и конфигурацию
Сценарий отката (Rollback)
- Удалите сопоставления обработчиков Perl-pl и Perl-cgi в IIS.
- Перезапустите IIS: iisreset
- При необходимости удалите папку C:\perl или переименуйте её на время (не удаляйте без резервной копии).
- Если была изменена учётная запись пула приложений — верните предыдущие настройки.
Когда лучше не использовать CGI и альтернативы
- CGI создаёт новый процесс perl.exe на каждый запрос, что неэффективно под высокой нагрузкой.
- Альтернативы:
- Использовать FastCGI (меньше затрат на форки процесса).
- Переписать узкие места на более лёгкие серверные решения (PSGI/Plack, mod_perl в Apache).
- Рассмотреть контейнеризацию приложений и запуск сервера приложений вне IIS.
Mermaid: простое дерево решений (решать: CGI или FastCGI):
flowchart TD
A[Нужна поддержка Perl на IIS?] --> B{Ожидаемая нагрузка}
B -- Низкая --> C[CGI приемлемо]
B -- Средняя/Высокая --> D[Рассмотреть FastCGI или PSGI/Plack]
D --> E[Профилировать и оптимизировать модули]Факты и рекомендации
- Рекомендуется использовать ZIP-пакет ActivePerl для простоты установки на сервере.
- Для производственных нагрузок — рассмотреть FastCGI или PSGI/Plack.
- Всегда проверяйте права доступа и логи IIS при отладке.
1-строчный глоссарий:
- CGI: Common Gateway Interface — стандарт запуска скриптов веб-сервером.
- Handler Mappings: сопоставления обработчиков в IIS, которые связывают расширения файлов с исполняемыми программами.
- FastCGI: более эффективный механизм исполнения серверных скриптов без форка на каждый запрос.
Заключение
После выполнения вышеописанных шагов IIS 7 на Windows Server 2008 сможет обслуживать Perl-скрипты через CGI. Для тестирования используйте приведённый пример и по возможности планируйте переход на FastCGI при необходимости высокой производительности.
Ссылки
Download ActivePerl from ActiveState (AS Zip Package)
Похожие материалы
Перевёрнутый экран в Windows 10 — как исправить
Ложное срабатывание Behavior:Win32/Hive.ZY — что делать
Отключить повторную установку iOS‑приложений
Перенос чатов: WhatsApp → Telegram
Что делать, если Adobe Flash не работает на Mac