Scripts CGI sous Linux : exemples de configuration d’Apache CGI-bin
L’interface CGI (Common Gateway Interface) est une technologie essentielle qui sert de lien entre les clients Web et les serveurs, permettant l’exécution de scripts et de programmes sur un serveur Web. Bien que les nouvelles technologies aient largement remplacé CGI, il reste un outil utile pour les administrateurs système Linux pour la surveillance rapide du système et les tâches administratives via les navigateurs Web.
Dans ce tutoriel, vous allez apprendre :
- Comment installer le serveur web Apache sur Ubuntu Linux
- Comment créer et exécuter des scripts CGI dans différents langages de programmation
- Comment accéder et tester des scripts CGI à partir d’un navigateur Web
Apache sur Linux a toujours été l’une des principales plates-formes pour CGI en raison de sa robustesse et de sa flexibilité. Malgré l’essor des nouvelles technologies, CGI reste pertinent pour les tâches qui nécessitent l’apparition de programmes externes ou lors de l’exécution de scripts dans des langues non prises en charge nativement par le serveur Web. L’un des aspects notables est la capacité d’Apache à gérer les scripts CGI de manière sécurisée et efficace, en tirant parti des puissants mécanismes d’isolation des processus de Linux. De plus, Apache peut être configuré pour exécuter des scripts CGI dans presque tous les langages de programmation, ce qui en fait un outil incroyablement polyvalent pour la génération de contenu dynamique.
Installation et configuration
Avant de pouvoir commencer à utiliser des scripts CGI, vous devez configurer le serveur Web Apache et préparer votre environnement pour l’exécution CGI. Le processus implique plusieurs étapes détaillées pour s’assurer qu’Apache est correctement configuré pour exécuter des scripts CGI.
Installation d’Apache : Commencez par installer le serveur Web Apache sur votre système Ubuntu. Ouvrez votre terminal et entrez la commande suivante :
sudo apt update sudo apt install apache2Activation du module CGI : Apache nécessite l’activation du module CGI pour l’exécution de scripts CGI. Activez ce module en exécutant :
sudo a2enmod cgiConfiguration Apache pour CGI : Pour exécuter des scripts CGI écrits dans divers langages tels que Python, Perl ou Bash, Apache doit être configuré pour reconnaître et gérer ces fichiers de manière appropriée. Modifiez le fichier de configuration Apache, qui se trouve généralement dans
/etc/apache2/sites-available/ou directement dans le fichier de configuration principal, en fonction de la configuration de votre système. Ajoutez ou assurez-vous que les configurations suivantes sont présentes :ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI AddHandler cgi-script .cgi .pl .py .sh .rb .go .js .php Require all granted </Directory>Redémarrez Apache pour appliquer les modifications : Après avoir configuré les paramètres, redémarrez Apache pour vous assurer que toutes les modifications prennent effet :
sudo systemctl restart apache2- Vérification de l’installation d’Apache : Pour confirmer qu’Apache a été installé avec succès et qu’il est en cours d’exécution, vous pouvez consulter l’adresse IP de votre serveur dans un navigateur Web. Vous devriez voir la page par défaut d’Apache Ubuntu.
Cette commande met à jour votre liste de paquets et installe le serveur Web Apache 2. Apache est préconfiguré avec un site Web par défaut et la possibilité d’exécuter des scripts CGI.
Cette commande active le module 'cgi', qui est nécessaire pour gérer l’exécution des scripts CGI.
Cette configuration configure un chemin d’URL qui correspond au répertoire où les scripts CGI sont stockés (ScriptAlias), autorise l’exécution de scripts CGI dans le répertoire spécifié (Options +ExecCGI), informe Apache que les fichiers avec des extensions telles que .cgi, .pl, .py, .sh, .rb, .go, .js et .php doivent être traités comme des scripts CGI (AddHandler), et permet à tous les utilisateurs d’accéder aux scripts CGI, qui peuvent devoir être restreints en fonction des politiques de sécurité (Exiger que tout soit accordé).
Création de scripts CGI
Une fois qu’Apache est configuré pour exécuter des scripts CGI, vous pouvez commencer à créer des scripts dans différents langages de programmation. Chaque script doit être exécutable et situé dans le répertoire CGI désigné. Suivez ces étapes détaillées pour créer des scripts CGI à l’aide de Bash, Python, Perl et C/C++.
Création d’un script CGI bash : Commencez par un simple script Bash qui génère du contenu HTML. Utilisez votre éditeur de texte préféré pour créer un fichier nommé
example-bash.shdans le répertoire/usr/lib/cgi-bin/.#!/bin/bash echo "Content-type: text/html" echo "" echo "<html><head><title>CGI Bash Example</title></head><body>" echo "<h1>Hello from Bash CGI!</h1>" echo "</body></html>"Enregistrez le script et rendez-le exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-bash.shCréation d’un script CGI Python : Les scripts Python peuvent également servir à des fins CGI. Créez un fichier nommé
example-python.pydans le répertoire/usr/lib/cgi-bin/.#!/usr/bin/python3 print("Content-type: text/html\n\n") print("<html><head><title>CGI Python Example</title></head><body>") print("<h1>Hello from Python CGI!</h1>") print("</body></html>")Enregistrez le script et rendez-le exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-python.pyCréation d’un script CGI Perl : Perl est un autre langage populaire pour les scripts CGI. Créez un fichier nommé
example-perl.pldans le répertoire/usr/lib/cgi-bin/.#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><head><title>CGI Perl Example</title></head><body>"; print "<h1>Hello from Perl CGI!</h1>"; print "</body></html>";Enregistrez le script et rendez-le exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-perl.plCréation d’un script CGI C : C peut également être utilisé pour les scripts CGI afin de gérer des tâches de traitement plus complexes. Tout d’abord, assurez-vous que le compilateur GCC est installé sur votre système :
sudo apt install gccEnsuite, créez un fichier
nommé example-c.cdans le répertoire/usr/lib/cgi-bin/:#include <stdio.h> int main(void) { printf("Content-Type: text/html\n\n"); printf("<html><head><title>CGI C Example</title></head><body>"); printf("<h1>Hello from C CGI!</h1>"); printf("</body></html>"); return 0; }Compilez le programme C pour créer un exécutable adapté au traitement CGI :
sudo gcc -o /usr/lib/cgi-bin/example-c /usr/lib/cgi-bin/example-c.cScript CGI Ruby : Ruby est un langage de script facile à utiliser, idéal pour les scripts rapides. Tout d’abord, assurez-vous que Ruby est installé :
sudo apt install rubyCréez un fichier nommé
example-ruby.rbdans le répertoire/usr/lib/cgi-bin/:#!/usr/bin/ruby puts "Content-type: text/html\n\n" puts "<html><head><title>CGI Ruby Example</title></head><body>" puts "<h1>Hello from Ruby CGI!</h1>" puts "</body></html>"Enregistrez ce script et rendez-le exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-ruby.rbCe script génère du contenu HTML, similaire aux exemples précédents, mais en utilisant Ruby.
Node.js Script CGI : Node.js est généralement utilisé pour les applications serveur complètes, mais peut exécuter des scripts CGI avec une configuration appropriée. Installez d’abord Node.js :
sudo apt-get install nodejsCréez un fichier nommé
example-node.jsdans le répertoire/usr/lib/cgi-bin/:#!/usr/bin/node console.log("Content-type: text/html\n\n"); console.log("<html><head><title>CGI Node.js Example</title></head><body>"); console.log("<h1>Hello from Node.js CGI!</h1>"); console.log("</body></html>");Rendez le script exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-node.jsScript PHP CGI : PHP peut également être utilisé comme un script CGI. Installez l’interface de ligne de commande PHP si elle n’est pas déjà disponible :
sudo apt install php-cliCréez un fichier nommé
example-php.phpdans le répertoire/usr/lib/cgi-bin/:#!/usr/bin/php <?php echo "Content-type: text/html\n\n"; echo "<html><head><title>CGI PHP Example</title></head><body>"; echo "<h1>Hello from PHP CGI!</h1>"; echo "</body></html>";Modifiez le fichier pour qu’il soit exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-php.phpPassez au script CGI : Go est connu pour ses performances et son efficacité. Installer Go :
sudo apt install golang-goCréez un script Go nommé
example-go.godans le répertoire/usr/lib/cgi-bin/:// File: example-go.go package main import "fmt" func main() { fmt.Println("Content-type: text/html\n\n") fmt.Println("<html><head><title>CGI Go Example</title></head><body>") fmt.Println("<h1>Hello from Go CGI!</h1>") fmt.Println("</body></html>") }Compilez le programme Go et rendez l’exécutable :
sudo go build -o /usr/lib/cgi-bin/example-go /usr/lib/cgi-bin/example-go.goScript CGI Tcl : Tcl est un autre langage de script adapté aux scripts CGI. Installez Tcl :
sudo apt install tclCréez un script Tcl nommé
example-tcl.tcldans le répertoire/usr/lib/cgi-bin/:#!/usr/bin/tclsh puts "Content-type: text/html\n\n" puts "<html><head><title>CGI Tcl Example</title></head><body>" puts "<h1>Hello from Tcl CGI!</h1>" puts "</body></html>"Rendez le script exécutable :
sudo chmod +x /usr/lib/cgi-bin/example-tcl.tcl
Ce script envoie des en-têtes HTTP et du contenu HTML en sortie, qui est affiché dans un navigateur Web.
Ce script remplit une fonction similaire à celle du script Bash, en utilisant Python pour générer du code HTML.
Ce script Perl génère du HTML dans le navigateur, démontrant comment les scripts CGI fonctionnent en Perl.
Cette étape compile votre code source C dans un exécutable nommé example-c, qui est stocké dans le répertoire CGI, ce qui lui permet d’être exécuté en tant que script CGI par le serveur Web. Cet exemple montre comment générer du contenu HTML à l’aide d’un programme C, compilé sous la forme d’un script CGI.
Cet exemple utilise JavaScript dans un environnement Node.js pour diffuser du contenu CGI.
Ce script PHP génère du contenu HTML lorsqu’il est accessible via un serveur Web.
Ce script utilise Go pour produire une sortie HTML à des fins CGI.
Ce script démontre les capacités CGI en utilisant Tcl pour générer du contenu HTML.
Test des scripts CGI
Après avoir créé des scripts CGI dans différents langages de programmation, il est crucial de les tester pour s’assurer qu’ils fonctionnent correctement. Cela implique d’accéder à chaque script via un navigateur Web pour vérifier qu’il s’exécute et affiche la sortie prévue.
Accès aux scripts CGI : Utilisez votre navigateur Web pour accéder à chaque script CGI que vous avez créé. Par exemple, pour accéder à un script CGI Bash, vous pouvez utiliser :
http://cgi-example.local/cgi-bin/example-bash.sh- Affichage des sorties CGI : Lors de l’accès aux URL de vos scripts, votre serveur Web les exécute et envoie leur sortie sous forme de page Web. Vérifiez que la sortie s’affiche correctement et qu’elle reflète ce qui est attendu du script. Cela confirme que le script fonctionne correctement et que le serveur est correctement configuré pour gérer les scripts CGI.
De même, remplacez example-bash.sh par le nom d’autres scripts, comme example-python.py, example-perl.pl, example-ruby.rb, etc., pour tester ces scripts.
Conclusion
Bien qu’il puisse être considéré comme désuet, CGI offre un moyen puissant d’intégrer des scripts de programmation externes dans l’environnement Web pour une gestion efficace du système. En suivant ce guide, vous pouvez déployer des scripts CGI pour diverses tâches d’administration et de surveillance sur vos serveurs Linux.
