從 0 到 1,打造自己的遊戲後端服務
  • 簡介
  • 基礎服務
    • 架構介紹
    • Data 服務
    • API 服務
      • 在 Parse 服務架構簡易的 Cloud Code 部署機制
    • Notification 服務
      • Parse 推送服務設定與測試
    • Job 服務
      • 在 Parse 上透過 Cron 配置常用的 Scheduler
    • Email 服務
    • SMS 服務
    • Hosting 服務
    • Realtime 服務
      • Parse Live Query 設定
    • Information 服務
      • Parse Config 與 Firebase Remote Config 服務介紹
      • Connectivity 取得與監聽
      • Time 服務介紹與實作方法
      • IP 資料庫能獲得什麼資料
  • 遊戲服務
    • Achievement 成就系統
      • 設計簡易的成就系統 - 透過 Parse
    • Leaderboard 排行榜系統
      • 設計簡易的公開排行榜系統 - 透過 Parse
    • Pairing 配對系統
      • 設計簡易的 Dispatcherless 自動配對機制 - 透過 Firebase Realtime Database
    • Turn-based Multiplayer 回合制多人遊戲
      • 簡易的回合制多人遊戲系統 - 透過 Parse
    • Real-time Multiplayer 即時多人遊戲
      • 設計簡易的即時多人遊戲傳輸通道 - 透過 Firebase Realtime Database
  • 附錄 Self-Hosted Parse
    • Parse 服務架設
    • 建立 Parse 資料庫服務
    • 建立 Parse 服務
Powered by GitBook
On this page
  • 目錄
  • 概述說明
  • 建立虛擬機
  • 建立資料庫服務
  • 啟用資料庫身份驗證
  • 建立並設定 Parse 資料庫
  • 其他設定(選用)
  • 補充說明
  1. 附錄 Self-Hosted Parse

建立 Parse 資料庫服務

PreviousParse 服務架設Next建立 Parse 服務

Last updated 6 years ago

目錄

概述說明

Parse Service 在常見的配置上,包含「資料庫服務」用以存放資料,「Parse 伺服器」作為服務端口,「Parse Dashboard」提供簡單的管理之用。在這次的範例中,將會演示建立以 的 Compute Engine「虛擬機」為基礎的方式,逐步架設 Parse 所需的「資料庫服務」

IaaS 可依需求、價格選用合適的服務提供商,如:,

大部分的 IaaS 服務商,通常都有提供免費試用計畫,比如:,

建立虛擬機

  • 在 控制介面中,點擊「建立」,新增 VM Instance

  • 設定 Instance 相關資訊

    • 名稱:自行命名

    • 機器類型:依需求決定,範例選用微型機器

    • 開機磁碟:依需求決定,範例使用預設磁碟大小

    • 作業系統:範例選用 Ubuntu 14.04 LTS

  • 點開「管理、磁碟、網路、SSH 金鑰」,切換到「網路」頁籤,在「主要內部 IP」的選項中,點擊「預約靜態內部 IP 位址」,填入名稱進行預約,讓此主機在未來即使重新啟動,都能綁定至此內部 IP

  • 等待建立完成後,便完成了一台虛擬機的啟用。爾後可以在此畫面,管理所有建立的虛擬機。也可透過後方的按鈕,直接透過 SSH 登入到每一台虛擬機

建立資料庫服務

  • 登入資料庫虛擬機

  • 匯入 MongoDB GPG 公開金鑰

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
  • 建立 MongoDB 檔案清單

    echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  • 更新本地端套件資料庫

    sudo apt-get update
  • 安裝 MongoDB 套件

    範例使用 3.2.17 版

    sudo apt-get install -y mongodb-org=3.2.17 mongodb-org-server=3.2.17 mongodb-org-shell=3.2.17 mongodb-org-mongos=3.2.17 mongodb-org-tools=3.2.17
  • 將 MongoDB 鎖定目前版本

    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-org-shell hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections
  • 至此,基本的 MongoDB 服務已經開始運作

啟用資料庫身份驗證

剛建立起來的 MongoDB 服務,處於開放狀態,接下來將會演示,如何建立「管理者」並啟用「資料庫身份驗證」功能,來達到最基本的安全性

  • 登入本地端資料庫(登入後將會轉換成資料庫命令列)

    mongo 127.0.0.1
  • 切換至 admin 資料庫

    use admin
  • 請記得將範例中的 ADMIN_USER, ADMIN_PASSWORD 替換成您的設定值

    db.createUser(
      {
        user: "ADMIN_USER",
        pwd: "ADMIN_PASSWORD",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
  • 將資料庫授權於此帳號

    請記得將範例中的 ADMIN_USER, ADMIN_PASSWORD 替換成您的設定值

    db.auth("ADMIN_USER", "ADMIN_PASSWORD")
  • 離開資料庫連線,回到主機 SSH

    exit
  • 編輯 MongoDB 設定檔案,在檔案中加入啟用身份驗證的設定。以下腳本將直接寫入一個 Parse 可用的基本設定檔

    echo "storage:" | sudo tee /etc/mongod.conf
    echo "  dbPath: /var/lib/mongodb" | sudo tee -a /etc/mongod.conf
    echo "  journal:" | sudo tee -a /etc/mongod.conf
    echo "    enabled: true" | sudo tee -a /etc/mongod.conf
    
    echo "systemLog:" | sudo tee -a /etc/mongod.conf
    echo "  destination: file" | sudo tee -a /etc/mongod.conf
    echo "  logAppend: true" | sudo tee -a /etc/mongod.conf
    echo "  path: /var/log/mongodb/mongod.log" | sudo tee -a /etc/mongod.conf
    
    echo "net:" | sudo tee -a /etc/mongod.conf
    echo "  port: 27017" | sudo tee -a /etc/mongod.conf
    echo "  bindIp: 0.0.0.0" | sudo tee -a /etc/mongod.conf
    
    echo "security:" | sudo tee -a /etc/mongod.conf
    echo "  authorization: enabled" | sudo tee -a /etc/mongod.conf
    
    echo "setParameter:" | sudo tee -a /etc/mongod.conf
    echo "  failIndexKeyTooLong: false" | sudo tee -a /etc/mongod.conf
  • 重新啟動資料庫服務

    sudo service mongod restart
  • 至此,資料庫服務擁有了最基本的安全性。對於正式上線產品的安全性通常會有更高的要求,將會在後面介紹

建立並設定 Parse 資料庫

接下來將會在資料庫服務中,建立一個資料庫作為 Parse 服務使用,並創建一個使用者 用來存取此資料庫。

  • 以建立的管理者登入資料庫服務(登入後將會轉換成資料庫命令列)

    請記得將範例中的 ADMIN_USER, ADMIN_PASSWORD 替換成您的設定值

    mongo 127.0.0.1 -u "ADMIN_USER" -p "ADMIN_PASSWORD" --authenticationDatabase "admin"
  • 移動到欲使用的 Parse 資料庫,範例命名為 PARSE_DB

    PARSE_DB 可替換任意資料庫名稱

    use PARSE_DB
  • 新增此資料庫使用的帳號

    請記得將範例中的 PARSE_DB, PARSE_DB_USER, PARSE_DB_PASSWORD 替換成您的設定值

    db.createUser(
      {
        user: "PARSE_DB_USER",
        pwd: "PARSE_DB_PASSWORD",
        roles: [ { role: "readWrite", db: "PARSE_DB" } ]
      }
    )
  • 將資料庫授權於此帳號

    請記得將範例中的 PARSE_DB_USER, PARSE_DB_PASSWORD 替換成您的設定值

    db.auth("PARSE_DB_USER", "PARSE_DB_PASSWORD")
  • 離開資料庫連線,回到主機 SSH

    exit
  • 至此,Parse 所需使用的資料庫、使用者完成了基本的設定

其他設定(選用)

MongoDB 建議在虛擬機上關閉 transparent_hugepage 來提高機器效能,可在 init.d 中建立 script 讓每次虛擬機啟動時便關閉此功能

  • 切換目錄

    cd /etc/init.d
  • 下載腳本

    sudo wget https://gist.githubusercontent.com/kmshiori/6fa7893590603ec456817d130077351f/raw/083260422f411a866ce28ba58ec812b675ea14a0/disable-transparent-hugepages
  • 授權腳本執行權限

    sudo chmod 755 disable-transparent-hugepages
  • 讓此腳本設定為啟動時運行

    sudo update-rc.d disable-transparent-hugepages defaults

補充說明

  • 在 Google Compute Engine 啟用的虛擬機,預設網路設定僅會開啟 ICMP, RDP, SSH 等基本的協定所需之端口,若需要 MongoDB(port 27017) 能夠公開透過外部連線,則需要特別新增防火牆設定

  • MongoDB 在安全性上除了提供帳號授權功能外,也提供 TLS/SSL 模式,更能提連線的資料安全性

區域:可參考 Google 提供的來決定,亞太地區 Cloud Compute 可選擇:新加坡(asia-southeast1) 、台灣(asia-east1)、東京(asia-northeast1)、雪梨(australia-southeast1)

目前 Parse Server ,這次演示選用 3.2 版來安裝。MongoDB 針對 LTS 版本的 Ubuntu 有長期的支援,如: 12.04 LTS (precise), 14.04 LTS (trusty), 16.04 LTS (xenial)。接下來透過以下命令在 SSH 安裝 MongoDB

新增最高管理員帳號。如果想知道更多關於預設的資料庫角色,可

關於更多的資料庫設定檔說明,可

服務地點說明
支援 MongoDB 2.6.X, 3.0.X or 3.2.X
到此觀看
參考此文件
Google Cloud Platform(下稱 GCP)
AWS
Linode
GCP 免費項目
AWS 免費方案
GCP 的 Compute Engine
概述說明
建立虛擬機
建立資料庫服務
啟用資料庫身份驗證
建立並設定 Parse 資料庫
其他設定
補充說明