Apache HTTP Server/mod_perl
From the project:
- mod_perl brings together the full power of the Perl programming language and the Apache HTTP Server. You can use Perl to manage Apache, respond to requests for web pages and much more.
Installation
Install the mod_perlAUR package.
Configuration
Load the module via the main Apache configuration file httpd.conf
:
LoadModule perl_module modules/mod_perl.so
Allow perl to execute scripts for certain directories
There are two possible methods to enable the mod_perl
module:
Using virtual hosts
Add a virtual host with settings. For example:
/etc/httpd/conf/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 created virtual host:
Include conf/extra/httpd-vhosts.conf
Make sure it does not have Options Indexes FollowSymLinks
!
Add "perlwebtest" as localhost in /etc/hosts
, using the machine's hostname for yourhostname
:
127.0.0.1 localhost yourhostname perlwebtest
For a subdirectory
Add the following to the main configuration file:
/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's httpd.service
and let it reload the configuration.
Finally, depending on chosen alternative configuration, visit