Learn How To Install Perl 5.28 on an Arch Linux Webserver

December 24, 2019

Table of Contents

Prerequisites

https://www.itweb.services/tutorials/linux-guides/installing-2019-arch-linux-on-a-itweb.services-server”>this article.)

https://www.itweb.services/tutorials/linux-guides/how-to-install-nginx-1-14-on-arch-linux”>Nginx

  • Sudo access:
    • Commands required to be ran as root are prefixed by #. 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
  • Install Perl 5.28 On Your Webserver

    Perl is part of the Arch base group, so it was installed along with the rest of Arch.

    For Apache

    https://www.itweb.services/tutorials/linux-guides/building-packages-on-arch-linux”>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
    

    For Nginx

    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/
    

    Test Perl

    Within the appropriate directory, create test.cgi with contents:

    #!/usr/bin/perl
    print "Content-type: text/plainnn";
    print "perl worksn";
    

    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.

    Need help?

    Do you need help setting up this on your own service?
    Please contact us and we’ll provide you the best possible quote!