# Comment déployer une application Web CGI faite avec Gambas

Toutes les informations sont dans le [wiki] officiel de Gambas sur une page qui s'appelle [|How To Get Gambas Web Started].
Vous allez utiliser les scripts CGI. En gros, à chaque fois qu'un utilisateur distant demandera une information, une requête HTTP arrivera au serveur. Le serveur web Apache2 démarrera votre programme Gambas à chaque fois qu'il reçoit une requête ! Vous avez bien compris : votre programme va être démarré des milliers de fois ! Le programme Gambas produira une réponse qui sera du code HTML. Ce code sera renvoyé par le serveur web à l'utilisateur distant.
Il y a plusieurs verbes qui permettent de typer les requêtes. Parmi ces verbes, il y a GET et POST. Une requête GET est une simple demande de page web. Une requête POST nous demande de traiter des données que l'utilisateur nous envoie. Généralement, c'est une requête POST que le serveur web Apache2 reçoit lorsque l'utilisateur a saisi un formulaire sinon c'est une requête GET.
En production, il faudrait plusieurs serveurs [|proxy inverse] pour faire de la répartition de charge et permettre l'utilisation du protocole [|HTTPS] afin de crypter les données.
Dans cet exemple, nous allons faire un simple serveur directement exposé sur votre réseau en local. Je pars du principe que c'est votre ordinateur et que vous avez les permissions administrateur.

## Procédure

Je pars du principe que vous avez suivi les tutoriels précédents et donc que vous avez Gambas3 et que vous disposez d'un projet Gambas de type application Web CGI fonctionnel pour tester.
Installez le serveur Apache2 :
* Ouvrez le gestionnaire de logiciel de Linux Mint (mintinstall) puis
* recherchez et installez Apache2 !
Vérifiez que le serveur est déjà en fonction :
* ouvrez votre navigateur Firefox par exemple puis
* utilisez le raccourci CTRL+L pour sélectionnez l'URL courante
* Tapez "localhost" puis Entrée !
Si vous voyez la page par défaut, c'est gagné !
Stoppez l'exécution du serveur
* Ouvrez un terminal (gnome-terminal par exemple)
* sudo service apache2 stop
Vous allez modifier les options du serveur dans le fichier /etc/apache2/apache2.conf ! C'est là où la configuration globale du serveur est définie.
* Ouvrez une console puis
* sudo gedit /etc/apache2/apache2.conf &
* ajoutez les deux lignes à la fin :
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AddHandler cgi-script .cgi .sh .pl
* sauvez, fermez !
Mettez en fonction les modules cgi à l'aide de a2enmod ! "a2enmod" est un script qui va configurer les modules c'est à dire activer des extensions :
* Dans votre terminal, tapez la commande :
* sudo a2enmod cgi cgid alias userdir
* Tapez entrée
Redémarrez le serveur web :
* Dans votre terminal, tapez la commande :
* sudo service apache2 restart
* Tapez entrée
Ouvrez ou activez l'EDI de Gambas !
Puis générez votre exécutable :
* Projet
* Générer
* Exécutable
Affichez un terminal dans votre projet :
* Outil
* Ouvrir un terminal
Copiez votre exécutable dans le dossier des exécutables cgi du serveur web :
* Tapez la commande
* sudo cp /home/votre_dosser/Documents/votre_projet/executable.gambas /usr/lib/cgi-bin/
Placez-vous dans le dossier des scripts CGI :
* cd /usr/lib/cgi-bin/
Placez votre terminal dans le dossier racine du serveur web :
* cd /var/www/html
Backupez l'ancien fichier :
* sudo mv index.html _old_index.html
Créez la page index.html qui est la base de votre site internet !
* sudo gedit index.html &
Et définissez le contenu avec un copier-coller du code ci-dessous :
C'est tout. Testez votre application !
* Démarrez ou activez Firefox puis
* CTRL + L puis
* http://localhost
Pour voir votre site depuis d'autres, vous devez paramétrer votre firewall pour laisser passer le port 80 et ça se fait sur la machine qui fait fonctionner Apache. Par exemple :
* sudo ufw allow 80
Vous devez ensuite connaître l'adresse IP de votre serveur web :
* ifconfig
* elle ressemblera à 192.168.x.x
Au final, depuis un autre ordinateur, appelez la page comme ceci :
* Ouvrez un navigateur !
* CTRL + L puis
* http://192.168.x.x
Vous pouvez donc créer des applications Web. C'est chouette !