2015-10-21 9 views
7

Sono un po 'curioso se Meteor Up (o un'altra applicazione Meteor che distribuisce processi come Modulus) faccia qualche cosa di fantasia rispetto alla copia dell'applicazione Meteor, all'avvio di una sessione tmux e alla semplice esecuzione meteor per avviare l'applicazione sul tuo server. Grazie in anticipo!Distribuzione dell'applicazione Meteor via Meteor Up o tmux meteor

risposta

12

Meteor Up e Modulus sembrano eseguire solo node.js e Mongodb. Eseguono la tua app dopo che è stata confezionata per la produzione con meteor build. Questo probabilmente darà alla tua app un vantaggio in termini di prestazioni.

E 'possibile eseguire solo meteore in una sessione ditmux o schermo. Io uso meteor run --settings settings.json --production per passare le impostazioni e utilizzare anche la modalità di produzione che minimizza il codice ecc. È anche possibile utilizzare un server di inoltro proxy come Nginx per inoltrare le richieste alla porta 80 (http) e 443 (https).

Per avere un riferimento qui è la mia Nginx config:

server { 
    listen 80; 
    server_name example.com www.example.com; 
    return 301 https://example.com$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name www.example.com; 

    ssl_certificate /etc/ssl/private/example.com.unified.crt; 
    ssl_certificate_key /etc/ssl/private/example.com.ssl.key; 

    return 301 https://example.com$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name example.com; 

    ssl_certificate /etc/ssl/private/example.com.unified.crt; 
    ssl_certificate_key /etc/ssl/private/example.com.ssl.key; 



    location/{ 
    proxy_pass http://localhost:3000; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header Host $host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

Utilizzando questo metodo tutto è contenuto all'interno del contenitore di meteoriti e si ha il vantaggio di meteorite guardando per i cambiamenti ecc Tuttavia, ci possono essere alcuni extra sovraccarico sul tuo server. Non sono sicuro esattamente quanto non ho provato abbastanza entrambi i modi.

L'unico problema che ho trovato con questo metodo è che non è facile da ottenere tutto automatizzato al riavvio, come la corsa automaticamente tmux poi lanciare meteora, anziché utilizzare gli strumenti appositamente progettati come Node.js sempre o PM2 che si avvia automaticamente quando il server viene riavviato. Quindi devi accedere manualmente al server ed eseguire meteor. Se trovi un modo semplice per farlo usando lo tmux o lo schermo scrivilo allo fammi sapere.

Edit:

Sono riuscito a ottenere Meteor per avviare al boot del sistema con la seguente riga nel file /etc/rc.local:

sudo -H -u ubuntu -i /usr/bin/tmux new-session -d '/home/ubuntu/Sites/meteorapp/run_meteorapp.sh' 

Questo comando esegue lo script run_meteorapp.sh shell all'interno di una sessione di tmux una volta che il sistema si è avviato. Nel run_meteorapp.sh ho:

#!/usr/bin/env bash 
(cd /home/ubuntu/Sites/meteorapp && exec meteor run --settings settings.json --production) 
5

Se guardate la pagina Github di Meteor Up: https://github.com/arunoda/meteor-up potete vedere cosa fa.

Come ad esempio:

Caratteristiche

di autenticazione del server

configurazione del server di comando singola implementazione Comando singolo Multi Server distribuzione dei Management variabili ambientali Supporto per settings.json password o chiave privata (PEM) in base Accesso, log dal terminale (supporta log tailing) Supporto per le distribuzioni di meteoriti (sperimentale)

Server Configuration

riavvio automatico se l'applicazione si è schiantato (usando sempre) Auto-Start dopo il riavvio del server (utilizzando upstart) Privilegi Stepdown utente tornare alla versione precedente, se la distribuzione non riuscita Secured MongoDB installazione (opzionale) PhantomJS preinstallato (opzionale)

Quindi sì ... lo fa molto di più ...

3

Mupx fa ancora di più. Sfrutta la finestra mobile. E 'la versione di sviluppo, ma ho trovato ad essere più affidabile di MUP dopo l'aggiornamento Meteor a 1,2

Maggiori informazioni si possono trovare presso la repo github: https://github.com/arunoda/meteor-up/tree/mupx

1

ho utilizzato mupx per la distribuzione su oceano digitale . Una volta impostato il file mup.json non è possibile solo distribuire l'app, ma è anche possibile aggiornare facilmente il codice sul server tramite la CLI. Ci sono anche alcuni altri comandi che sono utili.

mupx reconfig - reconfigs app con le variabili di ambiente
mupx stop - ferma applicazione derubato
mupx start - ...
mupx restart - ...
mupx logs [-f --tail=100] - questo diventa log che può essere estremamente utile quando si verificano errori di distribuzione.

E 'certamente facile aggiornare la tua app, e ne sono stato molto contento.

Mupx fa uso di MeteorD (Docker Runtime for Meteor Apps) e dal momento che utilizza finestra mobile può essere davvero utile per accedere alla shell MongoDB tramite ssh con questo comando:

docker exec -it mongodb mongo <appName> 

dare un colpo!