如何將 Parse 服務器遷移到 Heroku 或 AWS

做者:AppCoda,原文連接,原文日期:2016-04-16
譯者:Crystal Sun;校對:numbbbbb;定稿:Channegit

我以前寫過這篇文章 Migrating a parse database to a self-host MongoDB instance,在此次的春季輔導教程中,咱們看一下如何將 parse 服務器遷移到 Heroku 或 Amazon Web Service。程序員

對於還不瞭解 Parse 之死的人來講,這意味着服務器(處理數據、與數據庫互動、發送接收請求等待)須要遷移到其餘地方了。Parse,後端即服務(BaaS),爲開發者提供服務器和數據庫的服務。然而,Parse 已在一月份關閉,官方建議,在 2017 年 1 月 28 日完全中止服務以前,請遷移 Parse 應用。Parse 官方建議你先遷移數據庫,而後在遷移服務器。本教程假定你已經完成了數據庫的遷移,正如咱們在上篇教程第一部分中所作的。github

幸運的是,parse-server(GitHub 項目,由 Facebook 開源,『偉大的』 Parse 統治者)能夠部署在大部分的雲服務上。在本節教程裏,咱們會講述如何將 parse-server 部署到Salesforce 旗下知名的雲服務供應商 Heroku。在本篇文章的最後部分,咱們會演示如何部署到 Amazon Web Services(AWS)上,世界上不少知名的 App 都在使用 AWS 的服務。mongodb

準備開始

首先到 Heroku.com 網站註冊一個賬號。爲了演示 demo,我選擇了免費方案。你根據本身的須要,選擇合適的方案,好比付費方案。你能夠在這裏看到全部的付費方案。數據庫

部署到 Heroku 有兩種方法可供選擇。第一種是點擊 Deploy to Heroku 按鈕,而後出現一步接一步的提示流程,由於 Parse 已經在 Heroku 的服務器上設置過 parse-server 了,對非 JavaScript 程序員來講,這多是最簡單的方法了。若是你熟悉 git 和命令行,請使用克隆應用而後用命令行完成。話雖如此,可是你不能一生都避免使用命令行。無論你選擇那種方式,都會涉及到命令行的。swift

方法 1:使用 Heroku 按鈕

點擊上面的按鈕,建立一個新的 heroku 應用,你會看到相似下方圖片的界面:後端

設置嚮導出現,讓你輸入應用名稱(所有小寫且不容許有空格)。api

接下來,選擇 runtime 選項。若是你住在美國,選擇 United States(美國),其餘地方,選擇 Europe(歐洲)。runtime 選項,就是你但願你的應用部署在哪一個地方。考慮到性能和速度,最好將應用服務器部署在離你較近的地方。安全

接下來更新配置,填寫 Parse 帳戶裏對應的密鑰(或者生成新的密鑰,若是你不是遷移現存應用的話,這點之後再說)。安裝路徑爲 /parsebash

當你填完全部的字段後,點擊 deploy 按鈕,暫時先空着 MongoLab(也就作 mLab)開發。


可能須要你輸入你的信用卡。

方法 2:克隆 Heroku 應用

parse-server 是開源項目,能夠在 GitHub 上下載。若是你選擇的是命令行而不是點擊 Heroku 按鈕,那麼繼續下方的操做。開始前,先打開終端(Terminal),使用下方的命令來克隆應用:

bash
cd ~
cd Desktop
 
git clone https://github.com/ParsePlatform/parse-server-example.git
git add .
git init
git commit -m "Initial Commit"


如今,你已經成功地將 parse-server 克隆到桌面了。

修改數據庫的 URI

無論你在上面選擇了哪一個方式,如今你的應用在必定程度上已經設置過了。若是你使用是方法 1,你須要在你電腦裏複製一份本地代碼副本,首先用下列命令行(也會將 App 克隆到電腦桌面)。

注意:下方的選項適用於選擇了方法 1 的人

bash
$ heroku login 
 
$ cd ~/Desktop
$ heroku git:clone -a your-app-name
$ cd your-app-name
 
$ git add .
$ git commit -am "make it better"
$ git push heroku master

登陸後,須要輸入認證(以後會詳細說明,不過如今只須要輸入 Heroku 賬號的郵箱和密碼,密碼不會出如今屏幕上)。

如今,打開你最喜歡的文本編輯器(我比較喜歡 Sublime Text),打開新克隆的庫(repository)(對於新手來講,你能夠直接將整個文件夾拖到 sublime text 圖標上,而後 sublime text 會自動打開文件,或者使用頂部菜單的 File -> Open)。

如今,咱們須要打開 index.js 文件,修改 API 變量。注意第 14-23 行。

從第 14 行開始,咱們須要修改 databaseURL 參數。使用在本教程第一部分生成的路徑來替換參數。我會使用下面的 url,不過你必須用你本身的 url 來替換。

mongodb://admin:mypassword@ds017678.mlab.com:17678/appcoda-test

接下來,咱們須要填寫 appIdmasterKey 參數。若是你是在遷移一個已經存在的應用,到 parse.com 上找到對應的數據。若是這是你第一次使用 parse-server 建立一個新工程,你能夠生成隨機的字母數字密鑰。

在 parse.com 網站上登陸你的 Parse 賬號,找到 Settings(設置),選擇 Security & Keys。複製粘貼你的 Application ID(複製這個應用,不要複製成其餘應用的)和 Master Key。下面的圖片可供你參考(個人密鑰出於安全考慮遮擋)。

注意:若是你選的是方法 1,那已經設置了你的密鑰,你能夠直接跳過這一步。即便如此,我仍是建議你看一下,這樣你能對 parse-server 的工做機制有更深刻的理解。

index.js 文件裏替換上你剛剛複製來的新密鑰,你也能夠添加 clientKey 做爲一個參數,從 Parse 中獲取。

最後,記住保存你的操做,快捷鍵 Command+S(Mac 電腦上)。

若是你不是遷移應用,那麼使用隨機生成器(例如 random.org 或其餘相似的東西)來生成字母數字密鑰。

接下來,部署 Heroku。

將 Parse 服務器部署到 Heroku

首先在電腦上安裝 Heroku 工具條,從連接中能夠找到官方安裝指南。安裝完成後,在終端(Terminal)中輸入下列命令行:

bash
heroku login

接下來輸入登陸 Heroku 信息,注意當你輸入密碼的時候,密碼不會出如今屏幕上。

若是你選擇的是方法 1,就沒有必要用下面的命令行建立一個 Heroku 應用了。若是你選擇的是方法 2,確保輸入下列命令行來建立一個 Heroku 應用。

bash
heroku create

Heroku 會給你建立一個應用,如今提交修改內容,代碼以下:

bash
git add .
git init
git commit -m "Updated api config"
git push heroku master

如今,你已經成功部署了 Heroku!若是你遇到任何錯誤,請在下方的評論欄中留言,我將盡力幫助你。

設置 Heroku 的環境變量

接下來,咱們須要設置 Heroku 的環境變量,回到終端(Terminal),輸入下列命令(使用你的 MongoDB 實例中的 URI,咱們以前介紹過)。

bash
heroku config:set DATABASE_URI=mongodb://admin:mypassword@ds017678.mlab.com:17678/appcoda-test

回到 Heroku 網頁上,點擊你的應用,在 Settings tab 頁下,點擊 reveal config variables

如今你應該能夠看到 Heroku 的 config Variables 裏有了 database URI。

恭喜你!你的 parse-server 已經成功地部署到了 Heroku。惟一的問題是:尚未鏈接到你的 iOS 應用上

定位 Parse 服務器的 URL

爲了可以將你的應用鏈接到新的 parse-server,首先要從 Heroku 應用設置裏定位託管地址(hosting url)。

回到 index.js ,找到第 27 行,注意找 moutPath 變量是 /parse

這個變量表示 parse 在 Heroku 服務器上的地址。目前來講,地址是 /parse。因此,能夠在 yourapp.herokuapp.com/parse(改爲你本身的域名) 中訪問 parse-server。

設置 iOS 應用

如今,咱們已經正確地配置和部署了服務器,是時候來設置 iOS 應用設置選項了,讓 iOS 應用鏈接到新的 parse 服務器上。

在 Xcode 裏,打開應用,選擇 appdelegate.swift 文件,刪除你之前的 app key 和 client key(而後寫上你本身的密鑰和服務器的 url)。

把下面這段代碼刪掉:

Parse.setApplicationId(「xxxxxxxxxxxxxxxxxxxxxxxx」, clientKey: 「xxxxxxxxxxxxxxxxxxxxxxxx」)

替換成:

let config = ParseClientConfiguration(block: {
   (ParseMutableClientConfiguration) -> Void in
   ParseMutableClientConfiguration.applicationId = "xxxxxxxxxxxxxxxxxxxxxxxx";
   ParseMutableClientConfiguration.clientKey = "xxxxxxxxxxxxxxxxxxxxxxxx";
   ParseMutableClientConfiguration.server = "xxxxxxxxxxxxxxxxxxxxxxxx.com/parse";
});
 
Parse.initializeWithConfiguration(config);

完成操做後,點擊 Run 按鈕,測試一下應用。正常狀況下應用會和遷移之前同樣運行。若是你使用雲代碼,可能須要修改一下代碼,來適應新的 parse 服務器環境。咱們會在下一個教程中涉及這個話題。另外,在下一個教程裏,咱們還會介紹在服務器裏託管 Parse 的 dashboard。不過如今而言,你能夠繼續使用 parse.com 的 dashboard,直到官方完全關閉服務,也就是 2017 年的一月。

恭喜!你已經成功地在 Heroku 上部署了 parse-server。

將 Parse 服務器部署到 AWS

注意:若是你已經將 parse-server 部署到了 Heroku 上,那麼就不須要再部署到 AWS 上了,畢竟你的服務器只能使用一個雲服務。這部分主要是用來參考。若是你不想使用 Heroku,想使用 AWS,能夠繼續閱讀下面的章節。我會假設你已經閱讀過上面 Heroku 部分的教程內容,若是出現一樣的設置內容,我不會贅述。

Amazon Web Services(AWS)是全球知名的雲服務提供商,爲科技界許多知名的大型公司提供雲服務。實際上,不少大型科技公司都在使用 AWS 的服務,例如蘋果公司的 iCloud,Hulu,AirBnb,Lyft,Adobe,Slack (這些都是國外知名的科技公司)等等,這些只是使用 AWS 雲存儲服務的衆多公司中一小部分。

那麼,爲何我先介紹 Heroku 呢?不一樣於 AWS 的是,Heroku 更容易設置。對於大部分的設置,你能夠直接進行無需輸入帳單信息。AWS 則不同,設置方法比較複雜。爲了演示如何部署到 AWS 上,咱們將使用另一個部署按鈕和設置嚮導,來讓全部的工做簡單流暢。

再次強調一下,若是你已經將應用部署到了 Heroku,並且對 Heroku 的服務比較滿意,你能夠直接跳過這部分了。然而,若是你對如何部署到 AWS 上感興趣,那麼讓咱們開始吧!

第一件事,到 AWS 上註冊一個 AWS 賬號,須要提供你的付款信息,這樣才能使用免費方案。

完成後,點擊下方的按鈕,建立一個新的 AWS 應用,AWS 提供一組雲服務工具,每一個工具都有本身的獨特的功能,在本節教程中,咱們使用 Elastic Beanstalk(和 Elastic Cloud Compute Engine 或簡稱 EC2 緊密相關)。

什麼是 Elastic Beanstalk ?
根據 Amazon 上的簡介,Elastic Beanstalk 是一個易於使用的,用於部署和擴展網頁應用和服務,適用的語言有 Java、.NET、PHP、Node.js、Python、Ruby、Go、Docker,例如 Apache、Nginx、Passenger 和 IIS。

是否是很炫酷?或許吧,總而言之,咱們將使用這個服務來設置和運行咱們的 parse 服務器。若是你想了解更多有關 Elastic Beanstalk 的信息,請參考官方網頁

點擊按鈕後,會出現一個增長應用名稱的界面,以下圖。

下一步,確保你的設置以下圖,而後繼續。

在接下來的界面裏使用正確的密鑰上傳 parse 設置,parse 裝在 /parse 下。

如今,點擊 upload and deploy 按鈕,完成最後一步。不出意外應用已經正確設置在 AWS 上了。

當你設置 iOS 應用時,確保你已經定位了 AWS 的 URL,能夠在 elastic beanstalk 裏找到(以下圖)。

恭喜!你成功將 parse 服務器部署到了 AWS 上!剩下須要作的事情就是用適當的密鑰和新的服務器 url 來設置 iOS 應用(後綴 /parse)。

結束

在本節教程中,咱們深刻了解了部署 parse 服務器的過程,估計如今你對部署過程已經掌握的比較牢固了。

注意,有些細節本文沒有討論。若是你使用的是雲代碼,你可能須要作一些改動才能正常運行。另外,你可能還須要一個 Parse dashboard 的替代品。幸運的是,Parse 團隊已經將 dashboard 開源了,並提供了詳盡的雲代碼更新指南。在以後的教程中,咱們會詳細討論這些內容。不過如今,你首先要將應用部署到 Heroku 或 AWS 上!

你以爲本教程怎麼樣?請留下評論,分享你的想法。

本文由 SwiftGG 翻譯組翻譯,已經得到做者翻譯受權,最新文章請訪問 http://swift.gg

相關文章
相關標籤/搜索