Python: 处理机密信息(环境变量)
本文件是高级用法指南的一部分。您可以在这里查看完整指南:深入了解您的 Python 部署。
👋 欢迎来到 Stackhero 文档!
Stackhero 提供现成的 Python 云 解决方案,具有众多优势,包括:
- 通过简单的
git push在几秒钟内 部署您的应用程序。- 使用您自己的域名,并享受 HTTPS 证书的自动配置以增强安全性。
- 享受 自动备份、一键更新,以及简单、透明和可预测的定价带来的安心。
- 通过私有和专用的 VM获得最佳的性能和强大的安全性。
节省时间并简化您的生活:尝试 Stackhero 的 Python 云托管 解决方案只需 5 分钟!
在某些时候,您需要存储诸如数据库或第三方服务的令牌和密码等机密信息。重要的是要安全地存储这些信息。避免将它们直接嵌入到您的仓库或代码中,因为这会带来重大的安全风险。
使用环境变量有两个主要好处:
- 您的机密信息从未存储在您的 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 添加到 .gitignore 中,确保它被 Git 排除:
echo ".env" >> .gitignore
为 staging 和生产设置环境变量
.env 文件对于 staging 和生产环境来说不够安全。相反,Stackhero 允许您将环境变量直接安全地存储在您的 Python 服务配置中。
您可以通过选择您的 Python 服务,然后点击“配置”按钮,在 Stackhero 仪表板中设置这些变量。
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"