【问题标题】:How to better setup production env settings for a Laravel project?如何更好地为 Laravel 项目设置生产环境设置?
【发布时间】:2016-01-11 21:11:05
【问题描述】:

如文档中所述,Laravel 5 使用了一个名为 DotEnv 的 cool 系统。它使我们能够配置项目中可用的各种环境变量。因为它可能包含键,所以在源代码中应该忽略它。

另外,由于它的名称是默认的,每台机器/开发者都应该有自己的.env 文件。
麻烦来了:首先,这是一个私人项目。所以我真的不介意在存储库中存储密钥。其次,从其他框架(Symfony?Yii?),我习惯于对 prod/stg/dev 环境进行单独的设置。但由于文件是唯一的,这是不可能的。终于不想乱搞生产机器了。

设置这些东西的最佳方法是什么?

【问题讨论】:

  • 澄清我的环境:我正在使用 Heroku。我设法获得我的环境变量的方式是使用它的控制台配置变量,但这远非理想:任何时候我向 .env 添加一些东西,我也必须在 Heroku 中更改它? :(
  • 大多数开发人员将.env 文件添加到.gitignore 文件中,因此您的配置不会通过存储库共享给任何人。要处理这些配置,您可以使用类似源的直接 ftp。
  • 萨福尔,你读完了我的整个问题吗?
  • 是的,阅读整个问题,然后根据环境为您提供处理系统信息的建议...

标签: php heroku laravel-5 production-environment


【解决方案1】:

多年过去了,经过更多经验,我仍然可以说这两种方法(忽略和非忽略)env 文件都有其优点。

对于私有项目,在 Laravel 上最好的方法是将共享密钥保存在 .env.example 中,以及合理的默认值(例如 APP_ENV=prodAPP_DEBUG=false),并将任务留给安装项目的开发人员配置其中一些变量,以及那些为空的变量(即记录通道或个人密钥)。

【讨论】:

    【解决方案2】:

    通常使用.gitignore 文件从您的存储库中排除.env 文件,以便可以针对不同的环境进行不同的配置。

    您可以创建多个.env 文件并将它们手动上传到您的登台/测试/生产环境。您只需执行一次,然后根据您的环境更改设置。

    一旦到位,您的存储库中的未来部署将不会部署您的 .env 文件,并且您的环境将具有单独的配置。

    【讨论】:

    • 这就是我的想法,但这意味着部署的额外步骤 - 手动步骤!并且没有地方可以存储这些设置,除非您创建它。最后,它触及了我之前所说的:每当我需要对该文件进行更改时,我必须记住手动将更改上传到我的服务器。
    • 它创建了一个手动步骤,但这是环境设置的一部分。为我的登台/测试环境设置托管后,我只需部署所有文件,然后创建一个 .env 文件。我再也不用那样做了。我认为它是托管设置的一部分。
    • 是的,您必须手动更改这些设置,但由于它们是特定于环境的,因此它们通常在配置后不会更改。你预计你会做出什么样的改变/增加?如果您经常更换它们,我很想知道您可能会在其中存储什么。
    • 遗憾的是,这个手动步骤不太适合现代的自动化部署系统——例如使用 Git 或 Heroku(我的例子)。我不认为这是服务器设置,而是应用程序信息。因此,它将与其余代码一起使用。
    • 关于会发生什么变化,我不会在那里存储奇怪的东西。但它每隔一段时间就会发生变化,例如配置新的集成。就像所有偶尔发生的事情一样,很容易忘记这一步。一天之内,您将新密码包含在 .env 文件中。一周后,你的工作完成了,你 git deploy ......并且无法理解为什么你的应用程序崩溃了。哦,您必须输入您的主机并手动编辑该 .env 文件。令人毛骨悚然。
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 2017-12-11
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多