-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path02s-deploying.md.erb
212 lines (131 loc) · 10.7 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
---
title: Deployment
slug: deploying
date: 0002/01/02
number: 2.5
sidebar: true
contents: Meteor.com上でのデプロイする方法|モジュール上でのデプロイの方法|Meteor upを使ってサーバー上でデプロイをする方法
paragraphs: 46
version: 1.7
---
完璧になるまで静かにプロジェクトを進める人もいれば、待てずに出来次第世に公開する人もいます。
もしあなたが前者であれば、とりあえずローカルでの開発をするでしょう、そうであればこの章を飛ばしてもらって構いません。一方で、Meteor アプリをオンラインでデプロイするやり方を学びたいのであれば、ここでカバーできます。
いくつかの方法にてMeteorアプリをデプロイするのを学びます。Microscopeもしくは他のMeteorアプリで作業をしていても、開発中のどのタイミングでもそれそれ使っていただけます。
<% note do %>
### Introducing Sidebars
ここは**サイドバー**の章です。 サイドバーは、他の本の部分から離れてもっと一般的なMeteorのトピックについて深く検証していきます。
ですから、もしMicroscopeの構築を優先にしたいのであれば、今の時点ではここを飛ばして、後からここに戻ってきても全く問題ありません。
<% end %>
### Meteorのデプロイ
Meteorのサブドメイン(i.e. `http://myapp.meteor.com`) をデプロイするのは一番簡単な方法で、最初に試してみたほうがいいでしょう。この方法は、ステージングサーバーを早く設定するときや、初期段階で他の人にあなたのアプリを見せる時に役立ちます。
Meteorのデプロイはとてもシンプルです。ターミナルを開けて、Meteorアプリのディレクトリを開き、以下を入力します:
~~~bash
$ meteor deploy myapp.meteor.com
~~~
もちろん"myapp" の部分は自分がつけたい名前に変更する必要があります。使われていない名前にしたほうが良いでしょう。
もしこれがあなたにとって最初のデプロイアプリであれば、Meteorのアカウントを早速取得してください。そして全てがうまくいったら、数秒後に`http://myapp.meteor.com`.であなたのアプリにアクセスすることができます。
ホストしているインスタンスのデーターベースに直接アクセスしたり、アプリのカスタムドメインの環境の設定をするなどの情報については[the official documentation](http://docs.meteor.com/#deploying) をご参照ください。
### モジュールのデプロイ
モジュール[Modulus](https://modulus.io/) は Node.js appsをデプロイするのに最適な選択です。すでに数多くの人がMeteorアプリの制作を
その上で行っており、Meteorを公式にサポートする数少ないPaaS (platform-as-a-service) プロバイダーの中の一つです。
<% note do %>
### Demeteorizer
モジュールのオープンソースのツールでディメテオライザー[demeteorizer](https://github.com/onmodulus/demeteorizer) と呼ばれており、あなたのMeteorアプリを 標準のNode.js アプリに変換してくれます。
<% end %>
アカウントの作成[creating an account](https://modulus.io/register)から始めてください。モジュール上で我々のアプリをデプロイすると、モジュールのコマンドラインツールをインストール必要が出てきます:
~~~bash
npm install -g modulus
~~~
そして、その時に以下と一緒に認証されます。:
~~~bash
modulus login
~~~
これでモジュールプロジェクトを作成できます。(モジュールのWebのダッシュボード上でも同じようにこれができることをメモしておいてください。):
~~~bash
modulus project create
~~~
次のステップは、私たちのアプリ用にMongoDBデーターベースを作成することです。MongoDBデーターベースを[Modulus itself](https://modulus.io/codex/database/getting_started)、[MongoHQ](https://www.mongohq.com/)、 もしくは、他のクラウドのMongoDBのプロバイダーとも一緒に作ることができます。
私たちのMongoDBデーターベースを一度作ったら、MONGO_URL`をモジュールのWeb UIから私たちのデーターベース(Dashboard > Databases > Select your database > Administration へ行く)から取得できます。そして私たちのアプリの環境設定をするのに使ってください。このように:
~~~bash
modulus env set MONGO_URL "mongodb://<user>:<pass>@mongo.onmodulus.net:27017/<database_name>"
~~~
やっと私たちのアプリをデプロイする時がきました。入力するのと同じようにとても簡単です。
~~~bash
modulus deploy
~~~
これで、完璧にモジュールに私たちにのアプリをデプロイすることができました。ログへのアクセスや、カスタムドメインの設定、またSSLのなどについては [the Modulus documentation](https://modulus.io/codex/projects) をご参照ください。
### Meteor Up
日常的に新しいクラウドのあり方が出てきますが、それらは頻繁に独自の問題や限界などと面しています。そこで、今日現在では、制作中のMeteorのアプリケーションは自分のサーバーにデプロイしておくのが最善の方法といえるでしょう。ただ一つ言えるのは、特にクオリティの高い開発を目指しているのであれば、自分でデプロイするのはそれほど簡単ではないということです。
[Meteor Up](https://github.com/arunoda/meteor-up) (or `mup` for short) is another attempt at fixing that issue, with a command-line utility that takes care of setup and deployment for you. So let's see how to deploy Microscope using Meteor Up.
Before anything else, we'll need a server to push to. We recommend either [Digital Ocean](http://digitalocean.com), which starts at $5 per month, or [AWS](http://aws.amazon.com/), which provides Micro instances for free (you'll quickly run into scaling problems, but if you're just looking to play around with Meteor Up it should be enough).
Whichever service you choose, you should end up with three things: your server's IP address, a login (usually `root` or `ubuntu`), and a password. Keep those somewhere safe, we'll need them soon!
### Initializing Meteor Up
To start out, we'll need to install Meteor Up via `npm` as follows:
~~~bash
npm install -g mup
~~~
We'll then create a special, separate directory that will hold our Meteor Up settings for a particular deployment. We're using a separate directory for two reasons: first, it's usually best to avoid including any private credentials in your Git repo, especially if you're working on a public codebase.
Second, by using multiple separate directories, we'll be able to manage multiple Meteor Up configurations in parallel. This will come in handy for deploying to production and staging instances, for example.
So let's create this new directory and use it to initialize a new Meteor Up project:
~~~bash
mkdir ~/microscope-deploy
cd ~/microscope-deploy
mup init
~~~
<% note do %>
### Sharing with Dropbox
A great way to make sure you and your team all use the same deployment settings is to simply create your Meteor Up configuration folder inside your Dropbox, or any similar service.
<% end %>
### Meteor Up Configuration
When initializing a new project, Meteor Up will create two files for you: `mup.json` and `settings.json`.
`mup.json` will hold all our deployment-related settings, while `settings.json` will contain all app-related settings (OAuth tokens, analytics tokens, etc.).
The next step is to configure your `mup.json` file. Here is the default `mup.json` file generated by `mup init`, and all you have to do is fill in the blanks:
~~~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" %>
Let's walk through each of these settings.
**Server Authentication**
You'll notice that Meteor Up supports password based and private key (PEM) based authentication, so it can be used with almost any cloud provider.
**Important note**: if you choose to use password-based authentication, make sure you've installed `sshpass` first ([refer to this guide](https://gist.github.com/arunoda/7790979)).
**MongoDB Configuration**
The next step is to configure a MongoDB database for your app. We recommend using [MongoHQ](https://www.mongohq.com/home) or any other cloud MongoDB provider, since they offer professional support and better management tools.
If you've decided to use MongoHQ, set `setupMongo` as `false` and add the `MONGO_URL` environmental variable in `mup.json`'s `env` block. If you decided to host MongoDB with Meteor Up, just set `setupMongo` as `true` and Meteor Up will take care of the rest.
**Meteor App Path**
Since our Meteor Up configuration lives in a different directory, we'll need to point Meteor Up back to our app using the `app` property. Just input your full local path, which you can get using the `pwd` command from the terminal when located inside your app's directory.
**Environment Variables**
You can specify all of your app's environment variables (such as `ROOT_URL`, `MAIL_URL`, `MONGO_URL`, etc.) inside the `env` block.
### Setting Up and Deploying
Before we can deploy, we'll need to set up the server so it's ready to host Meteor apps. The magic of Meteor Up encapsulates this complex process in a single command!
~~~bash
mup setup
~~~
This will take a few minutes depending on the server's performance and the network connectivity. After the setup is successful, we can finally deploy our app with:
~~~bash
mup deploy
~~~
This will bundle the meteor app, and deploy to the server we just set up.
### Displaying Logs
Logs are pretty important and Meteor Up provides a very easy way to handle them by emulating the `tail -f` command. Just type:
~~~bash
mup logs -f
~~~
This wraps up our overview of what Meteor Up can do. For more infomation, we suggest visiting [Meteor Up's GitHub repository](https://github.com/arunoda/meteor-up).
These three ways of deploying Meteor apps should be enough for most use cases. Of course, we know some of you would prefer to be in complete control and set up their Meteor server from scratch. But that's a topic for another day… or maybe another book!