forked from DiscoverMeteor/DiscoverMeteor_Ru
-
Notifications
You must be signed in to change notification settings - Fork 0
/
02s-deploying.md.erb
218 lines (135 loc) · 16.2 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
209
210
211
212
213
214
215
216
217
218
---
title: Публикация приложения
slug: deploying
date: 0002/01/02
number: 2.5
sidebar: true
contents: Узнаете, как опубликовать приложение на Meteor.|Узнаете, как опубликовать приложение на Modulus.|Узнаете, как опубликовать приложение на собственный сервер с помощью Meteor Up.
paragraphs: 46
---
Некоторые предпочитают спокойно работать над проектом, пока не доведут его до совершенства, другие же напротив, стараются показать его всему миру как можно раньше.
Если вы относитесь к первой категории и сейчас предпочтете работать локально, то просто пропустите эту главу. Если же вы хотите сразу научиться публиковать 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’ на имя вашего приложения, предпочтительно свободное. Если такое имя уже используется, то Meteor может спросить у вас пароль. В этом случае просто отмените операцию набрав 'ctrl+c' и попробуйте снова, уже с другим именем.
Если все пройдет хорошо, то уже через несколько секунд вы сможете увидеть ваше приложение по адресу 'http://myapp.meteor.com'.
### Защита паролем
По умолчанию нет никаких запретов по субдоменам 'meteor.com'. Каждый может использовать любое имя, которое пожелает и перезаписать существующее приложение с таким же именем. Так что вы скорее всего захотите защитить свой домен паролем, добавив ‘-p’, как показано ниже:
~~~~bash
$ meteor deploy myapp.meteor.com -p
~~~~
Далее Meteor попросит вас ввести пароль, и после будет его спрашивать при каждой новой публикации на этот домен.
В [официальной документации](http://docs.meteor.com/#deploying) вы сможете найти больше информации по данному вопросу, например как напрямую общаться с базой данных на вашем хосте или настроить собственное доменное имя для вашего приложения.
### Публикуем на Modulus
[Modulus](https://modulus.io/) - отличное решение для публикации NodeJS приложений. Это одна из немногих PaaS (platform-as-a-service) платформ, которая официально поддерживает Meteor, и уже есть люди, которые используют ее в качестве production-решения для Meteor-приложений.
<% note do %>
### Demeteorizer
Команда Modulus выложила в открытый доступ инструмент под названием [demeteorizer](https://github.com/onmodulus/demeteorizer), который конвертирует Meteor-приложение в стандартное NodeJS приложение.
<% 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 сервер с нуля. Но это тема другого дня… или книги.