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