web-dev-qa-db-fra.com

Comment déployer une application météore sur mon propre serveur?

Comment déployer une application météore sur mon propre serveur?

variante 1: le serveur de développement et le serveur de déploiement sont identiques;

saveur 2: le serveur de développement en est un (peut-être mon hôte local) et le serveur de déploiement en est un autre (peut-être un VPS dans le cloud);

saveur 3: je veux faire un domaine "météore hébergement", tout comme "meteor.com". C'est possible? Comment?

Mise à jour:

J'utilise Ubuntu et je ne veux pas "démétoriser" l'application. Merci.

66
J. Bruni

documentation Meteor indique actuellement:

"[...] vous devez fournir Node.js 0.8 et un serveur MongoDB. Vous pouvez ensuite exécuter l'application en appelant le noeud, en spécifiant le port HTTP sur lequel l'application doit écouter et le point de terminaison MongoDB."


Donc, parmi les différentes façons d’installer Node.js , je l’ai suivi et je l’ai exécuté le meilleur conseil que j’ai found , qui décompresse la dernière version disponible directement dans le site officiel de Node.JS , déjà compilé pour Linux (64 bits, dans mon cas):

# Does NOT need to be root user:

# create directory
mkdir -p ~/.nodes && cd ~/.nodes

# download latest Node.js distribution
curl -O http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-x64.tar.gz

# unpack it
tar -xzf node-v0.10.13-linux-x64.tar.gz

# discard it
rm node-v0.10.13-linux-x64.tar.gz

# rename unpacked folder
mv node-v0.10.13-linux-x64 0.10.13

# create symlink
ln -s 0.10.13 current

# add path to PATH
export PATH="~/.nodes/current/bin:$PATH"

# check
node --version
npm --version


Et pour installer MongoDB , j’ai tout simplement suivi les instructions du manuel de MongoDB disponible dans la section Documentation de son site officiel :

# Needs to be root user (apply "Sudo" if not at root Shell)

apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list
apt-get update
apt-get install mongodb-10gen



Le serveur est prêt à exécuter les applications Meteor! Pour le déploiement, le "problème" principal est le " bundle " l'opération se passe. Nous devons courir meteor bundle commande depuis l’arborescence des fichiers sources de l’application. Par exemple:

cd ~/leaderboard
meteor bundle leaderboard.tar.gz


Si le déploiement doit se faire sur un autre serveur ( flavour 2), nous devons télécharger le fichier bundle tar.gz, en utilisant sftp, ftp, ou toute autre méthode de transfert de fichier. Une fois que le fichier est là, nous suivons à la fois la documentation de Meteor et le fichier README qui est inclus comme par magie dans la racine de L'arbre de liasse:

# unpack the bundle
tar -xvzf leaderboard.tar.gz

# discard tar.gz file
rm leaderboard.tar.gz

# rebuild native packages
pushd bundle/programs/server/node_modules
rm -r fibers
npm install [email protected]
popd

# setup environment variables
export MONGO_URL='mongodb://localhost'
export ROOT_URL='http://example.com'
export PORT=3000

# start the server
node main.js


Si le déploiement se fera sur le même serveur ( saveur 1), le fichier bundle tar.gz est déjà présent et il n'est pas nécessaire de recompiler les packages natifs. (Il suffit de sauter la section correspondante ci-dessus.)



Cool! Avec ces étapes, j'ai l'exemple "Leaderboard" déployé sur mon serveur personnalisé , pas "meteor.com" ... (uniquement pour apprendre et apprécient leurs services!)

Je dois toujours le faire fonctionner sur le port 80 ( je prévois d’utiliser NginX pour cela ), les variables d’environnement persistantes, démarrez Node.JS déconnecté du terminal, et cetera ... Je suis conscient de cette configuration dans une "à peine nue" ... juste la base, la première étape, bases de base.

L'application a été déployée "manuellement", sans tirer parti de tous les meteor deploy fonctions de commande magiques ... J'ai vu des gens publier leurs " meteor.sh " et " meteoric.sh " et je suis sur le même chemin ... créez un script pour émuler la fonctionnalité "commande à l'unité" ... conscient que dans un proche avenir, tout cela ne sera que l'exploration des explorateurs de Pioneer Meteor, car il deviendra une galaxie entière! et la plupart de ces problèmes seront une chose du passé archaïque.

Quoi qu'il en soit, je suis très heureux de voir la vitesse d'exécution de l'application déployée le VPS le moins cher jamais enregistré , avec une latence étonnamment faible et des mises à jour simultanées presque instantanées dans plusieurs navigateurs distincts. Fantastique!

Merci!!!

87
J. Bruni

Essayez Meteor Up aussi

Avec cela, vous pouvez déployer sur n'importe quel serveur Ubuntu. Ceci utilise meteor build commande en interne. Et utilisé par beaucoup pour le déploiement d'applications de production.

J'ai créé Meteor Up pour permettre aux développeurs de déployer des applications Meteor de qualité de production jusqu'à l'arrivée de Galaxy.

14
Arunoda Susiripala

Je recommanderais la variante 2 avec un serveur de déploiement séparé. La séparation des problèmes conduit à un environnement plus stable pour votre code et plus facile à déboguer.

Pour ce faire, il existe l'excellent script Meteoric bash qui vous aide à déployer sur EC2 d'Amazon ou sur votre propre serveur.

En ce qui concerne la manière de lancer votre propre meteor.com, je vous suggère de la diviser en sa propre question StackOverflow car elle n’est pas liée. De plus, je ne peux pas y répondre :)

8
Jonatan Littke

J'en ai fini il y a quelques jours. J'ai déployé l'application Meteor sur mon propre serveur sur DigitalOcean. J'ai utilisé l'outil Meteor Up pour gérer les déploiements et Nginx sur le serveur afin de servir l'application.

C'est très simple à utiliser. Vous devriez installer météore avec la commande:

npm install -g mup

Créez ensuite le dossier pour la configuration de déploiement et accédez au répertoire créé. Puis lancez meteor init commande. Il créera deux fichiers de configuration. Nous avons un intérêt pour mup.json fichier. Il a des configurations pour le processus de déploiement. Cela ressemble à ceci:

{
  // Server authentication info
  "servers": [
    {
      "Host": "hostname",
      "username": "root",
      "password": "password",
      // or pem file (ssh based authentication)
      //"pem": "~/.ssh/id_rsa",
      // Also, for non-standard ssh port use this
      //"sshOptions": { "port" : 49154 },
      // server specific environment variables
      "env": {}
    }
  ],

  // Install MongoDB on the server. Does not destroy the local MongoDB on future setups
  "setupMongo": true,

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

  // WARNING: nodeVersion defaults to 0.10.36 if omitted. Do not use v, just the version number.
  "nodeVersion": "0.10.36",

  // Install PhantomJS on the server
  "setupPhantom": true,

  // 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": "meteor",

  // Location of app (local directory). This can reference '~' as the users home directory.
  // i.e., "app": "~/Meteor/my-app",
  // This is the same as the line below.
  "app": "/Users/arunoda/Meteor/my-app",

  // Configure environment
  // ROOT_URL must be set to https://YOURDOMAIN.com when using the spiderable package & force SSL
  // your NGINX proxy or Cloudflare. When using just Meteor on SSL without spiderable this is not necessary
  "env": {
    "PORT": 80,
    "ROOT_URL": "http://myapp.com",
    "MONGO_URL": "mongodb://arunoda:[email protected]:10023/MyApp",
    "MAIL_URL": "smtp://postmaster%40myapp.mailgun.org:[email protected]:587/"
  },

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

Après avoir rempli tous les champs de données, vous pouvez lancer le processus d’installation avec la commande mup setup. Il va configurer votre serveur.

Après une installation réussie, vous pouvez déployer votre application. Il suffit de taper mup deploy dans la console.

6
Dmytro Medvid

Une autre alternative est de commencer par développer sur votre propre serveur. Je viens de créer une boîte numérique Ocean, puis de connecter mon compte Cloud9 IDE.

Maintenant, je peux développer directement sur la machine dans un nuage IDE) et le déploiement est facile - il suffit de copier des fichiers.

J'ai créé un tutoriel qui montre exactement comment fonctionne ma configuration.

5
John Sonmez

Voici instructions pour exécuter Meteor sur un VPS CentOS 7 . Cela devrait s'appliquer à d'autres environnements Linux.

2
Kamal

J'ai eu beaucoup de problèmes avec météore, j'ai donc décidé d'écrire mon propre script de déploiement . J'ai également ajouté des informations supplémentaires sur la manière de configurer nginx ou mongodb. J'espère que ça aide!

Voir le dossier /sh Dans le référentiel

Que fait le script meteor-deploy.sh:

  1. Environnement sélectionné (./meteor-deploy.sh Pour la mise en place, ./meteor-deploy.sh prod Pour la production)
  2. Construire et regrouper la version de production de l'appli météore
  3. Copier le paquet sur le serveur
  4. SSH dans le serveur
  5. Faire un mongodump pour sauvegarder la base de données
  6. Arrêtez l'application en cours d'exécution
  7. Déballer le paquet
  8. Écraser les fichiers de l'application
  9. Réinstallez les dépendances de package de nœud d'application
  10. Démarrer l'application (utilise pour toujours)

Testé pour les configurations de serveur suivantes:

  • Ubuntu 14.04.4 LTS
  • météore --version 1.3.2.4
  • noeud - version v0.10.41
  • npm --version 3.10.3
2
Samuel