Parse系列之后臺搭建與使用

什么是Parse?

官網:https://docs.parseplatform.org/

Github:https://github.com/parse-community

  • Parse是一個移動后端,最初由提供商Parse Inc開發。該公司于2013年被Facebook收購,并于2017年1月關閉。繼2016年宣布即將關閉后,該平臺隨后開源。 由于托管服務被關閉,Parse Platform已經發展成為一個開源社區,擁有自己的博客,文檔和社區論壇。

  • Parse是一個基于云端的后端管理平臺。對于開發者而言,Parse提供后端的一站式和一攬子服務:服務器配置、數據庫管理、API、影音文件存儲,實時消息推送、客戶數據分析統計、等等。這樣,開發者只需要處理好前端/客戶端/手機端的開發,將后端放心的交給Parse即可。目前Parse支持超過50萬個App。摘自淺談 Parse

  • Parse可以讓一個作為Android/IOS開發的你,不用后臺開發人員配合就可以處理后臺數據,并且其有專門的用戶系統,消息推送功功能等等,而且API簡單易用,雖然坑還是有,但是還是一個很值得Android開發者入手的一個框架。

Parse目前支持以下平臺語言:

snap_parse_support.png

服務器搭建

環境

  • 本人服務器為阿里云CentOs7.4系統服務器
  • XShell6

這篇文章僅記錄Parse后臺搭建與在Android中的使用,更詳細的使用介紹如果后面有時間還會總結

首先在root下創建parse目錄,然后進入到parse目錄

安裝nodejs

wget https://npm.taobao.org/mirrors/node/v12.0.0/node-v12.0.0-linux-x64.tar.xz

版本看你需要什么版本,建議8.0.0以上,Parse后臺需要Node4.3以上版本

下載完成后可以看到:

snap_wget_node.png

解壓

tar -xvf node-v12.0.0-linux-x64.tar.xz

解壓后可以看到:

snap_unzip_node.png

將原本壓縮文件刪除

rm node-v12.0.0-linux-x64.tar.xz  -f

將node-v12.0.0-linux-x64文件夾重新命名為node:

mv node-v12.0.0-linux-x64/ node

現在該目錄下為:

snap_rename_node.png

進入到node的bin目錄,執行以下命令將node和npm設置為全局命令:

ln -s /root/parse/node/bin/node  /usr/local/bin/node
ln -s /root/parse/node/bin/npm  /usr/local/bin/npm

我們 查看 /usr/locl/bin目錄可以看到已經成功了:

snap_node_ln.png

接著我們可以在終端任何地方通過npm命令下載相關的內容了

安裝MongoDB

parse服務器后臺需要搭配MongoDB,且版本要求為2.6.X,3.0.X,3.2.X

我們安裝3.2.4版本

首先在parse目錄下創建mongodb目錄,現在/root/parse目錄就有兩個目錄了:

snap_parse_dirs.png

進入mongodb目錄,輸入下載命令下載壓縮包:

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz

下載完成后解壓:

tar -xvf mongodb-linux-x86_64-rhel70-3.2.4.tgz

解壓完成后刪除壓縮包:

rm mongodb-linux-x86_64-rhel70-3.2.4.tgz -f

現在目錄為:

snap_mongodb_dir.png

再執行命令將mongodb-linux-x86_64-rhel70-3.2.4目錄所有東西剪切到mongodb目錄:

mv mongodb-linux-x86_64-rhel70-3.2.4/* ./
rm mongodb-linux-x86_64-rhel70-3.2.4/ -rf

最后mongodb目錄下為:

snap_mv_mogodb_dir.png

在mongodb目錄創建一個目錄data:

mkdir data
cd data  //進入data目錄

//創建兩個目錄
mkdir db //存放數據文件
mkdir logs //存放日志文件

再進入到mongodb的bin目錄,可以看到該目錄下有以下命令文件:

snap_mongodb_bin.png

進入到parse-server/bin目錄,執行以下命令將mongo設置為全局命令:

ln -s /root/parse/mongodb/bin/mongo /usr/local/bin/mongo

在這里我們需要創建一個mongodb的配置文件(怎么創建文件不用說了吧??):

dbpath = /root/parse/mongodb/data/db
logpath = /root/parse/mongodb/data/logs/mongodb.log
port = 27017
fork = true
logappend=true
  • dbpath:設置數據文件存放目錄
  • logpath:設置日志文件的存放目錄及其日志文件名
  • port:設置端口號(默認為27017)
  • fork:設置為以守護進程的方式運行,即在后臺運行
  • logappend:開啟日志追加添加日志

啟動mongodb

./mongod --config mongodb.conf 

//下面為成功后的返回
[root@izj6c0bdyow5dsyv3ptlfez bin]# ./mongod --config mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 1696
child process started successfully, parent exiting

輸入命令查看端口:

netstat -tunpl

可以看到mongodb已經啟動且在監聽27017端口:

snap_mongodb_start.png

最后在瀏覽器輸入:

http://{你的服務器ip}:27017/

可以看到以下信息:

snap_mongodb_connect.png

注意:如果你用的服務器需要配置網絡安全組的話,請到添加一個27017端口的網絡安全組,否則該端口沒有訪問權限。且測試完之后最好關閉該端口的外網訪問權限,否則端口有可能被攻擊。曾經本人團隊由于服務器開啟了27017端口的外網訪問權限,導致數據庫被黑,要給黑客錢才能拿回舊數據,所幸當時處于測試階段,造成不了什么損失。

安裝Parse后臺

可在任何目錄下執行安裝parse-server命令:

npm install -g parse-server

最后會下載在/root/parse/node/lib/node_modules目錄下:

snap_parse_server_install.png

進入到parse-server/bin目錄,執行以下命令將parse-server設置為全局命令:

ln -s /root/parse/node/lib/node_modules/parse-server/bin/parse-server /usr/local/bin/parse-server

然后啟動parse后臺服務:

parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/parse &
  • mongodb://localhost/parse 配置在mongodb的parse數據庫下
  • & 代表讓parse-server在后臺運行,不阻塞當前終端

執行成功后可以看到以下信息:

snap_parse_server_start_success.png

我們可以執行mongo命令查看數據庫:

mongo
> show dbs
snap_mongodb_parse_db.png

安裝Parse管理面板

執行以下命令安裝管理面板

npm install -g parse-dashboard

會下載在/root/parse/node/lib/node_modules目錄下:

snap_parse_dashboard_download.png

進入到parse-dashboard/bin目錄,創建配置文件parse-dashboard.conf(可隨便命名):

{
  "apps": [
    {
      "serverURL": "http://localhost:1337/parse",
      "appId": "myappid",
      "masterKey": "myappkey",
      "appName": "MyApp"
    }
  ],
  "users": [
    {
      "user":"admin",
      "pass":"admin"
    }
  ]
}
  • serverURL:parse服務器地址
  • appid:你的應用id
  • masterKey:你的應用的masterKey
  • appName:應用名稱
  • users:管理面板的登錄賬號

關于配置文件,目前上面例子只是一個最簡單的單個app管理面板,更多相關配置可以看:https://github.com/parse-community/parse-dashboard

啟動parse-dashboard服務:

./parse-dashboard --config parse-dashboard.conf --allowInsecureHTTP &
  • allowInsecureHTTP:允許遠程訪問http協議的管理面板
  • & 后臺啟動,不阻塞當前終端進程

成功后會提示:

snap_parse_dashboard_start_success.png

阿里云這邊需要開啟安全組允許外網4040端口:

snap_safety_port.png

最后,在瀏覽器輸入

http://{你的服務器ip}:4040/

可以看到以下內容證明配置成功:

snap_parse_dashboard_login.png
snap_parse_dash_board_details.png

安裝總結

主要需要四步:

  1. 安裝nodejs
  2. 安裝mongodb
  3. 安裝parse-server
  4. 安裝pase-dashboard

使用問題

我們在終端調用命令:

parse-server ... //啟動parse服務
parse-dashboard ... //啟動管理面板服務

啟動parse服務和管理面板服務后,一旦關閉終端,我這里是關閉XShell6,再輸入管理面板的ip+端口會發現無法訪問,重新連接XShell會發現parse-server進程和parse-dashboard進程都被殺掉了。后面發現,僅僅通過&無法保證在終端中創建的進程不被殺掉,可以通過&+()方式,或者setsid將命令提交后不受本地終端關閉影響。

Linux 技巧:讓進程在后臺可靠運行的幾種方法

Android端代碼

在root build.gradle文件添加:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

在你項目例如app下的build.gradle添加:

dependencies {
    implementation "com.github.parse-community.Parse-SDK-Android:parse:1.20.0"
}

創建一個用戶類:

@ParseClassName("user")
public class UserObject extends ParseObject {
    public static String USER_ID = "user_id";
    public static String USER_NAME = "user_name";

    public void setUserId(String userId){
        if (userId != null){
            put(USER_ID, userId);
        }
    }

    public String getUserId() {
        return getString(USER_ID);
    }

    public void setUserName(String userName) {
        if (userName != null){
            put(USER_NAME, userName);
        }
    }

    public String getUserName() {
        return getString(USER_NAME);
    }
}
  • ParseClassName注釋:類似于數據庫中的表名,數據庫中會有一個類與當前類匹配

初始化:

ParseObject.registerSubclass(UserObject.class);
Parse.initialize(new Parse.Configuration.Builder(this)
      .applicationId("YOUR_APP_ID")
      // if defined
      .clientKey("YOUR_CLIENT_KEY")
      .server("http://{YOUR_SERVER_IP}:1337/parse/")
      .build()
    );
  • ParseObject.registerSubclass:該類只有經過注冊了才能使用,會聯系parse數據庫的user類

插入數據:

UserObject userObject = new UserObject();
userObject.setUserId("10000");
userObject.setUserName("SamLeung");
userObject.saveInBackground(new SaveCallback() {
    @Override
    public void done(ParseException e) {
        Log.e("TAG", "save user done: " + e != null ? "success" : e.getMessage());
    }
});
  • e為null則代表無異常,保存成功
  • e不為null則代表異常,保存失敗

執行后可以在DashBoard中看到保存的內容:

snap_android_sdk_save_success.png

更多Android端API可參考:https://docs.parseplatform.org/android/guide/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容