[Tuto] Déployer gratuitement votre application Node.js avec OpenShift

OpenShift-Logo Je vais vous présenter comment déployer gratuitement une application Node.js avec OpenShift. OpenShift est une solution Cloud PaaS (Platform as a Service) produite par Red Hat. L’offre est gratuite pour trois « gears » (un gears équivaut à une application) et elle n’est pas limité à Node.js. Vous pouvez installer des environnements Java, PHP, Python, Ruby, Perl et Go.

Création d’un compte OpenShift

Pour commencer, il nous faut un compte OpenShift, pour cela rendez-vous sur le site officiel et choisissez l’offre Online. Remplissez les champs demandés, cliquez sur le lien de vérification dans l’e-mail de confirmation, puis accepter les conditions d’utilisation.

Ajouter un domaine

Pour ajouter un domaine identifiez-vous et cliquez sur l’onglet Settings, remplissez le champ Domain name, pour ma part ça saura webiose.

Ajouter votre clé SSH

Nous allons maintenant ajouter notre clé SSH pour les prochaines manipulations. Toujours dans l’onglet Settings, faite un simple copier coller de votre clé SSH publique dans le champ prévu puis cliquez sur save.

Installation du client OpenShift

Dans la suite de ce tutoriel, nous allons utiliser l’outil en ligne de commande fourni par Red Hat qui va nous offrir plus de possibilités que l’interface Web. Si la ligne de commande vous rebute sachez que vous pouvez utiliser l’interface web, elle est plutôt claire et intuitive, je ne ferais donc pas de description à se sujet.

OpenShift utilise Git pour déployer les applications, je vous invite à lire mon tutoriel décrivant les procédures d’installation et de manipulation de Git, si se n’est pas déjà fais. L’outil est un gem Ruby, il nous faut donc installer les packages Ruby :

> sudo apt-get install ruby-full rubygems
> sudo gem install rubygems-update
> sudo update_rubygems

Pour tester Ruby :

> ruby -e 'puts "Welcome to Ruby"'
Welcome to Ruby

Installer l’outil :

> sudo gem install rhc
> sudo gem update rhc

Une fois installé, nous devons configurer l’outil avec votre compte OpenShift :

> rhc setup

Création d’une instance PaaS Node.js sur OpenShift

Maintenant que l’outil rhc est installé et configuré nous pouvons commencer. Nous allons créer une instance avec son dépôt Git associer. Avant nous pouvons lister toute les types d’applications (appelé cartridge) avec la commende rhc cartridges :

> sudo rhc cartridges
jbossas-7           JBoss Application Server 7              web
jboss-dv-6.0.0 (!)  JBoss Data Virtualization 6             web
jbosseap-6 (*)      JBoss Enterprise Application Platform 6 web
jenkins-1           Jenkins Server                          web
nodejs-0.10         Node.js 0.10                            web
nodejs-0.6          Node.js 0.6                             web
perl-5.10           Perl 5.10                               web
php-5.3             PHP 5.3                                 web
php-5.4             PHP 5.4                                 web
zend-6.1            PHP 5.4 with Zend Server 6.1            web
[...]

Pour installer une instance avec Node.js, exécutez la commande rhc app create :

> sudo rhc app create -a demoExpress -t nodejs-0.10

Nous venons de créer une instance avec une application Express.js par défaut qui à pour nom demoExpress, l’application est maintenant disponible à l’adresse http://appName-domaineName.rhcloud.com.

Ajouter un cartridges

Comme nous l’avons vu, il y a une multitude de cartridges disponibles. Nous allons ajouter MongoDB à notre instance demoExpress. Pour cela utilisez la commande rhc cartridge-add :

> rhc cartridge-add -a demoExpress -c mongodb-2.4

Nous installons également ajouter un utilitaire pour MongoDB :

> rhc cartridge-add -a demoExpress -c rockmongo-1.1

Notez que l’ajout de cartridge dans une application n’enlève pas de gear qui est limité à trois avec l’offre Online. Nous pouvons donc créer gratuitement trois instances PaaS (gear) avec plusieurs cartridge chacun.

Les variables d’environnements

Le gear contient des variables d’environnements pré-défies par défaut.

Variables d’applications

OPENSHIFT_APP_DNS Le nom de domaine complet de l’application
OPENSHIFT_NODEJS_IP L’adresse IP de l’application
OPENSHIFT_NODEJS_PORT Le port de l’application

Variables de base de données

OPENSHIFT_MONGODB_DB_HOST L’adresse IP de la BDD
OPENSHIFT_MONGODB_DB_PORT Le port de la BDD
OPENSHIFT_MONGODB_DB_USERNAME Le nom de l’utilisateur de la BDD
OPENSHIFT_MONGODB_DB_PASSWORD Le mot de passe de l’utilisateur de la BDD
OPENSHIFT_MONGODB_DB_URL L’URL de connexion préformaté

Variables des dossiers

OPENSHIFT_DATA_DIR Le dossier des données
OPENSHIFT_<cartridge>_LOG_DIR Le dossier des logs du cartridge
OPENSHIFT_<cartridge>_DB_LOG_DIR Le dossier des logs du cartridge de BDD
OPENSHIFT_REPO_DIR Le dossier contenant l’application déployé
OPENSHIFT_TMP_DIR Le dossier temporaire isolé

Déployer son application

Openshift utilise Git pour déployer notre application, dans cet exemple,  je vais déployer l’application Express.js réaliser dans l’article précédant.

Commencer par cloner le dépôt en local :

> rhc git-clone -a demoExpress
> cd demoExpress

Ajouter le projet Express.js 4 et un gitignore :

> nano .gitignore
.idea
*.log
node_modules/*

Modifier les variables d’environnements :

> nano ./bin/www
[...]
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 3000);
app.set('host', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');
[...]

Modifier le package.json pour indiquer au gear le fichier de démarrage Express.js :

> nano package.json
[...]
"main": "./bin/www",
[...]

Une fois le projet prêt, nous pouvons le déployer. Pour cela il suffit de faire un git push :

> git add .
> git commit -m "Mise en place du projet"
> git push

Le serveur va récupérer la dernière version du projet, lancer un npm install pour les dépendances et démarrer le serveur Node.js.

Conclusion

Nous venons de voir comment installer et utiliser l’outil rhc pour créer une PaaS sur le cloud OpenShift, ajouter des services et déployer notre application avec Git, de façon simple et gratuite.

Une réflexion au sujet de « [Tuto] Déployer gratuitement votre application Node.js avec OpenShift »

Laisser un commentaire