mercredi 30 mars 2011

Déploiement et hébergement Ruby on Rails sur Heroku

Heroku

Heroku est un hébergeur Ruby on Rails dans le cloud en mode PAAS (Platform As A Service). C'est de très loin la façon la plus simple pour déployer et héberger des applications Ruby on Rails. L'hébergement est gratuit pour les sites à faible trafic, y compris pour la base de données et de nombreux addons, mais est également très scalable.

Fonctionnement

La publication de votre application sur la plateforme Heroku se fait via git.
Heroku propose une api très complète de gestion de votre application, utilisable en ligne de comande :
  • Consultation des logs
  • Gestion des utilsateurs
  • Tâches Rake
La grande force d'Heroku sont la grande quantitié d'addons disponibles, la plupart gratuits pour une utilisation basique.
  • MongoDB via MongoHQ : Gratuit jusqu'à 16Mo
  • CouchDB via Cloudant : Gratuit jusqu'à 250Mo.
  • Redis via Redis To Go : Gratuit jusqu'à 5Mo, sans persistance.
  • Solr : payant, à partir de 20$.
  • ...

Installation de la gem Heroku
Ensuite, pour pouvoir utiliser Heroku dans votre application Rails, ajoutez la gem à votre fichier Gemfile :
source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem "heroku"

Utilisation

Mise en place de Git
Heroku nécessitant git, la première chose à faire est de versionner votre application :
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "new app"
Created initial commit 5df2d09: new app

Evidemment, Heroku va avoir besoin de notre clef publique pour pouvoir accepter les push, il faut donc les générer si ce n'est pas déjà fait, sinon simplement les ajouter :
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
$ heroku keys:add
Uploading ssh public key /home/joe/.ssh/id_rsa.pub

Déploiement de l'application
Ensuite, il faut créer l'application Heroku sur la plateforme, via l'api en ligne de commande :
$ heroku create appname
Enter your Heroku credentials.
Email: joe@doe.com
Password: 
Uploading ssh public key /home/joe/.ssh/id_rsa.pub
Created http://appname.heroku.com/ | git@heroku.com:appname.git
Git remote heroku added

Une application appname vierge nous attend donc chez Heroku, il suffit de pousser notre application avec git pour la voir en ligne immédiatement :
$ git push heroku master
Counting objects: 65, done.
Compressing objects: 100% (58/58), done.
Writing objects: 100% (65/65), 80.54 KiB, done.
Total 65 (delta 14), reused 0 (delta 0)

----- Heroku receiving push
----- Rails app detected
       Compiled slug size is 0.1MB
----- Launching....... done
       App deployed to Heroku

To git@heroku.com:appname.git
   3b3ed7c..350b521  master -> master

Si notre application utilise une base de données, il est possible de la bootstrapper directement :
$ heroku rake db:migrate
$ heroku rake db:seed

Mise à jour
Lors des prochaines mise à jour de notre application, tout ce que nous aurons à faire est :
$ git push heroku master

Conclusion

Avec Heroku, vous avez donc la possibilité de mettre en ligne en quelques secondes une application Ruby on Rails, avec un grand nombre d'addons vous permettant d'avoir une base application très solide : par exemple une stack Ruby on Rails / MongoDB / Redis / SOLR.

4 commentaires:

  1. Bonjour, merci pour le tutoriel
    j'ai un probléme, tout marche trés bien jusqu'à l'étape de mise à jour.
    je tape la commande:
    git push heroku master
    -->Everything up-to-date
    sauf que lorsque je fais un : heroku open
    le navigateur ouvre la derniére version de l'application sans tenir compte des modifications.
    Si vous avez une idée, veuillez me répondre
    merci d'avance et bonne journée à vous

    RépondreSupprimer
  2. Bonjour,

    Il faut d'abord s'assurer d'avoir commiter les modifications : [$ git commit -a -m "my message"] (voir un [$ git add .] avant si il y a des nouveaux fichiers)

    RépondreSupprimer
  3. Bonjour, quelqu'un aurait déjà fais l'expérience de prendre un hébergement payant chez heroku ? Si oui comment estimer les besoins initiaux en workers/dynos ? ^^

    RépondreSupprimer
  4. Bonjour, notre société propose un service d'hébergement très abordable, et très inspiré d'Heroku.

    Vous trouverez de plus amples informations sur cette page : http://www.ouvrages-web.fr/presentation-hebergement-ruby-on-rails , ou bien en nous contactant.

    RépondreSupprimer