我有一个Web应用程序,旨在将其部署到我的每个客户的专用主机。 为了安全地pipe理密钥,客户特定凭证等,我已经转向了环境variables。
我应该在哪里定义生产环境variables?
我知道几种可能性: /etc/profile , ~/.bashrc ,以及类似的文件在terminal会话启动时加载; 我没有去过这些,因为我不知道这是否被认为是最佳做法。 我已经尝试将它们存储在我的应用程序的systemdconfiguration文件中,但这只能使它们在主进程中可用,所以在部署代码更改时迁移数据库并不能很好地工作。 我知道有几个工具似乎“神奇地”为你处理环境variables,但是让我们假设我没有使用其中的一个; 我想手动在我自己的安装和部署脚本中处理这些。 我也有兴趣把秘密的事情保密,所以存储环境variables的安全性也是我的问题。
我build议将环境variables放在/etc/profile.d/*.sh下的多个文件中。 例如,/etc/profile.d/app.sh。 在控制整个文件时更容易推出,并且可以通过Debian和Red Hat上的loginshell自动获取。
拥有root权限,组www-data,不被别人读取将限制对文件的读取权限。 要知道,在Linux上,通过/ proc // environ可以看到环境variables,但只有stream程所有者和根。
您可能希望进一步限制其他configuration文件,密码或其他敏感数据。 也许叫它/etc/profile.d/appsecret.sh。