Python: 處理機密(環境變量)
此文件屬於進階用法指南的一部分。請在此處查看完整指南:深入了解 Python 部署。
👋 歡迎來到 Stackhero 文檔!
Stackhero 提供一個即用型的 Python 雲端 解決方案,帶來多項好處,包括:
- 只需一個簡單的
git push,即可在幾秒鐘內部署您的應用程式。- 使用您自己的域名,並享受 HTTPS 證書的自動配置以增強安全性。
- 享受自動備份、一鍵更新,以及簡單、透明且可預測的定價,讓您安心無憂。
- 得益於專用的私人 VM,獲得最佳的性能和強大的安全性。
節省時間並簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Python 雲端託管 解決方案!
在某些時候,您需要存儲如令牌和數據庫或第三方服務的密碼等機密。重要的是要安全地存儲這些信息。避免將它們直接嵌入到您的存儲庫或代碼中,因為這會造成重大安全風險。
使用環境變量提供了兩個主要優勢:
- 您的機密從未存儲在您的 Git 存儲庫中,從而降低未經授權訪問的風險。
- 您可以為不同的環境使用不同的憑證,例如在生產中使用生產數據庫,在開發中使用開發數據庫。
為開發設置環境變量
在開發環境中,在項目根目錄創建 .env 文件。此文件應從 Git 中排除,以確保它從未被提交。
要自動讀取 .env 文件,您可以使用 python-dotenv 模塊:
pip install python-dotenv
pip freeze > requirements.txt
然後,在項目根目錄創建 .env 文件並添加您的變量:
ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
最後,確保 .env 文件被排除在 Git 之外,將其添加到 .gitignore:
echo ".env" >> .gitignore
為 staging 和生產設置環境變量
.env 文件對於 staging 和生產環境來說不夠安全。相反,Stackhero 允許您將環境變量安全地存儲在您的 Python 服務配置中。
您可以在 Stackhero 儀表板中選擇您的 Python 服務,然後點擊 "Configure" 按鈕來設置這些變量。
Stackhero 上的 Python 環境變量
在 Python 中訪問環境變量
在 Python 中訪問環境變量很簡單。只需使用 os.environ.get(),如下所示:
import os
print(os.environ.get('ENV'))
例如,使用環境變量連接到 Redis 服務器可以這樣做:
import os
import redis
r = redis.from_url(os.environ.get("REDIS_URL"))
在開發環境中,在 .env 文件中設置 REDIS_URL 如下:
REDIS_URL="redis://localhost:6379"
對於生產和 staging,請在 Stackhero 儀表板的 Python 服務配置中定義 REDIS_URL:
REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:6380"