Aquest article us guiarà a través de la implementació de la vostra aplicació Meteor a un Vultr VPS amb Ubuntu 14.04. També pot funcionar en altres distribucions de Linux (intent sota el vostre propi risc).
Un enginyós company anomenat Arunoda Susiripala, que és força actiu a la comunitat Meteor, ha desenvolupat una eina de desplegament anomenada mupx (abreviatura de "Meteor Up X"), que fa que sigui extremadament fàcil desplegar la vostra aplicació Meteor a un servidor remot mitjançant ssh. Mupx és el successor de mup. Us guiarem pel procés des del principi fins al final. Afortunadament, Mup fa la major part del treball pesant, així que serà una brisa!
El nostre primer pas és instal·lar mupx. Ho fareu a la vostra estació de treball de desenvolupament, no al vostre servidor VPS! Assegureu-vos que ja teniu Node.js instal·lat i executeu:
$ npm install -g mupx
Un cop finalitzada la instal·lació, aneu a la carpeta del vostre projecte Meteor, per exemple /projects/myApp, i executeu les ordres següents:
$ mkdir .deploy
$ cd $_
$ mupx init
Per a aquells que no estiguin familiaritzats amb la $_sintaxi, és una drecera per a l'últim argument utilitzat en una ordre. Així, en aquest cas, cd $_s'executa com a cd .deploy.
Veureu la següent sortida:
Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Configuration file : mup.json
Settings file : settings.json
Empty Project Initialized!
El procés d'inicialització crea dos fitxers mup.jsoni settings.json. Deixarem aquest darrer fitxer en pau ara mateix. Endavant i obre mup.json. En el moment d'escriure aquest article, el valor predeterminat mup.jsonés el següent:
{
// Server authentication info
"servers": [
{
"host": "hostname",
"username": "root",
"password": "password",
// or pem file (ssh based authentication)
// WARNING: Keys protected by a passphrase are not supported
//"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,
// 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": "/path/to/the/app",
// Configure environment
// ROOT_URL must be set to your correct domain (https or http)
"env": {
"PORT": 80,
"ROOT_URL": "http://myapp.com"
},
// 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,
// show a progress bar while uploading.
// Make it false when you deploy using a CI box.
"enableUploadProgressBar": true
}
Hem de canviar algunes coses perquè el procés de configuració funcioni.
Primer, assegureu-vos d'establir hostla vostra adreça IP VPS, per exemple:
"host": "123.123.123.123",
Si necessiteu utilitzar un número de port diferent del 22 per defecte, podeu fer-ho mitjançant el sshOptionscamp, per exemple:
"host": "123.123.123.123",
"sshOptions": { "port": 9876 },
Estableix el usernamevalor a qualsevol usuari que vulguis que tingui la instal·lació de la teva aplicació Meteor. Recomano eliminar la línia de contrasenya i utilitzar una clau SSH, per motius de seguretat. Descomenteu la línia amb el pemvalor i assegureu-vos que apunta a la vostra clau secreta SSH que es correspon amb la clau pública SSH que heu instal·lat al vostre VPS (a /root/.ssh/authorized_keys). Assegureu-vos d'afegir una coma després de la línia de contrasenya! Si la vostra clau SSH té una frase de contrasenya adjunta, traieu la pemlínia completament i assegureu-vos que la vostra clau privada SSH estigui emmagatzemada a la memòria cau en un agent ssh (per exemple, a Mac, ssh-add <path to ssh private key>).
Deixeu el setupMongoseu valor predeterminat.
Canvia appNameal nom de la teva aplicació Meteor. En el nostre cas:
"appName": "myApp",
... i establiu també la ubicació de l'aplicació, en relació amb aquesta carpeta de desplegament:
"app": "..",
Finalment, configureu l' ROOT_URLURL designat per a la vostra aplicació. Establiu explícitament un número de port al port HTTP estàndard.
// Configure environment
"env": {
"ROOT_URL": "http://myapp.com",
"PORT": 80
},
Això és! Deseu el mup.jsonfitxer i, a continuació, executeu:
$ mupx setup
En aquest moment, mupx s'enviarà al vostre VPS, instal·larà Docker, configurarà l'entorn i traurà les imatges de Docker adequades. Ara implementeu la vostra aplicació:
$ mupx deploy
Ara, si aneu a http://123.123.123.123, la vostra aplicació es mostrarà quan es carregui la pàgina.
Suport multinucli
Si el vostre VPS té diversos nuclis, la vostra aplicació Meteor pot aprofitar-ho. Només haurem de fer un parell de retocs ràpids.
Primer, haureu d'instal·lar el paquet del clúster. Aneu a la carpeta de la vostra aplicació Meteor (en aquest exemple, /projects/myApp) i escriviu:
$ meteor add meteorhacks:cluster
Ara editeu el vostre mup.jsonfitxer i modifiqueu la secció de variables d'entorn així:
// Configure environment
"env": {
"ROOT_URL": "http://myapp.com",
"PORT": 80,
"CLUSTER_WORKERS_COUNT": "auto"
},
Com que hem afegit un paquet nou a la vostra aplicació, haureu de tornar a desplegar.
$ mupx setup && mupx deploy
Si mai voleu canviar les variables d'entorn mup.jsonsense haver de desplegar tota l'aplicació, només cal que utilitzeu l'ordre reconfigure. Això és útil quan no s'han fet canvis a l'aplicació.
$ mupx reconfig
Enhorabona, la teva aplicació Meteor ja està en funcionament! A més, la vostra aplicació s'iniciarà automàticament cada cop que es reiniciï el vostre VPS. Estigueu atents als futurs articles sobre el desplegament i la gestió de Meteor.