< Webrick : un petit serveur http tres simple en ruby | Roozeec Linux Blog
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Webrick : un petit serveur http tres simple en ruby

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( :P ort => 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....

Si vous avez aimé cet article, merci de voter pour lui ! :


Articles qui peuvent vous intéresser:

  1. Ruby on rails !
  2. Un serveur WEB en python sous Linux
  3. Firewall et Serveur WEB sous Linux
  4. Konversation : Un programme IRC simple
  5. programmation XUL
Vous pouvez ajouter un commentaire, ou un trackback à partir de votre site.


Contrat Creative Commons
Cet article est sous licence Creative Commons Paternité
Partage des Conditions Initiales à l'Identique 2.0 France License

7 Responses to “Webrick : un petit serveur http tres simple en ruby”

  1. nyquist dit :

    Bonjour j’ai un problème pour visualiser cette page avec firefox 2.0.0.4 sous linux festy 386 (plantage en beauté).

    message d’erreur :

    The program ‘Gecko’ received an X Window System error.
    This probably reflects a bug in the program.
    The error was ‘BadMatch (invalid parameter attributes)’.
    (Details: serial 120 error_code 8 request_code 145 minor_code 3)
    (Note to programmers: normally, X errors are reported asynchronously;
    that is, you will receive the error a while after causing it.
    To debug your program, run it with the –sync command line
    option to change this behavior. You can then get a meaningful
    backtrace from your debugger if you break on the gdk_x_error() function.)

    C’est surement du au plugin (flash?) utilisé pour visualisé la fenetre en dessous de « autoroll ».

    Cordialement

  2. nyquist dit :

    une simple erreur de ma part : plug-in flash non installé (désolé pour le bruit)

  3. manuker dit :

    Merci pour ce petit mot très sympathique,
    à garder sous le coude!

  4. Pierre Rigal dit :

    Ca fait plaisir de voir d’autre Railseurs sur le planet ;)

    J’ai beaucoup utilisé webrick moi aussi dans les premiers temps, mais après je me suis très vite tourné vers mongrel, un autre serveur pour ruby mais beaucoup plus performant et surtout adapté pour une mise en production…
    D’ailleurs les dernières version de RoR (Rubyonrails) préconisent mongrel plutôt que webrick comme serveur.

    L’ide Radrails (Aptana) intègre d’ailleurs la gestion des serveurs mongrels et webrick pour les projets Ror ce qui est très pratique pour le développement !

  5. Skateinmars dit :

    Si tu aimes les serveurs legers je te conseille nginx :
    http://nginx.net/ (il y a un paquet ubuntu)

    Super efficace sur les applis en cgi (dont rails), en proxy devant apache… que du bon quoi :)

  6. _Enchained dit :

    Je n’avais jamais trop touché à Ruby etc jusqu’à maintenant et le site que tu as donnée « try ruby » est vraiment super bien fait :)

    Voilà qui donne envie de mettre le nez dans ce langage qui a l’air bien sympa (reste plus qu’à trouver le temps…)

Leave a Reply

Propulsé par WordPress


Contrat Creative Commons
Site sous licence Creative Commons Paternité
Partage des Conditions Initiales à l'Identique 2.0 France License
Web Analytics