部署,具有env变量的多个服务器

时间:2016-08-11 00:04:50

标签: laravel deployment environment-variables

我正在部署应用程序(并准备将来部署更多服务器)。目前,该应用程序在4台服务器上运行,并且有Dev,Staging和Production Environments。我编写了一个Python脚本来配置每个服务器,并在每个盒子上设置了我需要的很多东西。

但是,我有一个包含环境变量的大文件(顺便说一下这是一个Laravel应用程序),我试图找到一种方法将其合并到配置中。

我试图避免在每次部署时手动将其复制到每个服务器。此外,如果我将来需要添加或修改env变量,我希望避免手动尝试在每台服务器上保持每个副本的同步。

但是,我也不想使用配置脚本将其提交给github。

是否有任何建议让这个过程更加干燥?什么是处理环境配置以便部署到不同环境的最佳实践?

1 个答案:

答案 0 :(得分:0)

由于您正在使用脚本来设置和配置每个服务器,因此您可以将Laravel的.env文件中的变量放在可用作环境变量的任何位置。它们不需要仅在.env文件中设置。根据您的工作流程,您会想到一些选项:

  1. vhost文件。 vhost将使环境变量可用于apache和PHP。但这不会使它们可用于Artisan等命令行进程。

  2. Web用户的bash配置文件:每个环境的环境变量都可以在bash配置文件(.profile.bashrc中声明),并且每次服务器引导到所有进程时都可用

  3. Python脚本可以为每个环境自动生成.env文件。 .env文件不在repo中,只有Laravel存在才能读取。这可能是DRYist方法 - 但是需要一个存储库来存储所有环境中的所有env设置,因此安全性会降低。