-
Notifications
You must be signed in to change notification settings - Fork 6
/
02s-deploying.md.erb
208 lines (129 loc) · 14.8 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
207
208
---
title: Розгортування
slug: deploying
date: 0002/01/02
number: 2.5
sidebar: true
contents: Дізнаєтеся, як розгорнути на сервері додаток на Meteor. | Дізнаєтеся, як розгорнути додаток на Modulus. | Дізнаєтеся, як розгорнути додаток на власний сервер за допомогою Meteor Up.
paragraphs: 48
---
Деякі вважають за краще спокійно працювати над проектом, поки не доведуть його до досконалості, інші ж навпаки, намагаються показати його усьому світу як можна раніше.
Якщо ви ставитеся до першої категорії і зараз надаєте перевагу працювати локально, то просто пропустіть цей розділ. Якщо ж ви хочете відразу навчитися публікувати Meteor-додатки, то цей розділ для вас.
Ми навчимося розгортувати додатки декількома способами. Пробуйте їх на будь-якій стадії розробки, працюєте ви над Microscope або над будь-яким іншим Meteor-додатком. Давайте приступимо!
<% note do %>
### Представляємо додаткові розділи
Ви зараз читаєте саме **додатковий розділ**. У цих розділах ми будемо більш детально розбирати загальні теми Meteor, незалежно від книги.
Так що якщо ви хочете просто продовжити розробляти Microscope, можете поки пропустити цей розділ і повернутися до нього пізніше.
<% end %>
### Публікуємо на meteor.com
Опублікувати додаток на субдомен meteor.com (наприклад, 'http://myapp.meteor.com') - це найпростіший спосіб. З нього ми і почнемо. Цей спосіб найбільш доречний, якщо ви хочете показати додаток іншим людям на ранніх стадіях, або щоб швидко розгорнути тестовий сервер.
Публікація на meteor.com - дуже простий процес. Просто відкрийте термінал, увійдіть в директорію вашого застосування і наберіть:
~~~bash
meteor deploy myapp.meteor.com
~~~
Само собою, замініть 'myapp' на ім'я вашого додатку, переважно вільне.
Якщо все пройде добре, то вже через кілька секунд ви зможете побачити ваш додаток за адресою `http://myapp.meteor.com`.
Ви можете звернутись до [офіційної документації](http://docs.meteor.com/#deploying) за більш детальною інформацією, як наприклад, прямий доступ до вашого об’єкту бази даних або конфігурування власного домену для вашого додатку.
### Публікуємо на Modulus
[Modulus] (https://modulus.io/) - чудове рішення для публікації Node.js додатків. Це одна з небагатьох PaaS (platform-as-a-service) платформ, яка офіційно підтримує Meteor, і вже є люди, які використовують її в якості production-рішення для Meteor-додатків.
<% note do %>
### Demeteorizer
Команда Modulus виклала у відкритий доступ інструмент під назвою [demeteorizer](https://github.com/onmodulus/demeteorizer), який конвертує Meteor-додаток в стандартний Node.js додаток.
<% end %>
Почніть з [створення аккаунта](https://modulus.io/register). Щоб опублікувати наш додаток на Modulus, спершу необхідно встановити інструмент Modulus для командного рядка:
~~~bash
npm install -g modulus
~~~
Далі необхідно залогінитися:
~~~bash
modulus login
~~~
Тепер давайте створимо наш проект Modulus (зверніть увагу на те, що ви можете створити проект за допомогою інтерфейсу на сайті Modulus)
~~~bash
modulus project create
~~~
Наступним кроком буде створення бази даних MongoDB для нашого застосування. Ми можемо створити базу даних за допомогою самого [Modulus] (https://modulus.io/codex/database/getting_started), [MongoHQ] (https://www.mongohq.com/), або будь-якого іншого хмарного провайдера.
Як тільки ми створили нашу базу даних, ми можемо отримати її `MONGO_URL` (перейдіть Dashboard> Databases> Select your database> Administration), і потім налаштувати наш додаток наступним чином:
~~~bash
modulus env set MONGO_URL "mongodb://<user>:<pass>@mongo.onmodulus.net:27017/<database_name>"
~~~
Тепер прийшов час опублікувати додаток. Просто наберіть:
~~~bash
modulus deploy
~~~
Все, наш додаток опубліковано на Modulus. Ознайомтеся з [документацією] (https://modulus.io/codex/projects) для отримання більшої інформації про те, як отримати доступ до логів, доменів і SSL.
### Meteor Up
Хоча нові хмарні рішення з'являються мало не щодня, вони часто мають свої проблеми та обмеження. Так що на сьогоднішній день, кращим production-рішенням для вашого Meteor-додатку є публікація на власний сервер. Єдине, публікація на власний сервер не буде настільки простою, особливо якщо ви чекаєте дійсно production-якості.
[Meteor Up](https://github.com/arunoda/meteor-up) (або скорочено `mup`) - це чергова спроба поправити ситуацію за допомогою інструменту для командного рядка, який бере на себе клопоти по публікації. Давайте подивимося, як опублікувати Microscope за допомогою Meteor Up.
Перш за все, нам буде потрібно сервер для публікації. Ми рекомендуємо або [Digital Ocean] (http://digitalocean.com), тарифи якого починаються c 5 $/міс, або [AWS] (http://aws.amazon.com/), який безкоштовно надає т.зв. micro instances (ви незабаром зіткнетеся з необхідністю збільшення потужностей, але для початку роботи з Meteor Up безкоштовних буде цілком достатньо).
Який би сервіс ви не вибрали, вам потрібно буде в підсумку отримати 3 речі: IP-адресу вашого сервера, логін (зазвичай `root` або `ubuntu`) і пароль. Тримайте їх під рукою, незабаром вони нам знадобляться!
### Ініціалізувавши Meteor Up
Для початку нам потрібно встановити Meteor Up за допомогою `npm`:
~~~bash
npm install -g mup
~~~
Далі потрібно створити окрему директорію, яка міститиме конфігурацію Meteor Up для поточної публікації. Ми використовуємо окрему директорію з двох причин: по-перше, краще уникати будь-яких приватних ключів в Git репозиторії, особливо відкритій.
По-друге, використовуючи кілька окремих директорій, ми зможемо паралельно використовувати кілька конфігурацій Meteor Up. Вони можуть стати в нагоді наприклад, для публікації додатки на production і staging сервери.
Отже, давайте створимо нову директорію і инициализируем там Meteor Up проект:
~~~bash
mkdir ~/microscope-deploy
cd ~/microscope-deploy
mup init
~~~
<% note do %>
### Використовуємо Dropbox
Відмінний спосіб бути впевненим у тому, що ви і ваша команда використовуєте одні й ті ж налаштування - це створити директорію конфігурації Meteor up на Dropbox або схожому сервісі.
<% end %>
### Конфігурація Meteor Up
Під час ініціалізації нового проекту, Meteor Up створить два файли: `mup.json` і `settings.json`.
`mup.json` буде містити установки для публікації, а `settings.json`, в свою чергу - всі налаштування, що стосуються нашого застосування (OAuth токени, токени аналітики і т.д.).
Наступним кроком буде конфігурація `mup.json`. Ось файл, за замовчуванням створений командою `mup init`, в якому все що вам потрібно - це заповнити поля:
~~~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" %>
Давайте розберемося в цих налаштуваннях.
**Server Authentication**
Як ви могли помітити, Meteor Up підтримує аутентифікацію за допомогою пароля і private key (PEM), що робить можливим використання практично будь-якої хмарної платформи.
Важливо: якщо ви віддасте перевагу використовувати аутентифікацію за допомогою пароля, спершу необхідно встановити shpass ([прочитайте тут] (https://gist.github.com/arunoda/7790979)).
**Конфігурація MongoDB**
Наступним кроком буде настройка MongoDB для нашого застосування. Ми рекомендуємо використовувати [MongoHQ] (https://www.mongohq.com/home), або будь-яку іншу хмарну платформу, яка надає професійну підтримку і висококласні інструменти управління.
Якщо ви вирішили використовувати MongoHQ, поставте `false` для `setupMongo` і додайте змінну оточення `MONGO_URL` в блок `env` вашого файлу `mup.json`. Якщо ж ви вирішили хостити MongoDB за допомогою Meteor Up, то просто поставте `true` для `setupMongo`, і Meteor Up зробить інше за вас.
**Шлях до Meteor-додатку**
Тому конфігурація Meteor Up знаходиться в окремій директорії, нам потрібно буде вказати шлях до нашого додатком за допомогою властивості 'app'. Просто помістіть в значення цієї властивості повний шлях до директорії з вашим додатком на локальній машині. Ви можете отримати цей шлях, набравши в терміналі команду 'pwd', перебуваючи в кореневій директорії вашого застосування.
**Змінні оточення**
Ви можете вказати всі ваші змінні оточення (напр. `ROOT_URL`,` MAIL_URL`, `MONGO_URL`) у блоці `env`.
### Налагодження та публікація
Перш ніж ми опублікуємо додаток, ми повинні налаштувати сервер для обслуговування нашого Meteor-додатку. Чари Meteor Up полягають в тому, що він інкапсулює всю складну машинерію в одну команду!
~~~bash
mup setup
~~~
Це займе деякий час, залежно від потужності вашого сервера і швидкості з'єднання. Після успішної настройки, ми, нарешті, можемо опублікувати наш додаток:
~~~bash
mup deploy
~~~
Ця команда збере наш додаток і опублікує його на сервер, який ми тільки що налаштували.
### Вивід логів
Логи - досить важливі і Meteor Up надає нам простий спосіб їх вивести, маючи команду 'tail -f'. Просто наберіть:
~~~bash
mup logs -f
~~~
На цьому закінчуємо наш огляд можливостей Meteor Up. Для більшої інформації, рекомендуємо відвідати [репозиторій Meteor Up](https://github.com/arunoda/meteor-up)
Цих трьох способів публікації Meteor-додатків достатньо для більшості можливих випадків. Звичайно, багато хто з вас захоче мати повний контроль і налаштувати Meteor сервер з нуля. Але це тема іншого дня ... або книги.