首頁  >  文章  >  資料庫  >  怎麼正確設定mongodb和redis開發環境與生產環境的設定參數

怎麼正確設定mongodb和redis開發環境與生產環境的設定參數

王林
王林轉載
2023-06-03 20:04:151479瀏覽

我們寫程式碼時,通常會先在自己電腦上進行開發,然後把程式碼部署到伺服器上。如果一段程式碼涉及讀寫資料庫,或存取某些其他的線上服務接口,那麼在開發時,為了不影響線上環境,我們一般會把測試環境的資料庫和線上環境的資料庫分開。

例如,我們的程式需要存取 MongoDB 和 Redis,所以,在程式碼裡面,我們可能會這樣寫:

import pymongo
import redis

handler = pymongo.MongoClient('mongodb://username:password@127.0.0.1:27017').db.col
client = redis.Redis(host='127.0.0.1', port=6379, password='xxxx')
 

等你要把程式部署到線上環境的時候,你手動把程式碼裡面的MongoDB 連線參數、Redis連線參數修改成線上環境的參數。然後把程式碼提交到 Git上,並在伺服器拉下最新程式碼並部署。

然而,當你想要修改一個新功能並重新進行測試時,你需要將這些連接參數修改為測試環境的參數,並在自己的電腦上進行操作。如果你忘記修改直接就運行,可能會把髒數據寫入線上環境。

於是,可能有人會使用環境變數來控制讀取的參數,例如:

import os
import redis
import pymongo

if os.getenv('env', 'prod'):  # 线上环境 
    MONGODB_URI = 'mongodb://username:password@xx.xx.xx.xx:27017'
    REDIS_PARAMS = {'host': 'xx.xx.xx.xx', 'port': 6379, 'password': 'xxxx'}
else:  # 测试环境
    MONGODB_URI = 'mongodb://username:password@127.0.0.1:27017'
    REDIS_PARAMS = {'host': '127.0.0.1', 'port': 6379, 'password': 'xxxx'}

handler = pymongo.MongoClient(MONGODB_URI).db.col
client = redis.Redis(**REDIS_PARAMS)

這樣一來,你不需要手動修改資料庫的連線參數,只要把線上環境的環境變數env#設定為prod,那麼程式部署到線上環境,它自動就會使用線上資料庫的參數。只要 其他地方,例如你電腦上,環境變數env不為prod或乾脆不存在這個環境變量,那麼自動就會使用開發環境的參數。

這樣做,確實避免了忘記修改參數所導致的問題,但還有另一個問題:如果其他人也有這個 Git 來源的存取權限,那麼他們就會知道怎麼連接線上環境的資料庫。甚至擅自操作線上環境的數據,造成安全隱患或隱私外洩。

為了更安全,可以採用使用專門的檔案存放組態參數,程式從該檔案讀取參數的方法。線上環境這個檔案放線上參數,開發環境,這個檔案寫開發參數。這個設定檔不上傳到 Git中。

例如,我們建立一個 config.json 文件,它的內容為:

{
    "MONGODB_URI": "mongodb://username:password@127.0.0.1:27017",
    "REDIS_PARAMS": {"host": "127.0.0.1", "port": 6379, "password": "xxxx"}
}
 

然後我們的程式碼這樣修改:

import os
import json
import redis
import pymongo

CONFIG_PATH = '/etc/config/config.json'
if not os.path.exists(CONFIG_PATH):
    print('配置文件不存在,自动使用测试环境参数!')
    MONGODB_URI = 'mongodb://username:password@127.0.0.1:27017'
    REDIS_PARAMS = {'host': '127.0.0.1', 'port': 6379, 'password': 'xxxx'}
else:
    with open(CONFIG_PATH, encoding='utf-8') as f:
        config = json.load(f)
        MONGODB_URI = config['MONGODB_URI']
        REDIS_PARAMS = config["REDIS_PARAMS"]
    
handler = pymongo.MongoClient(MONGODB_URI).db.col
client = redis.Redis(**REDIS_PARAMS)

以上是怎麼正確設定mongodb和redis開發環境與生產環境的設定參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除