-
Notifications
You must be signed in to change notification settings - Fork 12
/
02s-deploying.md.erb
206 lines (128 loc) · 10.9 KB
/
02s-deploying.md.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
---
title: Deployment
slug: deploying
date: 0002/01/02
number: 2.5
sidebar: true
contents: Come fare il deploy su Meteor.com.|Come fare il deploy su Modulus.|Come fare il deploy sul proprio server utilizzando Meteor Up.
paragraphs: 46
---
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!
<% note do %>
### 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.
<% end %>
### 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:
~~~bash
$ 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](http://docs.meteor.com/#deploying) 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](https://modulus.io/) è 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.
<% note do %>
### Demeteorizer
Modulus ha rilasciato uno strumento open-source chiamato [demeteorizer](https://github.com/onmodulus/demeteorizer) che converte la vostra applicazione Meteor in un'applicazione NodeJS standard.
<% end %>
Iniziamo [creando un account](https://modulus.io/register). Per fare il deploy della vostra app su Modulus, dovete poi installare gli strumenti di Modulus per la riga di comando:
~~~bash
$ npm install -g modulus
~~~
Dopodiché dovete autenticarvi con:
~~~bash
$ modulus login
~~~
Creeremo ora un progetto di Modulus (nota: è possibile farlo anche dal pannello di controllo web di Modulus):
~~~bash
$ modulus project create
~~~
Dovrete poi creare un database MongoDB per la vostra app. Potete anche creare un database MongoDB con [Modulus stesso](https://modulus.io/codex/database/getting_started), [MongoHQ](https://www.mongohq.com/) 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:
~~~bash
$ 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:
~~~bash
$ modulus deploy
~~~
Avrete così fatto con successo il deploy della vostra applicazione su Modulus. Fate riferimento alla [documentazione di Modulus](https://modulus.io/codex/projects) 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](https://github.com/arunoda/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](http://digitalocean.com), con tariffe che partono da 5$ al mese, o [AWS](http://aws.amazon.com/), 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:
~~~bash
$ 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:
~~~bash
$ mkdir ~/microscope-deploy
$ cd ~/microscope-deploy
$ mup init
~~~
<% note do %>
### 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.
<% end %>
### 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:
~~~js
{
//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"
}
}
~~~
<%= caption "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](https://gist.github.com/arunoda/7790979)).
**Configurazione di MongoDB**
Il prossimo passo è la configurazione del database MongoDB per la vostra applicazione. Vi suggeriamo di utilizzare [MongoHQ](https://www.mongohq.com/home), 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!
~~~bash
$ 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:
~~~bash
$ 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:
~~~bash
$ 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](https://github.com/arunoda/meteor-up).
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!