3

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

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

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

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

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

最好的解决方案是什么?

我是不是应该 fork 一个仓库作为官方公共仓库,另一个作为我自己的版本,并将官方仓库设为我的上游?

还是将我的配置参数设置为环境变量,并将配置文件留在存储库中会更好?

4

4 回答 4

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"
于 2013-04-29T15:48:42.873 回答
1

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

  • 有一个原始 yml 文件在我的仓库中给出预期的格式(命名为config.yml_example

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

于 2013-04-29T15:50:27.460 回答
1

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

使用这些配置的最佳方法是在服务器上设置一个共享目录,然后对其进行符号链接,请参阅:在使用 capistrano 和 svn 部署 rails 时,您将 app-config-files 放在哪里

于 2013-04-29T15:51:48.423 回答
0

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

好处

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

缺点

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

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

于 2017-02-02T10:25:50.783 回答