A Vultr server running up to date Arch Linux (see this article.)
Sudo access:
#
. The recommended way to run commands as root is to, as a regular user, prefix each of them with sudo
Have a text editor installed, and be familiar with it, such as vi, vim, nano, emacs or a similar editor
Perl is part of the Arch base group, so it was installed along with the rest of Arch.
Install the AUR (Arch User Repository) package mod_perl
. See Building Packages on Arch Linux (Including the AUR).
Enable the Apache Perl module by editing /etc/httpd/conf/httpd.conf
, and at the end of the list of LoadModule
commands, add the following:
LoadModule perl_module modules/mod_perl.so
Make each Directory
section you want to be able to run Perl scripts contain these options the following options.
<Directory "/srv/http/cgi-bin">
AllowOverride None
Require all granted
AddHandler perl-script .pl
AddHandler perl-script .cgi
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Directory>
Note if you are editing an existing Directory
section, and it already contains Options None
, comment that line out or delete it.
If you are running multiple host directories, you also need to edit /etc/httpd/conf/httpd.conf
and comment out the ScriptAlias
command as shown, or all "/cgi-bin/" web requests will be served out of /srv/http/cgi-bin/
regardless of which host it is:
<IfModule alias_module>
...
#ScriptAlias /cgi-bin/ "/srv/http/cgi-bin/"
</IfModule>
Restart Apache:
# systemctl restart httpd
Create the appropriate directory:
# mkdir /srv/http/cgi-bin
Install FCGI Wrap:
# pacman -S fcgiwrap
Start FCGI Wrap, and make it start after every boot:
# systemctl enable --now fcgiwrap.socket
Allow Nginx to use FCGI Wrap by editing /etc/nginx/nginx.conf
, and to every server block you want to use Perl, add the following: Alternatively, if you are using virtual hosts, edit each host's configuration file:
location ~ /cgi-bin/.*\.(cgi|pl)$ {
root /usr/share/nginx/html/;
fastcgi_pass unix:/run/fcgiwrap.sock;
include fastcgi.conf;
}
Create the appropriate directory:
# mkdir /usr/share/nginx/html/cgi-bin/
Within the appropriate directory, create test.cgi
with contents:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "perl works\n";
Make it executable, (required for perl scripts):
# chmod +x test.cgi
In a web browser, visit http://YOUR-SERVER-WEB-ADDRESS-OR-IP/test.cgi
, and you will see perl works
.
Be sure to delete the test.cgi
test file you just created.