Wenn wir Code schreiben, entwickeln wir ihn normalerweise zuerst auf unserem eigenen Computer und stellen ihn dann auf dem Server bereit. Wenn ein Code das Lesen und Schreiben einer Datenbank oder den Zugriff auf andere Online-Dienstschnittstellen umfasst, trennen wir während der Entwicklung im Allgemeinen die Datenbank in der Testumgebung und die Datenbank in der Online-Umgebung, um die Online-Umgebung nicht zu beeinträchtigen.
Zum Beispiel muss unser Programm auf MongoDB und Redis zugreifen, also könnten wir im Code so schreiben:
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')
Wenn Sie das Programm in der Online-Umgebung bereitstellen möchten, ändern Sie die MongoDB-Verbindungsparameter und Redis-Verbindungsparameter im Code manuell in die Parameter der Online-Umgebung. Senden Sie dann den Code an Git, rufen Sie den neuesten Code auf dem Server ab und stellen Sie ihn bereit.
Wenn Sie jedoch eine neue Funktion ändern und erneut testen möchten, müssen Sie diese Verbindungsparameter an die Parameter der Testumgebung anpassen und auf Ihrem eigenen Computer ausführen. Wenn Sie vergessen, Änderungen vorzunehmen und direkt auszuführen, werden möglicherweise fehlerhafte Daten in die Online-Umgebung geschrieben.
So kann jemand Umgebungsvariablen verwenden, um die Leseparameter zu steuern, zum Beispiel:
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)
Auf diese Weise müssen Sie die Verbindungsparameter der Datenbank nicht manuell ändern. Solange Sie die Umgebungsvariablen der Online-Umgebung festlegen env
设置为prod
,那么程序部署到线上环境,它自动就会使用线上数据库的参数。只要 其他地方,例如你电脑上,环境变量env
不为prod
oder einfach nicht vorhanden sind, werden die Parameter der Entwicklungsumgebung automatisch verwendet.
Dadurch werden zwar Probleme vermieden, die durch das Vergessen der Parameteränderung entstehen, aber es gibt noch ein weiteres Problem: Wenn andere Personen auch Zugriff auf diese Git-Quelle haben, wissen sie, wie sie eine Verbindung zur Datenbank in der Online-Umgebung herstellen. Sie manipulieren sogar unbefugt Daten in der Online-Umgebung, was zu Sicherheitsrisiken oder Datenschutzverlusten führt.
Für mehr Sicherheit können Sie eine spezielle Datei zum Speichern der Konfigurationsparameter verwenden und das Programm liest die Parameter aus der Datei. Die Online-Umgebungsdatei enthält Online-Parameter und die Entwicklungsumgebungsdatei enthält Entwicklungsparameter. Diese Konfigurationsdatei wird nicht auf Git hochgeladen.
Zum Beispiel erstellen wir eine config.json-Datei mit dem Inhalt:
{ "MONGODB_URI": "mongodb://username:password@127.0.0.1:27017", "REDIS_PARAMS": {"host": "127.0.0.1", "port": 6379, "password": "xxxx"} }
Dann wird unser Code wie folgt geändert:
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)
Das obige ist der detaillierte Inhalt vonSo stellen Sie die Konfigurationsparameter der Mongodb- und Redis-Entwicklungsumgebung und der Produktionsumgebung richtig ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!