Meteor : déployer un projet sur une instance Amazon EC2

Je travaille actuellement sur une application en Meteor, n'ayant pas de serveur node.js, j'ai décidé de tester Amazon EC2. A la création d'un compte AWS, on a le droit à une instance gratuite, peu de ressource mais suffisant pour mon projet dans un permier temps.

Créer une instance EC2

Le processus est plutôt simple, il vous suffit de créer un compte amazon, si vous n'en avez pas, et de vous rendre ici : https://aws.amazon.com/fr/ec2/ pour souscrire au service EC2. Ensuite choisissez le modèle de VM qui vous intéresse, pour ma part, j'ai choisi une Ubuntu (car elle est compatible avec mup (meteor up) pour le déploiement).

Le processus de création est simple, laissez vous guider. Bien que vous puissiez profiter d'une instance gratuite, vous devrez fournir vos informations banquaires. En effet, l'utilisation est gratuite, dans une certaine limite, si vous la dépassez, vous devrez payer (https://aws.amazon.com/fr/ec2/pricing/). Aussi, je vous conseille de mettre en place une alerte en cas de dépassement du seuil, pour ma part je recevrai une alerte dès que la facture dépassera un euro, j'improviserai après smiley.

Une fois votre instance créée, vous obtiendrez les informations nécessaires à la gestion dans votre dashboard EC2 :

dashboard EC2 for my meteor app

Il vous faudra modifier les "Security groups" afin d'accèder à votre serveur en SSH ainsi que sur le port 80.

Déployer avec Meteor Up

Maintenant que vous disposez d'un hébergement pour votre projet, il va falloir le déployer. Votre instance, nouvellement créée, n'est pas prête, il faut à présent installer node.js, mongoDB ainsi qu'un server web, mais pas de panique, mup se charge de tout pour vous ! Les étapes décrites ci-dessous sont inspirées du screencast suivant : https://www.youtube.com/watch?v=11K_DSrhJzQ

Installation de mup

npm install -g mup

Initialisation

mup init

Cette commande va créer deux fichiers à la racine de votre projet :

Nous allons nous concentrer sur le premier fichier "mup.json" car c'est lui qui contient les informations concernant l'environnement cible.


{
  // Server authentication info
  "servers": [
    {
      "host": "XX.XX.XX.XXX", //IP du serveur sur lequel déployer (Public IP)
      "username": "ubuntu", //nom d'utilisateur pour la sessions ssh
      "pem": "AWS-EC2.pem" //chemin vers le certificat pour la connexion au serveur
    }
  ],

  // Install MongoDB in the server, does not destroy local MongoDB on future setup
  "setupMongo": true,

  // WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
  "setupNode": true,

  // WARNING: If nodeVersion omitted will setup 0.10.36 by default. Do not use v, only version number.
  "nodeVersion": "0.10.36",

  // Install PhantomJS in the server
  "setupPhantom": false, //désactivé pour mon test

  // Show a progress bar during the upload of the bundle to the server. 
  // Might cause an error in some rare cases if set to true, for instance in Shippable CI
  "enableUploadProgressBar": true,

  // Application name (No spaces)
  "appName": "app-name", // nom de votre application 

  // Location of app (local directory)
  "app": "/home/nitrous/code/my-project/app-folder", //chemin vers le répertoire de votre projet (celui contenant le dossier ".meteor")

  // Configure environment
  "env": {
    "ROOT_URL": "http://mondomaine.com" //URL de votre projet (Public DNS)
  },

  // Meteor Up checks if the app comes online just after the deployment
  // before mup checks that, it will wait for no. of seconds configured below
  "deployCheckWaitTime": 15
}

Tout est prêt, vous pouvez maintenant lancer l'installation du serveur grâce à la commande suivante :

mup setup

Cette commande va installer node.js, meteor et mongoDB sur votre instance EC2. Vous êtes maintenant prêt à déployer votre projet meteor sur Amazon EC2 !

Déploiement

Une seule commande suffit :

mup deploy

Rendez vous sur l'URL de votre instance EC2 et adminrez le résultat : votre application meteor est en ligne.

 

 

“ Checkout Kadira!
  It's the best way to monitor performance of your app.
  Visit: https://kadira.io/mup ”
Building Started: /home/nitrous/code/std-generator-v2/app
Started TaskList: Deploy app 'std-generator' (linux)
[52.17.141.218] - Uploading bundle
[52.17.141.218] - Uploading bundle: SUCCESS
[52.17.141.218] - Setting up Environment Variables
[52.17.141.218] - Setting up Environment Variables: SUCCESS
[52.17.141.218] - Invoking deployment process
[52.17.141.218] - Invoking deployment process: SUCCESS
➜  std-generator-v2 git:(dev) ✗ vim .gitignore
“ Checkout Kadira!
  It's the best way to monitor performance of your app.
  Visit: https://kadira.io/mup ”
Building Started: /home/nitrous/code/std-generator-v2/app
Started TaskList: Deploy app 'std-generator' (linux)
[52.17.141.218] - Uploading bundle
[52.17.141.218] - Uploading bundle: SUCCESS
[52.17.141.218] - Setting up Environment Variables
[52.17.141.218] - Setting up Environment Variables: SUCCESS
[52.17.141.218] - Invoking deployment process
[52.17.141.218] - Invoking deployment process: SUCCESS
➜  std-generator-v2 git:(dev) ✗ vim .gitignore
“ Checkout Kadira!
  It's the best way to monitor performance of your app.
  Visit: https://kadira.io/mup ”
Building Started: /home/nitrous/code/std-generator-v2/app
Started TaskList: Deploy app 'std-generator' (linux)
[52.17.141.218] - Uploading bundle
[52.17.141.218] - Uploading bundle: SUCCESS
[52.17.141.218] - Setting up Environment Variables
[52.17.141.218] - Setting up Environment Variables: SUCCESS
[52.17.141.218] - Invoking deployment process
[52.17.141.218] - Invoking deployment process: SUCCESS
➜  std-generator-v2 git:(dev) ✗ vim .gitignore

Laisser un commentaire

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

*

code