Conditions préalables
- Un serveur Vultr fonctionnant sous Arch Linux à jour (voir cet article .)
- Un serveur Web en cours d'exécution, Apache ou Nginx
- Accès Sudo:
- Les commandes devant être exécutées en tant que root sont préfixées par
#. La façon recommandée d'exécuter des commandes en tant que root est, en tant qu'utilisateur normal, de préfixer chacunesudo
- Faites installer un éditeur de texte et familiarisez-vous avec lui, comme vi, vim, nano, emacs ou un éditeur similaire
Installez Perl 5.28 sur votre serveur Web
Perl fait partie du groupe de base Arch, il a donc été installé avec le reste d'Arch.
Pour Apache
Installez le package AUR (Arch User Repository) mod_perl. Voir Construction de packages sur Arch Linux (y compris l'AUR) .
Activez le module Apache Perl en modifiant /etc/httpd/conf/httpd.confet à la fin de la liste des LoadModulecommandes, ajoutez ce qui suit:
LoadModule perl_module modules/mod_perl.so
Faites Directoryen sorte que chaque section que vous souhaitez pouvoir exécuter des scripts Perl contienne ces options les options suivantes.
<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>
Notez que si vous modifiez une Directorysection existante et qu'elle contient déjà Options None, commentez cette ligne ou supprimez-la.
Si vous exécutez plusieurs répertoires d'hôte, vous devez également modifier /etc/httpd/conf/httpd.confet commenter la ScriptAliascommande comme indiqué, sinon toutes les demandes Web "/ cgi-bin /" seront servies /srv/http/cgi-bin/quel que soit l'hôte:
<IfModule alias_module>
...
#ScriptAlias /cgi-bin/ "/srv/http/cgi-bin/"
</IfModule>
Redémarrez Apache:
# systemctl restart httpd
Créez le répertoire approprié:
# mkdir /srv/http/cgi-bin
Pour Nginx
Installez FCGI Wrap:
# pacman -S fcgiwrap
Démarrez FCGI Wrap et faites-le démarrer après chaque démarrage:
# systemctl enable --now fcgiwrap.socket
Autorisez Nginx à utiliser FCGI Wrap en modifiant /etc/nginx/nginx.conf, et à chaque bloc serveur que vous souhaitez utiliser Perl, ajoutez ce qui suit: Alternativement, si vous utilisez des hôtes virtuels, modifiez le fichier de configuration de chaque hôte:
location ~ /cgi-bin/.*\.(cgi|pl)$ {
root /usr/share/nginx/html/;
fastcgi_pass unix:/run/fcgiwrap.sock;
include fastcgi.conf;
}
Créez le répertoire approprié:
# mkdir /usr/share/nginx/html/cgi-bin/
Test Perl
Dans le répertoire approprié, créez test.cgiavec le contenu:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "perl works\n";
Rendez-le exécutable, (requis pour les scripts Perl):
# chmod +x test.cgi
Dans un navigateur Web, visitez http://YOUR-SERVER-WEB-ADDRESS-OR-IP/test.cgi, et vous verrez perl works.
Assurez-vous de supprimer le test.cgifichier de test que vous venez de créer.