Mod perl
Contents
Enabling Perl + Apache
Install mod_perlAUR.
Add this to httpd.conf:
LoadModule perl_module modules/mod_perl.so
Allow perl to execute scripts for certain directories
There are two possible methods: creating a virtual host, or enabling perl for a subdirectory.
Alternative 1: Using virtual hosts
Add a virtual host with various settings in extra/httpd-vhosts.conf:
<VirtualHost perlwebtest:80> Servername perlwebtest DocumentRoot /srv/http/perlwebtest ErrorLog /var/log/httpd/perlwebtest-error.log CustomLog /var/log/httpd/perlwebtest-access.log combined <Directory /srv/http/perlwebtest> AddHandler perl-script .pl PerlResponseHandler ModPerl::Registry Options +ExecCGI PerlOptions +ParseHeaders AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Ensure /etc/httpd/conf/httpd.conf includes the line
Include conf/extra/httpd-vhosts.conf
Make sure you do not have "Options Indexes FollowSymLinks"!
Add "perlwebtest" as localhost in /etc/hosts:
127.0.0.1 localhost YOURHOSTNAME perlwebtest
Use your hostname instead of YOURHOSTNAME.
Alternative 2: Just enable for a certain subdirectory
Add the following to /etc/httpd/conf/httpd.conf:
Alias /perlwebtest/ /srv/http/perlwebtest/
<Location /perlwebtest/>
AddHandler perl-script .pl
AddHandler perl-script .cgi
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Location>
Turn on perl for directory listings
Create /etc/httpd/conf/extra/perl_module.conf as well:
# Required modules: dir_module, perl_module
<IfModule dir_module>
<IfModule perl_module>
DirectoryIndex index.pl index.html
</IfModule>
</IfModule>
Then include it in /etc/httpd/conf/httpd.conf:
# Perl Include conf/extra/perl_module.conf
Try it out
Create index.pl in /srv/http/perlwebtest:
#!/usr/bin/perl print "Content-type: text/plain\n\n"; print "mod_perl now works\n";
Restart apache:
# systemctl restart httpd
Usually you can just reload:
# systemctl reload httpd
Then visit http://perlwebtest (if you created a virtual host) or http://localhost/perlwebtest (if you only enabled one directory).