J’ai toujours aimé programmer et j’aime toujours programmer… En ce moment je suis dans une phase de programmation en ruby. Ce langage est vraiment sympa, de plus un ensemble de scripts (framework) basé sur ce langage est vraiment à la mode en ce moment pour les applications web : Ruby On rails . Cependant je ne vais pas parler ici de ruby on rails mais plutôt monter comment se créer un petit serveur WEB à soi sans grande configuration comme le nécessite Apache. Bien sur l’utilisation ne sera pas la même et ne supportera pas une trop grande charge. A noter que Webrick fait partie intégrante de rub On rails pour tester une application WEB.

Sur Linux, il existe une librairie en Ruby toute prête pour faire un serveur HTTP : webrick

Webrick est donc une librairie ruby pour programmer des serveurs HTTP (serveurs web). C’est très simple d’installation , il faut les paquets suivants :

  • Ruby : le langage lui-lême
  • libwebrick-ruby : La librairie

Les sites sur lequels j’ai trouve l’information sont les suivants :

Je passe sur l’installation rapidement, sur ubuntu vous utilisez synaptic ou bien la ligne de commande : sudo apt-get install ruby libwebrick-ruby

Et maintenant ca se passe comment ? Très simple, il suffit d’écrire un petit fichier texte. Bien sur , il va sans dire qu’il faut connaitre un peu le ruby, le html et des connaissances en programmation.

Voici un premier exemple de serveur web dans le fichier : mon_serveur.rb



#!/usr/bin/ruby
require ‘webrick’
include WEBrick

class AccueilServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
res.body = “<html><body>Bonjour David !</body></html>”
res[’Content-Type’] = “text/html”
end
end

# ———————————————–
# Demarrage et configuration du serveur
# ———————————————–
s = HTTPServer.new( :Port => 2000 )
s.mount(”/”, AccueilServlet)
trap(”INT”){ s.shutdown }
s.start

Explication :

  • En rouge : Indication du langage et inclusion de la librarie webrick
  • En bleu : La page d’accueil
  • En orange : le démarrage du serveur

Pour démarrer le serveur , tout d’abord il faut autoriser l’exécution du fichier avec la commande : chmod u+x mon_serveur.rb et ensuite lancer le script : ./mon_serveur.rb. A ce moment, des messages apparaissent indiquant que le serveur s’est bien lancé :

[2007-07-05 22:46:06] INFO WEBrick 1.3.1
[2007-07-05 22:46:06] INFO ruby 1.8.5 (2006-08-25) [i486-linux]
[2007-07-05 22:46:11] INFO WEBrick::HTTPServer#start: pid=4755 port=2000

Le port du serveur à utiliser est 2000 (ceci a été configuré sur la première ligne en orange). Donc maintenant pour avoir la page web, il suffit de lancer votre navigateur et de pointer sur : http://localhost:2000 . Et à ce moment Bonjour David! Apparait. Et voilà c’est simple non ?

Informations :

1.) Si par exemple maintenant, on veut pointer vers une adresse du type : http://localhost:2000/rebonjour , comment faut-il faire ? En fait ici c’est là définition d’une nouvelle page. Ceci se fait avec la commande mount de la même manière que /. On ecrira donc :

s.mount(”/rebonjour”,RebonjourServlet)

Et dans RebonjourServelet on écrira la page ou on fera appel à un fichier HTML pur par exemple.

2.) Comment faire pour récupérer des informations de formulaires ? Très simple aussi. Imaginons un formulaire avec le champ suivant : texte1. Celui ci est défini avec la formule html : input type=”text” name=”text1″. Pour récupérer sa valeur après la soumission du formulaire, il suffit de définir une variable per exemple : montexte1 = req.query[’text1′]

Par exemple :

class Texte1Servlet < HTTPServlet::AbstractServlet
def do_POST(req, res)
if req.query[’texte1′] == ’salut’
message = ‘coucou’
else
message = ‘bonjour’
end
res.body = message
res[’Content-Type’] = “text/html”
end
end

Voilà une autre vue de serveur WEB en un autre langage que le commun et populaire PHP. Il y a aussi le langage python et karrigell que j’avais détaillé aussi il y a quelques temps. C’est sympa de découvrir d’autres possibilités que apache + php….