使用docker部署本地Parse Server環(huán)境的一些坑

https無法連接,或者提示證書錯誤等

注意,Mac自帶nginx,如果沒有關(guān)閉Mac自帶的nginx,那么是無法連接docker中的nginx的。

mongodb連接失敗

注意,Mac上是否安裝了mongodb,如果存在,那么是無法連接docker中的mongodb的。

mongodb tls支持

主要參考這篇手冊Configure mongod and mongos for TLS/SSL

關(guān)鍵就在于

當(dāng)mongodb支持tls時,客戶端/Parse Server我們還是采取SCRUM模式(即我們通常的用戶名/密碼模式),不過此時需要指明tls參數(shù)。 例如:

mongosh --username=parse --host=localhost --port=27017 --authenticationDatabase=parse_server_database --tls --tlsAllowInvalidCertificates 

需要注意的是,對于自簽名證書,我們還是需要指定--tlsAllowInvalidCertificates,因為該證書不被系統(tǒng)信任 (這點有點奇怪,因為我已經(jīng)添加了自簽名的CA證書到Mac系統(tǒng)的鑰匙串中,如果有知道的同學(xué),請告知)

mongod.conf文件的修改

添加tls的內(nèi)容,指定key的位置

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/localhost.pem

注意這個key必須包含全驗證鏈的證書+私鑰。如果是使用了自簽名證書并且直接用自簽名證書頒發(fā)的服務(wù)器證書,則可以直接用如下的命令,將服務(wù)器證書和私鑰合并到一個文件即可。如果參考使用Openssl為localhost生成ssl證書

cat localhost.crt localhost.key > localhost.pem
在compose.yaml文件中,mongo部分,映射localhost.pem
  mongo:
  ...
    volumes:
      - ./mongo/data/db:/data/db
      - ./mongo/config/mongod.conf:/etc/mongo/mongod.conf:ro
      - ./mongo/crt/localhost.pem:/etc/ssl/localhost.pem:ro
      - ./mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d:ro
      - ./logs/mongo:/var/log/mongodb
  ...
修改Parse server的配置文件

databaseURI指定tls=true

{
  "appId": "APPLICATION_ID",
  "masterKey": "MASTER_KEY",
  "appName": "Hello World",
  "serverURL": "https://inspirelife.test/parse",
  "publicServerURL": "https://inspirelife.test/parse",
  "cloud":"/parse-server/cloud/main.js",
  "databaseURI": "mongodb://parse:parse@mongo/parse_server_database?tls=true&tlsAllowInvalidCertificates=true"
}

重新啟動所有docker的鏡像,此時parse server和mongo連接時,以tls方式進行連接。

當(dāng)然,我們使用第三方工具/或者從客戶端連接mongo時,同時也需要指定tls=true,最簡單的就是使用鏈接字符串

URI = "mongodb://parse:parse@mongo/parse_server_database?tls=true&tlsAllowInvalidCertificates=true"

字符串的官方說明
Standard Connection String Format

mongodb 技術(shù)支持

盡量參考官方文檔,下面的表根據(jù)角色需要,進行了分類,我們可以選擇需要的文檔進行查閱。

Introduction Developers Administrators Reference
Introduction to MongoDB CRUD Operations Production Notes Shell Methods
Installation Guides Aggregation SQL to MongoDB Indexes
Databases and Collections Replica Sets Sharded Clusters MongoDB Security
Documents Query Operators Reference Glossary
關(guān)于mongodb的數(shù)據(jù)庫備份,復(fù)制,遷移

db.copyDatabase等API已經(jīng)棄用,官方推薦使用mongodumpmongorestore

關(guān)于Parse Server的配置文件
{
  "appId": "APPLICATION_ID",
  "masterKey": "MASTER_KEY",
  "appName": "Hello World",
  "serverURL": "https://inspirelife.test/parse",
  "cloud":"/parse-server/cloud/main.js",
  "databaseURI": "mongodb://parse:parse@mongo/parse_server_database"
}

之前我們是這么配置的,在開發(fā)過程中,卻發(fā)現(xiàn)文件存儲的地址是http形式,而不是https,調(diào)查發(fā)現(xiàn),文件存儲時,采用的是publicServerURL,因此我們需要指定publicServerURL為https,因此在配置文件中添加:

  "publicServerURL": "https://inspirelife.test/parse",
Parse Server啟動提示:WARNING, Unable to connect to 'https://www.inspirelife.test/parse'. Cloud code and push notifications may be unavailable!

只要https://inspirelife.test/parse/health返回{"status":"ok"}就不需要理這個警告了。

Parse Server Cloud Code調(diào)用一些Parse API時返回“Unable to connect to the Parse API”

這邊有討論,大概的論點就是Node拒絕自簽名證書的認(rèn)證,因此訪問失敗。
https://github.com/parse-community/parse-server/issues/411

APP運行時如果出現(xiàn)SSL Connection Error

如果服務(wù)器配置正確的話,那么就是由于私有證書的根證書是不存在于iPhone Simulator的,因此還是無法通過SSL連接。
所以我們需要把自簽名的根證書添加到iPhone Simulator中,現(xiàn)在可以在iMac上右鍵點擊自簽名根證書文件,通過發(fā)送到Simulator即可發(fā)送到。

在Simulator中通過Setting-》About -》Certificate Trust Settings -》激活剛才發(fā)送的證書即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 搭建線上環(huán)境需要做什么?1、購買域名。2、購買服務(wù)器(就是一臺帶外網(wǎng)ip的虛擬電腦)。3、配置服務(wù)器應(yīng)用環(huán)境(用戶...
    LoveBugs_King閱讀 2,327評論 0 2
  • 第1章 NoSQL 介紹 1.1 NoSQL 簡介 1.2 什么是 NoSQL 1.3 為什么使用 NoSQL ?...
    zwb_jianshu閱讀 1,920評論 0 2
  • 官網(wǎng)下載mongondbhttps://www.mongodb.com根據(jù)系統(tǒng)選擇相應(yīng)版本。(這里是3.6,最新的...
    xyzcmu閱讀 731評論 0 0
  • 一、 背景 當(dāng)我們從MongoDB中刪除文檔或集合時,MongoDB并不會將已經(jīng)占用了的磁盤空間釋放,它會一直維護...
    Bogon閱讀 2,482評論 0 1
  • 背景 這段時間負(fù)責(zé)公司運維工作,多個私有云服務(wù)器快到期了,因此線上服務(wù)和數(shù)據(jù)需要遷移備份,但是如果在同一臺機器上部...
    誰把月亮涂黑啦閱讀 1,504評論 1 19

友情鏈接更多精彩內(nèi)容