Date de publication:
Commentaires:0

Pour déployer une application Meteor js manuellement, rien de plus simple. Pas besoin d’installer ce fameux mup, qui fonctionne apparemment que quand ça l’arrange..
En même temps je déploie depuis un windows, mais bon ..

Les étapes top sont:

  • 1. Se louer un Vps. (un ubuntu 14 LTS chez ovh par exemple)
  • 2. Installer NodeJs et MongoDB sur le serveur de destination.
  • 3. Créer un script de déploiement pour pas devoir le refaire à la main chaque fois.
  • 4. Faire du café

Bon donc en premier lieu, on installe nodejs et mongodb sur le serveur de destination, ce qui nous donne:

// On télécharge nodejs sur leur site https://nodejs.org/fr/download/
// Moi j'ai été choper la version qui va bien avec mon besoin
// Linux Binaries (x86/x64) => Je choisi la x64 LTS
root@vpsxxxxxx:~# wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz
// Puis je décompresse directement dans les bon dossier /usr/local (avec le paramètre -C)
root@vpsxxxxxx:~# tar xvf node-v8.9.4-linux-x64.tar.xz -C /usr/local --strip-components 1
// Strip Component permet de ne pas créer de dossier de destination
// et donc de seulement extraire le contenu.
// Puis on test si ça fonctionne
root@vpsxxxxxx:~# node -v

Si après tout cela vous obtenez un:

/usr/bin/env: ‘node’: No such file or directory

Probablement vous avez la mauvaise architecture pour ce binaire, téléchargez plutôt la version x32.

Alors à présent que passons à MongDB, et pour cela on se rend sur le site et on utilise les commandes indiqué dans la documentation!

// Importer la clef publique
// ATTENTION: la clef: xxxxx est à changer par ce qui est marqué chez eux! (même l'URL d'ailleurs)
root@vpsxxxxxx:~# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Installer la source du dl et update ( à adapter selon votre distro )
root@vpsxxxxxx:~# echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
// Recharger le package manager
root@vpsxxxxxx:~# apt-get update
// Installer mongodb (vous pouvez évidemment changer votre version en fonction de vos besoins)
root@vpsxxxxxx:~# apt-get install mongodb

Bien alors la seconde étape est réalisée!

Passons au script de déploiement, il est très personnalisé dans le sens ou chacun à une architecture précise de travail. Par exemple j’ai 3 serveurs qui sont disponible pour une application: le dev, la prod, et la pré-prod sans compter le workspace local.

Ce script est réalisé pour faire une mise en pré-prod depuis un Windows avec cygwin.

Let’s begin!

cd /cygdrive/c/Users/Angelito/workspace/app.be/
// A la racine de mon projet en local, je crée un dossier .deploy 
$ mkdir .deploy
// et un autre build, qui servira à accueillir la tarball
$ mkdir build
// On rentre dans le dossier
$ cd .deploy
// on crée les scripts de déploiement
$ touch deploy.sh
$ touch up.sh

Un petit prérequis est d’installer forever sur la machine distante

root@vpsxxxxxx:~# npm install forever --global

A partir d’ici j’ouvre les fichiers avec atom et j’ajoute dans deploy.sh

#!/bin/bash

# config
APP_DIR=/var/www/app
USER=root
HOST=vpsxxxx.ovh.net

# Script
# On se déplace dans le projet meteor
cd ../app
# On compile notre app dans le dossier build
meteor.bat build ../build --architecture os.linux.x86_64 --verbose
# on se place dans ce dossier
cd ../build
# on crée le fichier de destination sur le serveur
ssh -i ~/id_rsa.pem $USER@$HOST "mkdir -p $APP_DIR"
# on envoie notre tarball
scp -i ~/id_rsa.pem app.tar.gz $USER@$HOST:$APP_DIR
# On envoie notre script d'installation du déploiement
scp -i ~/id_rsa.pem ../.deploy/up.sh $USER@$HOST:$APP_DIR
# on rend le script executable
ssh -i ~/id_rsa.pem $USER@$HOST "chmod +x $APP_DIR/up.sh"
# on Execute le script
ssh -i ~/id_rsa.pem $USER@$HOST "$APP_DIR/up.sh"

Puis dans up.sh

#!/bin/bash

# config
APP_DIR=/var/www/app
IP=xx.xxx.xxx.xxx
PORT=3000

# Script
# On se place dans le dossier du projet
cd $APP_DIR
# décompression du projet
tar xvf app.tar.gz
# suppression de la tarball
rm app.tar.gz
# On se place dans le coeur du projet
cd bundle/programs/server/
# On lance l'installation des dépendances
npm install
# Set les différentes variables d'env
export MONGO_URL="mongodb://localhost:27017/meteor"
export ROOT_URL="http://$IP"
export BIND_IP=$IP
export PORT=$PORT
# On retourne la ou tout va commencer
cd $APP_DIR/bundle
# On exécute forever
forever start -o out.log -e err.log main.js
# Et on nettoie le fichier d'installation
rm ../up.sh

Voilà en gros comment rendre le déploiement plus simple. On peux se resservir un café, bien que j’en suis déjà à mon troisième.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Vous seriez intéressé par: