Déployer une application meteor sur son propre serveur
Après avoir testé meteor-up pour le déploiement d’une application meteor sans succès, j’ai décidé d’opter pour le déploiement manuel de celle-ci qui reste très simple à mettre en place.
Mis à jour le 13 Mars 2015 pour refléter les quelques changements apportés à Meteor.
Pré-requis côté serveur
Je ne passerai pas sur l’installation de ces dépendances, les sites officiels sont suffisament fournit à ce sujet.
- node.js
- mongodb
- forever qui nous permettra d’assurer que l’application se relance après un crash, il existe plusieurs alternatives (upstart, pm2, …)
Packaging de l’application
Dans le dossier de votre application meteor, il vous suffit d’exécuter la commande suivante :
meteor build dist/
Elle vous générera une archive app_name.tar.gz
qui contient votre application, prête à être déployée. Cette archive comporte par ailleur un fichier README
qui vous explique la marche à suivre.
Déploiement
Pour le déploiement, nous allons utiliser rsync afin de transférer le répertoire bundle/
sur le serveur :
cd dist/
rsync -e ssh app_name.tar.gz user@host:/var/www/mon_app
Notre application est sur notre serveur, il ne reste plus qu’à nous connecter en ssh sur la machine, à extraire l’archive et à installer les quelques dépendances nécessaires :
cd /var/www/mon_app/
tar xvzf app_name.tar.gz
cd bundle/programs/server
npm install
Lancement
Dernière étape, exporter les variables d’environnement nécessaires à l’exécution de notre application notamment :
export MONGO_URL='mongodb://localhost:27017/ma_db'
export ROOT_URL='http://mon_app.com'
export BIND_IP=127.0.0.1
export PORT=3000
On précise donc respectivement l’adresse de la base mongo, l’adresse de base de l’accès au site, l’adresse sur laquelle se binder et enfin le port à utiliser.
Comme vous l’aurez remarqué, ici, j’ai fais le choix d’écouter uniquement en local sur le port 3000, il faudra alors utiliser un reverse proxy type nginx pour rediriger les accès extérieur vers http://localhost:3000
.
Il est maintenant temps de lancer l’application via forever
:
cd /var/www/mon_app
forever start main.js
Si vous avez correctement configuré votre reverse proxy, vous devriez pouvoir accéder à votre application depuis l’extérieur.
En voilà du travail bien fait !