---
title: 部署
slug: deploying
date: 0002/01/02
number: 2.5
points: 1
sidebar: true
photoUrl: http://www.flickr.com/photos/monomaniacgarage/10703829133/
photoAuthor: Monomaniacgarage
contents: 學習如何部署在 Meteor.com |學習如何部署在 Modulus |學習如何使用 Meteor Up 部署在自己的服務器上
paragraphs: 46
---
有些人不喜歡工作被打擾,直到項目足夠完美才發布,而有些人則迫不及待的要向大家展示自己的項目。
如果你是第一種人,現在寧愿在本地開發,就可以果斷跳過這一章。相反,如果你更愿意花時間去學習如何把 Meteor 應用部署到線上,我們下面為你提供一些方法。
我們將學習用來部署一個 Meteor 應用的幾種不同的方法。無論你是在開發 Microscope 或任何其他的 Meteor 應用,在開發過程的任何階段,可以隨意地從它們當中挑選一個。讓我們馬上開始吧!
<% note do %>
### 引入附錄
這是一個**附錄**章節。 不同于其他的書,本書的附錄會讓我們深入去了解更多關于 Meteor 的知識。
現在如果你更愿意去繼續構建 Microscope ,現在可以先忽略這一章,等有空再回來看也沒問題。
<% end %>
### 部署在 Meteor 上
首先最簡單的是部署到 Meteor 的子域名上(例如: `http://myapp.meteor.com` ),這是我們首先要學習的。在項目早期,這對于展示你的應用并快速設置一個測試服務器都很有用。
而部署在 Meteor 上是非常簡單的。打開終端,定位到你 Meteor 應用的目錄,并輸入:
~~~bash
meteor deploy myapp.meteor.com
~~~
當然,你要把“myapp”替換成你想要的名字,最好是一個沒有被使用的名字。如果名稱已經被使用,Meteor 會提示你輸入密碼。如果發生這樣的情況,只需通過 `ctrl+c` 來取消當前操作,然后用另一個不同的名字再試一次。
如果順利地部署成功了,幾秒鐘后你就能夠在 `http://myapp.meteor.com` 上訪問到你的應用了。
你可以參考[官方文檔](http://docs.meteor.com/#deploying),了解更多關于如何直接訪問你域名下的數據庫,或者為你的應用設置一個自定義域名等相關信息。
### 部署在 Modulus 上
[Modulus](https://modulus.io/) 是一個部署 Node.js 應用的很好選擇。這是為數不多的 PaaS(platform-as-a-service 平臺即服務)提供商,并且已經正式支持 Meteor ,已經有不少人在它上面搭建 Meteor 應用了。
你可以通過閱讀他們的[部署 Meteor 應用指南](http://help.modulus.io/customer/portal/articles/1647770-using-meteor-with-modulus)了解更多關于 Modulus 的信息。
### Meteor Up
雖然每天都有新的云端解決方案出來,但是它們通常都有自己的一些問題和限制。目前,把 Meteor 應用部署在自己的服務器上才是最好的方式。然而麻煩的是,部署到自己的服務器并不是那么簡單,尤其是如果你注重產品部署上去的質量的話。
[Meteor Up](https://github.com/arunoda/meteor-up) (簡稱 `mup` )是另一個通過命令行的操作去幫助你解決安裝和部署問題。所以,讓我們看看如何通過 Meteor Up 部署 Microscope。
在此之前,我們需要一臺發布用的服務器。我們建議使用 [Digital Ocean](http://digitalocean.com)(每月最低5美元),或者 [AWS](http://aws.amazon.com/)(它為小型實例提供免費,如果你只是想試玩下 Meteor Up 已經足夠了)。
無論選擇哪種服務,你應該要解決這三樣東西:你服務器的 IP 地址,登錄賬號(通常是 `root` 或者 `ubuntu` )和登錄密碼。將它們安全地保存起來,我們很快就會用到。
### Meteor Up 的初始化
首先,我們需要通過 `npm` 安裝 Meteor Up:
~~~bash
npm install -g mup
~~~
然后我們將創建一個單獨的目錄,為我們的 Meteor Up 提供一個特定的部署環境。我們使用單獨的目錄出于兩個原因:第一,這可以很好地避免在里面包含任何你的 Git 代碼庫的隱藏文件,尤其當你是在公共代碼庫中操作。
第二,通過使用多個單獨的目錄,我們能夠并行地進行多個 Meteor Up 管理和配置。這將會用在實際產品的部署以及分段實例的部署上。
所以我們來創建這個新目錄,并使用它來初始化一個新的 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 token、Analytics token,等等)。
下一步就是去配置你的 `mup.json` 文件。 `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" %>
讓我們了解一下這些設置。
**服務器身份驗證**
你會注意到 Meteor Up 提供了基于密碼和基于私鑰(PEM)的身份驗證,所以它幾乎可以用于任何的云提供商。
**重要提示**:如果你選擇使用基于密碼的身份驗證,確保你在這之前已經安裝了 `sshpass` ([使用指南](https://gist.github.com/arunoda/7790979))。
**MongoDB 配置**
下一步是為你的應用配置 MongoDB 數據庫。我們建議使用 [Compose](https://www.compose.io) 或者其他提供云端 MongoDB 的提供商,因為它們提供專業支持和更好的管理工具。
如果你決定使用 Compose,把 `setupMongo` 設置為 `false` ,并添加 `MONGO_URL` 環境變量到 `mup.json` 中的 `env` 模塊。如果你決定通過 Meteor Up 訪問 MongoDB,只需要設置 `setupMongo` 為 `true` ,Meteor Up 隨后會完成剩余的工作。
**Meteor 應用路徑**
因為 Meteor Up 的配置作用在不同的目錄,我們需要通過 `app` 屬性去把 Meteor Up 指回到應用。只需要設置完整的本地路徑,在位于應用目錄里面的時候,你可以使用 `pwd` 命令去獲取它。
**環境變量**
你可以在 `env` 模塊中指定應用的所有環境變量(比如: `ROOT_URL` , `MAIL_URL` , `MONGO_URL` 等等)。
### 設置和部署
在可以部署之前,我們還需要設置服務器為 Meteor 應用托管。Meteor Up 把這個復雜的過程封裝在一條簡單的命令中!
~~~bash
mup setup
~~~
可能需要幾分鐘,這取決于服務器的性能和網絡連接速度。設置成功后,終于可以部署我們的應用了:
~~~bash
mup deploy
~~~
這將會打包我們的 Meteor 應用并部署到剛剛設置好的服務器上。
### 顯示日志信息
日志也是非常重要的,通過模仿 `tail -f` 命令,Meteor Up 提供了非常簡單的方法去處理它,輸入:
~~~bash
mup logs -f
~~~
這一小節概述了 Meteor Up 的用法。要了解更多關于它的信息,我們建議看看 [Meteor Up 在 GitHub 上的詳細介紹](https://github.com/arunoda/meteor-up)
這三種部署 Meteor 應用的方式應該足夠滿足大多數的案例了。當然,我們知道一些人會喜歡更進一步地控制和設置他們的 Meteor 服務器。然而這將會是另一個主題,或者另一本書的內容!