我刚刚开始使用 django 学习后端开发。我的问题是我是否只将项目文件单独提交到服务器文件夹中,还是应该将
.env
文件夹提交到存储库?
我已完成以下操作:
config.json
来保护我的 API 密钥。.gitignore
中包含相同内容。如果我承诺或不承诺会发生什么
.env
?
假设您的
.env
文件夹是您的虚拟环境,不,您不应该提交它。
应使用您的
requirements.txt
文件在服务器上重建虚拟环境。您在开发计算机上构建的本地环境可能具有特定于操作系统的二进制文件,以及为本地环境生成的其他编译代码。
服务器将具有不同的编译二进制文件,因此应使用以下命令重建虚拟环境:
pip install -r requirements.txt
。
您不应该在 git 存储库中提交/包含您的
.env
文件,因为 env 代表环境。您将为本地、暂存(开发)、生产环境使用不同的环境变量。
即你的本地 .env 文件可能有类似的内容
WEB_HOST=localhost
WEB_PORT=8000
ALLOWED_HOSTS=127.0.0.1, localhost
但是你的 PRODUCTION .env 会有不同的东西,比如
WEB_HOST=www.mysite.com
WEB_PORT=8080
ALLOWED_HOSTS=www.mysite.com
这就是为什么你不能将 .env 包含在你的存储库中,而应该根据环境来创建。
嗯,根据文档,您应该不提交'.env'文件 - 参见https://github.com/motdotla/dotenv#should-i-commit-my-env-file
但这不会造成太大伤害(除非你泄露秘密),因为在目标环境中你很可能有预定义的环境变量,并且“.env”中的值不会用于匹配键。
有时您甚至可能需要与您的同事“共享”环境变量。当然,你可以使用文档中定义的方法https://github.com/motdotla/dotenv#-deploying,但有时更容易提交
.env file
。
为了避免泄露秘密,我通常有
.env_sample
文件,其中包含所有必要的密钥,内容如下:
key=<here is your secret>
和 '.env' 文件具有相同的键但具有实际值,并且该文件被排除在源代码控制之外(git 或 tfs 或您使用的任何内容)。通过这种方法,您可以向同行了解您的应用程序需要什么,并且不会意外泄露秘密。
不,出于安全原因,不建议将 .env 文件推送到自己的存储库。
.env 文件包含不应公开共享的敏感信息。如果提交,任何可以访问存储库的人都可以访问它,从而构成重大安全风险。
相反,应该将 .env 文件添加到 .gitignore 文件中,并使用 example.env 文件作为示例 .env。这可确保它不包含在您的提交中,从而使敏感信息保持私有并在您的开发环境中本地化。
使用仅包含示例环境密钥而不包含敏感信息的 example.env 文件可以作为开发人员创建自己的本地 .env 文件的有用模板。