我正在开发一个Rails应用程序,我即将开源它。
我正在this RailsCast之后将其部署到配置了nginx和unicorn的VPS服务器。
为了让Capistrano,Nginx和Unicorn正常工作,我不得不在我的config/
文件夹中添加一些服务器配置文件,例如deploy.rb
,nginx.conf
,{{1} }和unicorn.rb
。
我正在使用git存储库,一切都在unicorn_init.sh
分支下运行。换句话说,Capistrano从中拉出来部署在服务器上,而且,这就是我即将开源的分支。
但是我不希望我的服务器配置文件是公共可用的。
什么是最好的解决方案?
我应该将它分叉并将一个存储库设置为官方公共存储库,并使用另一个存储库作为我自己的版本,并将官方存储库设置为我的上游吗?
或者最好将配置参数设置为环境变量,并将配置文件保留在存储库中?
答案 0 :(得分:1)
这个解决方案是我发现的最好的解决方案(也是我个人使用的解决方案)。
您应该将配置文件放在
中/path/to/deployed_app/shared
然后在capistrano任务中,sym链接到这些文件:
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"
答案 1 :(得分:1)
我已经做到了,但是因为找到env变量并不那么性感,所以我最终:
使用原始yml文件在我的仓库中提供预期的格式(命名为config.yml_example
)
在符号链接目录中的服务器上有实际yml
个文件
答案 2 :(得分:1)
如果您愿意,您仍然可以只打开当前存储库,除非您希望它在另一个名称下,例如将托管的组织(即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
答案 3 :(得分:0)
不要将配置文件置于版本控制之下。而是创建具有.dist
文件名后缀的默认或示例版本,并将原始文件名放在.gitignore中以防止意外上载。然后,用户必须在启动应用程序之前将myconfig.conf.dist
复制到myconfig.conf
。
<强>优点强>
git pull
上没有配置冲突git pull
git clone
<强>缺点强>
P.S。:这不是Rails特定的,但是我可以使用配置文件来访问所有版本控制的应用程序。