【问题标题】:Avoiding to hardcode server configuration避免硬编码服务器配置
【发布时间】:2017-02-02 18:25:50
【问题描述】:

我正在开发一个 Rails 应用程序,我即将开源它。

我正在将它部署到一个 VPS 服务器,配置了 nginx 和 unicorn,遵循this RailsCast

为了让 Capistrano、Nginx 和 Unicorn 正常工作,我不得不在我的 config/ 文件夹中添加一些服务器配置文件,例如 deploy.rbnginx.confunicorn.rbunicorn_init.sh

我正在使用 git 存储库,一切都在 master 分支下运行。换句话说,Capistrano 从中提取出来部署在服务器上,这也是我即将开源的分支。

但是我不希望我的服务器配置文件公开可用。

什么是最好的解决方案?

要不要 fork 一个仓库作为官方公开,另一个作为自己的版本,官方仓库设置为我的上游?

还是把我的配置参数设置为环境变量,把配置文件留在仓库里会更好?

【问题讨论】:

    标签: ruby-on-rails git github nginx unicorn


    【解决方案1】:

    这个解决方案是我为这个问题找到的最好的解决方案(也是我个人使用的解决方案)。

    你应该把你的配置文件放在

    /path/to/deployed_app/shared
    

    然后在 capistrano 任务中,符号链接到这些文件:

    namespace :deploy do
      task :symlink_shared do
        run "ln -s #{shared_path}/database.yml #{release_path}/config/"
      end
    end
    
    before "deploy:restart", "deploy:symlink_shared"
    

    【讨论】:

      【解决方案2】:

      我都做了,但是因为寻找环境变量并不那么性感,所以我最终:

      • 拥有一个原始 yml 文件以在我的 repo 中提供预期的格式(命名为 config.yml_example

      • 在我的服务器上的符号链接目录中拥有实际的 yml 文件

      【讨论】:

        【解决方案3】:

        如果您愿意,您仍然可以直接开源当前存储库,除非您希望它使用另一个名称,例如将托管的组织(即 rails/rails)。除此之外,您还想从 git 历史记录中删除这些文件,因为听起来您不希望它们公开,请参阅:https://help.github.com/articles/remove-sensitive-data 了解详情。

        使用这些配置的最佳方法是在服务器上设置一个共享目录,然后进行符号链接,请参阅:Where do you put your app-config-files when deploying rails with capistrano and svn

        【讨论】:

          【解决方案4】:

          不要将您的配置文件置于版本控制之下。相反,使用.dist 文件名后缀创建默认或示例版本,并将原始文件名放在 .gitignore 中以防止意外上传。然后用户必须在启动应用程序之前将myconfig.conf.dist 复制到myconfig.conf

          优势

          • 不会意外上传配置
          • 更改上游配置文件时git pull 上没有配置冲突
          • git pull 上没有意外的配置更改
          • 用户不能忘记在git clone之后调整配置

          缺点

          • 在开始或部署之前为用户添加一个额外的步骤
          • 需要记录在自述文件中,以便用户了解它
          • 不阅读自述文件的用户可能仍然会错过它并想知道为什么该应用程序无法运行

          P.S.:这不是 Rails 特定的,而是我对所有带有配置文件的版本控制应用程序的首选方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-07
            • 1970-01-01
            • 2022-10-31
            • 2020-07-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多