Symfony 4-最佳实践/环境变量
多年来我一直在使用Symfony 4-最佳实践/环境变量,symfony,environment-variables,symfony4,symfony-flex,Symfony,Environment Variables,Symfony4,Symfony Flex,多年来我一直在使用parameters.yml,但现在是时候使用环境变量切换到Symfony 4了:-) 关于在我的服务器上部署它,我有几个问题。我正在使用Nginx+PHP-FPM。文档中说我们可以在服务器上设置环境变量。其他一些博客建议在服务器上设置环境变量。那么控制台呢?bin/console如何了解这些环境变量 目标是集中设置并拥有单个编辑点。也许我们可以在操作系统端设置它们,但是如果我在同一台服务器上运行多个应用程序呢 在我的用例中,我有一个远程服务器(另一个应用程序是FreeBSD或
parameters.yml
,但现在是时候使用环境变量切换到Symfony 4了:-)
关于在我的服务器上部署它,我有几个问题。我正在使用Nginx+PHP-FPM。文档中说我们可以在服务器上设置环境变量。其他一些博客建议在服务器上设置环境变量。那么控制台呢?bin/console
如何了解这些环境变量
目标是集中设置并拥有单个编辑点。也许我们可以在操作系统端设置它们,但是如果我在同一台服务器上运行多个应用程序呢
在我的用例中,我有一个远程服务器(另一个应用程序是FreeBSD或Ubuntu 16.04),在/var/www/myapp/prod
中提供生产环境,在/var/www/myapp/qualif
中提供预生产(在nginx配置中具有受限访问权限)。它们共享相同的环境变量键,但不共享相同的值(例如,不同的数据库DSN)。我没有用docker
您的建议是什么?我通常在运行时设置配置变量。可以是带-e的docker run命令,也可以是docker-compose.yml文件
我会为不同的环境运行不同的容器-好吧,这在中描述得很清楚。从3.3开始,引入了新的
Dotenv
组件,它将在.env
文件中保存环境变量,以便在本地环境中使用。是的,但文档中说“Symfony Dotenv应仅用于开发/测试/登台环境。对于生产环境,使用“真实”环境变量。”-也许在我的用例中,使用DotEnv组件更安全?文档建议是正确的。在代码中保留重要常量(如密码、API密钥等)总是一种不好的做法。这就是为什么您需要设置环境变量的原因,1)使用单个代码库为不同的环境轻松设置;2) 如果有人访问代码库,很难窃取。我以前见过这个问题,但到目前为止还没有答案。目前,即使在生产环境中,我也只接受解析.env文件的开销。似乎真的应该有一个fastcgi实用程序,可以从.env文件中读取参数。但我还没有找到。可能会尝试在Symfony站点上询问,或者再次询问nginx社区,在nginx fastcgi_参数中设置环境变量将阻止您的bin/console
命令从它们继承,这就是我反对这种做法的原因。实际上,我在生产环境中解析了.env文件,该文件适用于http和cli,但我不明白为什么这是一种不好的做法,因为.env文件被忽略了。在我的设置中,此文件仅存在于不同的部署目标上,而不存在于VCS中。