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).