Comment déployer votre première application Node.js sur Heroku?

Vous avez sans doute déjà entendu parler de Node.js, Ruby, Python, Java. De plus en plus, les développeurs et les entreprises se tournent vers l'infonuagique pour exécuter leurs applications sans se casser la tête niveau administration système. Bref, afin de vous démontrer la simplicité du déploiement d'une application dans le cloud, voici les quelques étapes nécessaires à effectuer.

Pour cet exemple, nous allons utiliser la PaaS offerte par Heroku. Celle-ci est gratuite, si votre application ne dépasse pas les limites imposées. Pour le code que nous allons déployer, croyez-moi, elle s'y conformera sans aucun problème ;)!

Procédure

  • Créez vous un compte sur le site Web de Heroku;
  • Installez la dernière version du Heroku Toolbelt pour votre système d'exploitation. Celui-ci comprend: le client Heroku CLI, pour se connecter à la plateforme en ligne de commande; Foreman, une application pour exécuter vos applications en local; Git, un outil de révision pour contrôler votre code;
  • Créez un répertoire dans lequel vous souhaitez développer votre application et accédez au répertoire via la ligne de commande;
  • Générez un fichier nommé server.js contenant le contenu suivant à la racine du répertoire (ce fichier créé un serveur à l'écoute des requêtes HTTP sur le port désigné par Heroku (process.env.PORT) ou bien sur le port 8080);
var http = require('http');  
http.createServer(function (req, res) {  
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(process.env.PORT || 8080, '127.0.0.1');
console.log('Server currently listening...');  
  • Générez un fichier nommé Procfile à la racine de votre répertoire contenant la commande à exécuter pour démarrer votre application. Dans notre cas, voici le code à y insérer:
web: node server.js  
  • Générez un fichier nommé package.json afin de déclarer les informations sur votre application ainsi que ses dépendances, contenant le texte suivant:
{
  "name": "hello-world",
  "author": "votre nom ;)",
  "license": "BSD",
  "version": "0.0.1",
  "description": "Mon premier Hello World sur Heroku",
  "main": "server.js",
  "dependencies": {},
  "devDependencies": {}, 
  "engines": {
    "node": "0.8.14",
    "npm": "1.1.65"
  }
}
  • Exécutez la commande heroku login en ligne de commande afin de vous connecter à votre compte, répondez aux questions reliées à votre compte et acceptez la génération d'une clée pour la connexion SSH;
  • Exécutez la commande foreman start pour tester votre application en local. Si vous avez effectué les étapes précédentes correctement, vous devriez avoir accès à votre application à partir de votre navigateur à l'adresse http://localhost:5000/;
  • Exécutez les commandes suivantes afin d'initialiser Git et effectuer votre premier commit:
git init  
git add .  
git commit -m "init"  
  • Créez votre application sur Heroku en exécutant la commande heroku apps:create nom_de_votre_application (celui-ci doit être unique parmi les applications hébergées sur le service). Si vous ne trouvez pas de nom inutilisé, utilisez la commande heroku create qui vous génère une application avec un nom aléatoire.
  • Effectuez un push de votre application avec la commande git push heroku master pour mettre à jour le contenu de votre application sur les serveurs;
  • Testez votre application en copiant l'adresse retournée par la précédente commande ou bien en exécutant heroku open dans le répertoire de votre application.

Conclusion

Voilà! Maintenant que vous avez configuré votre application et que vous l'avez déployée, celle-ci est disponible à tous à partir de l'adresse que vous avez en main!

Si vous souhaitez effectuer des modifications à votre application, rien de plus simple! Exécutez dans le répertoire git add . pour ajouter les modifications à votre commit, git commit -m "raison du commit" et git push heroku master pour pousser sur le serveur!

Également, si vous souhaitez utiliser votre nom de domaine ou un sous domaine, vous n'avez qu'à vous connecter au panneau de contrôle de Heroku pour configurer le tout!