Recherche de site Web

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

FAIT INTÉRESSANT SUR CGI AVEC APACHE SUR LINUX
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.

  1. 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 apache2
  2. 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.

  3. Activation 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 cgi
  4. Cette commande active le module 'cgi', qui est nécessaire pour gérer l’exécution des scripts CGI.

  5. Configuration 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>
  6. 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é).

  7. 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
  8. 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.

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++.

  1. 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.sh dans 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.sh
  2. Ce script envoie des en-têtes HTTP et du contenu HTML en sortie, qui est affiché dans un navigateur Web.

  3. Création d’un script CGI Python : Les scripts Python peuvent également servir à des fins CGI. Créez un fichier nommé example-python.py dans 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.py
  4. Ce script remplit une fonction similaire à celle du script Bash, en utilisant Python pour générer du code HTML.

  5. Création d’un script CGI Perl : Perl est un autre langage populaire pour les scripts CGI. Créez un fichier nommé example-perl.pl dans 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.pl
  6. Ce script Perl génère du HTML dans le navigateur, démontrant comment les scripts CGI fonctionnent en Perl.

  7. Cré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 gcc

    Ensuite, créez un fichier nommé example-c.c dans 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.c
  8. 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.

  9. Script 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 ruby

    Créez un fichier nommé example-ruby.rb dans 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.rb

    Ce script génère du contenu HTML, similaire aux exemples précédents, mais en utilisant Ruby.

  10. 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 nodejs

    Créez un fichier nommé example-node.js dans 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.js
  11. Cet exemple utilise JavaScript dans un environnement Node.js pour diffuser du contenu CGI.

  12. Script 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-cli

    Créez un fichier nommé example-php.php dans 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.php
  13. Ce script PHP génère du contenu HTML lorsqu’il est accessible via un serveur Web.

  14. Passez au script CGI : Go est connu pour ses performances et son efficacité. Installer Go :

    sudo apt install golang-go

    Créez un script Go nommé example-go.go dans 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.go
  15. Ce script utilise Go pour produire une sortie HTML à des fins CGI.

  16. Script CGI Tcl : Tcl est un autre langage de script adapté aux scripts CGI. Installez Tcl :

    sudo apt install tcl

    Créez un script Tcl nommé example-tcl.tcl dans 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
  17. 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.

  1. 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
  2. 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.

  3. 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.

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.

Articles connexes: