Estou tentando fazer com que o mod_perl trabalhe no Apache / 2.4.18 (Ubuntu) . Aqui está o meu arquivo principal de configuração de domínio no 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>
Este código faz funcionar ... mas não com mod_perl. Então, estou fazendo o seguinte para ativar mod_perl :
<Virtualhost 0.0.0.0:8181>
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
ServerName test
DocumentRoot /srv/www/test.pro/www
ErrorLog /srv/www/test.pro/logs/error.log
#######
# Added for the mod_perl - startup.pl runs fine when run in command line manually
# All the modules also exist
PerlRequire /srv/www/test.pro/startup.pl
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
PerlModule Apache2::RequestRec
#######
<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 perl-script .cgi
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
<Location />
LimitRequestBody 5242880
</Location>
</VirtualHost>
Eu reinicio o Apache2, e tento o site - e recebo um erro nginx:
2017/03/28 12:40:51 [error] 22738#22738: *4 connect() failed (111:
Connection refused) while connecting to upstream, client:
81.174.134.xx, server: test.pro, request: "GET /cgi-bin/trust/admin/admin.cgi HTTP/2.0", upstream:
"http://127.0.0.1:8181/cgi-bin/trust/admin/admin.cgi", host:
"test.pro"
Eu não entendo o que estou fazendo de errado: / Alguém pode lançar alguma luz sobre o que estou perdendo? Eu tenho isso funcionando bem em Apache / 2.4.17 (Debian) em outro servidor, então não consigo entender o que estou fazendo de errado aqui.
Obrigado!
ATUALIZAÇÃO: Mmm, então parece que está inicializando meu script que está causando o problema, mas não sei por quê. Se eu comentar esta linha, tudo funciona:
PerlRequire /srv/www/test.pro/startup.pl
Eu não sei como, porque não recebo erros (ou até mesmo avisos!) ao parar / iniciar / reiniciar o Apache: /
** ATUALIZAÇÃO 2: **: estou chegando mais perto!
Can't load Perl file: /srv/www/test.pro/startup.pl for server test:0,
exiting...
Eu verifiquei novamente, e é o caminho correto, e ele corre bem quando eu o executo com:
perl /srv/www/test.pro/startup.pl
... então estou um pouco perplexo a respeito de por que ele está reclamando!