I'm trying to get mod_perl working on Apache/2.4.18 (Ubuntu). Here is my main domain config file in 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>
This code does work...but, not with mod_perl. So, I'm doing the following to enable 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>
I then reboot Apache2, and try the site - and get an nginx error:
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"
I don't get what I'm doing wrong :/ Can anyone shed some light on what I'm missing? I've got it working fine on Apache/2.4.17 (Debian) on another server, so I can't figure out what I'm doing wrong here.
Thanks!
UPDATE: Mmm, so it seems to be startup my script that is causing the issue, but I'm not sure why. If I comment this line out, it all works:
PerlRequire  /srv/www/test.pro/startup.pl
I can't work out why though, as I get no errors (or even warnings!) when stopping/starting/restarting Apache :/
** UPDATE 2:**: I'm getting a little closer!
Can't load Perl file: /srv/www/test.pro/startup.pl for server test:0, exiting...
I double checked, and that is the correct path, and it runs fine when I run it with:
perl /srv/www/test.pro/startup.pl
...so I'm a bit baffled as to why its complaining!