Я пытаюсь заставить mod_perl работать с Apache / 2.4.18 (Ubuntu) . Вот мой основной файл конфигурации домена в Apache2:
<Virtualhost 0.0.0.0:8181>
ServerName test
DocumentRoot /srv/www/test.pro/www
ErrorLog /srv/www/test.pro/logs/error.log
<Directory "/srv/www/test.pro/www">
Options MultiViews FollowSymLinks
AllowOverride all
Require all granted
</Directory>
ScriptAlias /cgi-bin /srv/www/test.pro/www/cgi-bin
<Directory "/srv/www/test.pro/www/cgi-bin">
AddHandler cgi-script .cgi
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
SetHandler cgi-script
</Directory>
<Location />
LimitRequestBody 5242880
</Location>
</VirtualHost>
Этот код действительно работает ... но не с mod_perl. Так что я' В соединении отказано) при подключении к восходящему потоку, клиент: 81.174.134.xx, сервер: test.pro, запрос: «GET /cgi-bin/trust/admin/admin.cgi HTTP / 2.0», восходящий поток: " http://127.0.0.1:8181/cgi-bin/trust/admin/admin.cgi ", хост: "test.pro"
Я не понимаю, что делаю неправильно: / Может ли кто-нибудь пролить свет на то, что мне не хватает? У меня все нормально работает на Apache / 2.4.17 (Debian) на другом сервере, поэтому я не могу понять, что я здесь делаю не так.
Спасибо!
ОБНОВЛЕНИЕ : Ммм, похоже, мой скрипт вызывает проблему, но я не уверен, почему. Если я закомментирую эту строку, все работает:
PerlRequire /srv/www/test.pro/startup.pl
Я не могу понять, почему, поскольку я не получаю ошибок (или даже предупреждений!) При остановке / запуске / перезапуске Apache: /
** ОБНОВЛЕНИЕ 2 : **: Я подхожу ближе!
Не могу загрузить файл Perl: /srv/www/test.pro/startup.pl для тестирования сервера: 0, выход ...
Я дважды проверил, что - это правильный путь, и он отлично работает, когда я запускаю его с:
perl /srv/www/test.pro/startup.pl
... поэтому я немного сбит с толку, почему он жалуется!
Эх, ну, я не уверен, насколько это будет полезно для тех, кто столкнется с этим в будущем, но я все равно отправлю его - на всякий случай, если это кому-то поможет!
Проблема заключалась в том, что мне не хватало буквально 1 модуля: Apache :: DBI , который был загружен одним из скриптов загрузчика mod_perl, вызываемых внутри startup.pl.
Почему, ну почему это не могло » на самом деле я получил ошибку (или что-то в STDERR), которая была немного более полезной, я никогда не узнаю.
В любом случае, мораль этой истории состоит в том, чтобы проверить, что ВСЕ модули, которые вы пытаетесь вызвать, являются фактически установлено :)