如何使用git自动部署带有配置文件的网站?

时间:2016-01-02 14:56:46

标签: node.js git deployment server

我有一个用NodeJS编写的应用程序。 每次我在我的主分支上使用git推送代码时,代码会自动部署在我的服务器上。一切都很好。

但是我的config文件存在问题,我的本地服务器和远程服务器之间存在差异 要解决此问题,我已排除了git config文件并将其复制到_config。 在_config文件中,我放置了所有配置服务器,当代码部署到服务器时,我自动生成$ cp _config config以获取良好的配置值。
这个解决方案有效但我想知道它是否是部署我的config文件的最佳解决方案,以及它是否可以安全地在Bitbucket上使用。
例如,如果我想与某人共享我的存储库,我可以,因为他会看到我的配置。 还有另一种解决方案吗?

如果您有任何建议,请提前致谢。

3 个答案:

答案 0 :(得分:1)

你的解决方案运行正常,即使它看起来有点粗糙。

配置通常包含两种类型的数据:

  • 敏感数据(例如密码,令牌,凭据)
  • 其他所有内容(例如常量,路径,位置,网址)

与您的生产机器相比,您的开发机器上的这些类型的配置变量可能不同(dev API URL vs prod API URL; dev API password vs prod API password)。

第二种类型的配置数据可以在您的git存储库中提交,如果您这样做,它可能是最简单的。您可以为dev生成1个文件,为生产生成1个文件,例如,基于环境变量加载正确的文件。

第一种类型 - 密码 - 不应该提交给git。即使你有一个私人存储库也没有。这太危险了。相反,您可以使用您描述的机制,或者您可以将密码放在您在生产环境中设置的环境变量中。

答案 1 :(得分:0)

Hrm,可能不是一个完整的解决方案,而是结帐流程环境变量。

我通常有一个私有的,我添加到gitignore然后我推送样本环境var文件

答案 2 :(得分:0)

在我的项目中,我用三个配置文件解决了这个问题。

  1. 默认配置:此配置文件包含默认配置。这种配置应该是安全的,适用于大多数安装。这可能是真实配置文件或具有默认值的源代码的某些部分。此文件已提交给Git存储库。

  2. 示例configuraiton文件:此文件看起来像第三个文件,但应用程序不使用它。我通常给它.example后缀。此文件已提交给Git仓库,但不包含敏感数据。

  3. 本地配置文件:具有本地更改的示例副本,如数据库密码或启用调试模式。此文件已提交给Git repo,并且包含敏感数据。它应该列在您的.gitignore文件中。

  4. 加载此类配置时,我将默认文件与本地文件合并,因此本地文件的内容会覆盖默认值,但如果本地文件中缺少某些内容,则使用默认值。这样我可以拥有最小的本地文件,并且大多数配置都受到开发人员的影响。提交。

    当使用框架并且您的应用程序安装到许多客户时,您可能希望拥有更多配置文件。然后您可能有框架配置文件,应用程序配置文件,每客户配置文件和本地配置文件。并且所有文件按此顺序合并在一起,并且仅提交最后一个文件(本地配置)。当然,这涉及更多的存储库,git子模块或类似的东西。