Mis à jour le 13 Mars 2015 pour refléter les quelques changements apportés à Meteor.

Logo 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 !