2015年開始使用Parse Server,用作自己開發(fā)的iOS應(yīng)用的后臺,可是剛開發(fā)了兩個APP,Parse Server就宣布停止服務(wù)了,截止日期是2017年1月28日。
隨著這個日子越來越逼近,自己也一直在糾結(jié)怎么處理這兩個應(yīng)用。停止服務(wù)?遷移到LeanCloud?還是自己搭建Parse Server來維護(hù)?
中間糾結(jié)過也探索過,尤其想遷移到LeanCloud,因?yàn)樽约簩Ψ?wù)器端開發(fā)的了解幾乎等于零。但隨著LeanCloud收費(fèi)的改變,和遷移到LeanCloud時遇到的種種坑。最終決定自己來搭建Parse Server,順帶也學(xué)習(xí)一點(diǎn)服務(wù)器端開發(fā)相關(guān)的知識吧。
首先是云服務(wù)器和域名的購買,現(xiàn)在產(chǎn)品非常多,國外的AWS,微軟等,國內(nèi)有阿里云,百度云,騰訊云等等。在拿到騰訊云的7天試用之后,覺得基本滿意,所以就繼續(xù)用騰訊云了,順帶注冊了域名。整個過程非常簡單,不像以前那么麻煩了。
開始遷移
Parse官方給出的遷移步驟:Migrating an Existing Parse App
Parse官方的Github:parse-server
個人感覺遷移的內(nèi)容寫的比較粗略,而且東西比較散亂,可能是我對服務(wù)器開發(fā)不熟悉的緣故吧。
最終指引我安裝的主要是下面幾篇文章,都不是官方的。(殘念)
How To Run Parse Server On Ubuntu 14.04
How To Migrate a Parse App to Parse Server on Ubuntu 14.04
通過上面的兩篇,基本搞定了Parse Server最基本的配置,啟動和運(yùn)行,同時把我在Parse.com的其中一個應(yīng)用的數(shù)據(jù)遷移到了自己的服務(wù)器。
然后配置DashBoard
How to setup parse-dashboard alongside parse-server on Digital Ocean
如果你搞定了這一步,那么恭喜你,基本上70%的工作都完成了。
剩下的問題:
第一個問題就是圖片問題,遷移的時候并沒有把圖片文件遷移過來,所以一旦Parse.com服務(wù)中斷,所有的圖片就無法訪問了。因此還需要把圖片遷移到自己的服務(wù)器中。
所以需要做的事是:
在自己的服務(wù)器中,為Parse Server配置File Server Adapter
看這邊的介紹 [parse-server-fs-adapter] (https://github.com/parse-server-modules/parse-server-fs-adapter)用parse-files-utils這個工具把圖片文件從Parse.com下載下來,并放置到上面配置的那個文件目錄中去。
Push問題:
Push Overview
Push Configuring Clients
Push相對來說比較簡單了,服務(wù)器端配置下.p12文件,修改下客戶端就可以了。
最后給出我的index.js文件供大家參考
// Packtor Server
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var ParseDashboard = require('parse-dashboard');
var path = require('path');
var FSFilesAdapter = require('parse-server-fs-adapter');
var fsAdapter = new FSFilesAdapter({
"filesSubDirectory": "learnpaint/files"
});
var databaseUri = process.env.DATABASE_URI || 'mongodb://dbuser:password@your_domain:27017/your_dbname?ssl=true';
if (!databaseUri) {
console.log('DATABASE_URI not specified, falling back to localhost.');
}
// Set up parse server
var api = new ParseServer({
databaseURI: databaseUri,
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'your_app_id',
masterKey: process.env.MASTER_KEY || 'your_app_master_key',
serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',
publicServerURL: 'https://your_domain/parse',
filesAdapter: fsAdapter,
push: {
ios: [
{
pfx: '/home/parse/files/xxxxxxx.p12', // The filename of private key and certificate in PFX or PKCS12 f$
passphrase: '', // optional password to your p12
bundleId: 'your_boundle_id', // The bundle identifier associate with your app
production: false // Specifies which environment to connect to: Production (if true) or Sandbox
},
{
pfx: '/home/parse/files/xxxxxxx.p12', // The filename of private key and certificate in PFX or PKCS12 fo$
passphrase: '', // optional password to your p12
bundleId: 'your_boundle_id', // The bundle identifier associate with your app
production: true // Specifies which environment to connect to: Production (if true) or Sandbox
}
]
}
});