Deployment

Approfondimento 2.5

Percentuale Tradotta

In questo capitolo imparerai:

  • Come fare il deploy su Meteor.com.
  • Come fare il deploy su Modulus.
  • Come fare il deploy sul proprio server utilizzando Meteor Up.
  • Alcune persone preferiscono lavorare silenziosamente su di un progetto finché non è perfetto, mentre altre non vedono l'ora di farlo vedere al mondo intero.

    Se appartenete alla prima categoria di persone, e per ora preferite sviluppare in locale, sentitevi liberi di saltare questo capitolo. Diversamente, se volete prendervi un po’ di tempo per imparare come fare il deploy (trasferire il progetto funzionante su di un server remoto) online della la vostra applicazione Meteor, abbiamo la soluzione per te.

    Impareremo come fare il deploy di un'applicazione Meteor in diversi modi. Sentitevi liberi di utilizzare ciascuno di esse in ogni momento del vostro processo di sviluppo, sia che stiate lavorando a Microscope che a qualsiasi altra app Meteor. Iniziamo!

    Introduzione agli Approfondimenti

    Questo è un capitolo di approfondimento. Gli approfondimenti forniscono uno sguardo più approfondito ad argomenti di Meteor più generali, in modo indipendente dal resto del libro.

    Se preferite continuare a costruire Microscope, potete quindi saltare temporaneamente questo capitolo e tornare indietro più avanti.

    Fare il Deploy Su Meteor

    Fare il deploy su di un sotto-dominio di Meteor (ad esempio http://myapp.meteor.com) è la soluzione più semplice, e la prima che che vogliamo presentare. Questo approccio può essere utile per presentare la vostra applicazione ad altri durante i primissimi sviluppi, oppure per configurare velocemente un server di pre-produzione.

    Fare il deploy sul server di Meteor è piuttosto semplice. Aprite semplicemente il vostro terminale, spostatevi nella cartella della vostra applicazione Meteor, e scrivete:

    $ meteor deploy myapp.meteor.com
    

    Ovviamente dovrete sostituire “myapp” con un nome di vostra scelta e preferibilmente con uno che non sia già in uso. Se è la prima volta che fate il deploy di un'app, vi sarà chiesto di creare un account Meteor. Se tutto va a buon fine, dopo alcuni secondi potrete accedere alla vostra applicazione all'indirizzo http://myapp.meteor.com.

    Potete far riferimento alla documentazione ufficiale per avere maggiori informazioni rguardo a cose come accedere direttamente al database dell'istanza della vostra applicazione o su come configurare un dominio personalizzato.

    Fare il Deploy Su Modulus

    Modulus è un'opzione fantastica per fare il deploy di applicazioni NodeJS. È anche uno dei pochi provider PaaS (platform-as-a-service) che supportano Meteor ufficialmente, e ci sono già molte persone che ci fanno girare applicazioni Meteor in produzione.

    Demeteorizer

    Modulus ha rilasciato uno strumento open-source chiamato demeteorizer che converte la vostra applicazione Meteor in un'applicazione NodeJS standard.

    Iniziamo creando un account. Per fare il deploy della vostra app su Modulus, dovete poi installare gli strumenti di Modulus per la riga di comando:

    $ npm install -g modulus
    

    Dopodiché dovete autenticarvi con:

    $ modulus login
    

    Creeremo ora un progetto di Modulus (nota: è possibile farlo anche dal pannello di controllo web di Modulus):

    $ modulus project create
    

    Dovrete poi creare un database MongoDB per la vostra app. Potete anche creare un database MongoDB con Modulus stesso, MongoHQ o con qualsiasi altro provider MongoDB nel cloud.

    Una volta creato il vostro database MongoDB, potete ottenere il MONGO_URL per il vostro database dalla UI web di Modulus (andate in Dashboard > Databases > Select your database > Administration), e utilizzatelo poi per configurare la vostra app in questo modo:

    $ modulus env set MONGO_URL "mongodb://<user>:<pass>@mongo.onmodulus.net:27017/<database_name>"
    

    È giunto il momento di fare il deploy della vostra app. Non potrebbe essere più semplice, scrivete:

    $ modulus deploy
    

    Avrete così fatto con successo il deploy della vostra applicazione su Modulus. Fate riferimento alla documentazione di Modulus per avere maggiori informazioni riguardo l'accesso ai log, l'impostazione di un nome di dominio personalizzato e l'accesso con SSL.

    Meteor Up

    Nonostante ogni giorno appaiano nuove soluzioni per il cloud, spesso queste presentano problemi e limitazioni. Ad oggi, fare il deploy di applicazioni Meteor sui propri server rimane la soluzione migliore per andare in produzione. L'unica cosa è che gestire un deploy da soli non è così semplice, in particolar modo se siete interessati a fare una distribuzione di qualità.

    Meteor Up (o mup in breve) è un altro tentativo per risolvere questo problema: è uno strumento per la riga di comando che si cura di tutte le impostazioni e di fare il deploy. Vediamo quindi come fare il deploy di Microscope utilizzando Meteor Up.

    Prima di qualsiasi altra cosa, avremo bisogno di un server su cui inviare l'applicazione. Suggeriamo, indifferentemente, Digital Ocean, con tariffe che partono da 5$ al mese, o AWS, che mette a disposizione gratuitamente istanze Micro (incontrerete presto problemi di scalabilità, ma se avete intenzione di fare giusto qualche prova con Meteor Up dovrebbe essere sufficiente).

    Qualsiasi sia il servizio scelto, dovrete annotare le tre seguenti cose: l'indirizzo IP del vostro server, il nome utente (di solito root o ubuntu) e la password per l'accesso. Tenetele da qualche parte ben al sicuro, ci serviranno presto!

    Inizializzare Meteor Up

    Per iniziare, dobbiamo installare Meteor Up utilizzando npm come segue:

    $ npm install -g mup
    

    Creeremo poi una speciale cartella separata che conterrà le nostre impostazioni di Meteor Up per un particolare deploy. Usiamo una cartella separata per due ragioni: primo, è buona pratica evitare di includere qualsiasi credenziale privata nel vostro repository Git, in particolare se state lavorando ad un progetto pubblico.

    Secondo, utilizzando più cartelle separate potremo gestire più configurazioni di Meteor Up in parallelo. Questo risulterà utile, ad esempio, per gestire diversamente istanze di pre-produzione e di produzione.

    Creiamo quindi questa nuova cartella ed utilizziamola per inizializzare un nuovo progetto di Meteor Up:

    $ mkdir ~/microscope-deploy
    $ cd ~/microscope-deploy
    $ mup init
    

    Condivisione tramite Dropbox

    Un modo fantastico per assicurarvi che voi e il vostro team utilizziate tutti le stesse impostazioni di deploy è semplicemente creare la vostra cartella di configurazione per Meteor Up dentro al vostro Dropbox, o qualsiasi servizio simile.

    Configurare Meteor Up

    Quando si inizializza un nuovo progetto, Meteor Up crea per voi due file: mup.json e settings.json.

    mup.json conterrà tutte le vostre impostazioni per il deploy, mentre settings.json conterrà tutte le impostazioni relative all'applicazione (chiavi OAuth, chiavi per analytics, etc.)

    Il passo successivo è la configurazione del file mup.json. Di seguito è riportato il file mup.json generato di default con mup init, e tutto quello che dovrete fare è riempire gli spazi vuoti:

    {
      //server authentication info
      "servers": [{
        "host": "hostname",
        "username": "root",
        "password": "password"
        //or pem file (ssh based authentication)
        //"pem": "~/.ssh/id_rsa"
      }],
    
      //install MongoDB in the server
      "setupMongo": true,
    
      //location of app (local directory)
      "app": "/path/to/the/app",
    
      //configure environmental
      "env": {
        "ROOT_URL": "http://supersite.com"
      }
    }
    
    mup.json

    Passiamo in rassegna ognuna di queste impostazioni.

    Autenticazione sul Server

    Noterete che Meteor Up supporta l'autenticazione basata sia su password che su chiave privata (PEM), e può quindi essere utilizzato con praticamente qualsiasi servizio cloud.

    Nota importante: se scegliete di utilizzare l'autenticazione basata su password, assicuratevi di aver prima installato sshpass (fate riferimento a questa guida).

    Configurazione di MongoDB

    Il prossimo passo è la configurazione del database MongoDB per la vostra applicazione. Vi suggeriamo di utilizzare MongoHQ, o qualsiasi altro fornitore cloud di MongoDB, visto che offrono un servizio di supporto professionale a strumenti di gestione migliori.

    Se decidete di utilizzare MongoHQ, impostate setupMongo a false e aggiungete la variabile d'ambiente MONGO_URL nel blocco env del file mup.json’s. Se invece decidete di installare MongoDB sul vostro server con Meteor Up, impostate setupMongo a true e Meteor Up si preoccuperà del resto.

    Il Percorso della App Meteor

    Visto che la nostra configurazione di Meteor Up si trova in una cartella diversa, dovremo puntare Meteor Up alla nostra applicazione utilizzando la proprietà app. Digitate semplicemente il percorso locale completo, che potete anche ottenere utilizzando il comando pwd dal terminale quando vi trovate all'interno della cartella della vostra applicazione.

    Variabili d'Ambiente

    Potete specificare tutte la variabili d'ambiente per la vostra applicazione (come ROOT_URL, MAIL_URL, MONGO_URL, etc.) all'interno del blocco env.

    Impostazioni e Deploy

    Prima di poter fare il deploy, avremo bisogno di impostare il server in modo che sia pronto per ospitare applicazioni Meteor. La magia di Meteor Up racchiude questo processo complesso in un singolo comando!

    $ mup setup
    

    Potranno servire alcuni minuti, a seconda delle performance del server e della connettività di rete. Una volta che il comando avrà completato con successo l'impostazione del server, potremo finalmente fare il deploy della nostra app lanciando il comando:

    $ mup deploy
    

    Questo impacchetterà l'applicazione Meteor e ne farà il deploy sul server che abbiamo appena impostato.

    Visualizzare i Log

    I resoconti di log sono molto importanti e Meteor Up fornisce un modo per gestirli molto semplice, emulando il comando tail -f. Digitate:

    $ mup logs -f
    

    Questo completa la nostra panoramica su quello che Meteor Up può fare. Per avere maggiori informazioni, vi suggeriamo di visitare il repository di Meteor Up su GitHub.

    Questi tre modi di fare il deploy di applicazioni Meteor dovrebbero essere sufficienti per la maggior parte dei casi d'uso. Chiaramente sappiamo che alcuni preferirebbero avere il pieno controllo del proprio server Meteor impostandolo partendo da zero. Ma questo è argomento per un altro giorno… o forse per un altro libro!