直接Rails部署

时间:2012-10-09 11:41:11

标签: ruby-on-rails git nginx web-deployment thin

我是ruby的新手,我想了解它的工作原理。所以我一直在测试虚拟机中的服务器配置,以便快速部署Rails。

我在Ubuntu 10.04环境中运行RVM,Ruby,Rails,Git,Gitolite,PostgreSQL,Thin和Nginx。

现在我想将所有东西捆绑在一起。但是,我在部署过程中遇到了困难。

在我将项目提交到Git主干之后,我想挂钩部署操作以将应用程序放在正确的位置,设置为生产,安装捆绑包,进行迁移并重新启动Nginx。

但我没有找到关于它是如何工作的简单参考。我在谷歌找到的所有内容都是使用乘客,卡皮斯特拉诺等人的指南。我想在git commit动作上触发部署,类似于heroku,但是100%服务器端的最佳工具是什么?

制作一些shell脚本怎么样?如何手动部署项目?步骤是什么?是否有任何指南不假设我知道Rails部署中的每个细节?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可能正在寻找的是一个git post-receive钩子(可以在这里找到一个教程:http://toroid.org/ams/git-website-howto)。

通过这个钩子你应该触发例如。一个shell脚本,它应该执行你需要的所有步骤 -

  1. checkout来自git repo(git checkout -f的HEAD提交,请参阅链接教程)
  2. 运行bundle install
  3. 运行bundle exec rake db:migrate - 这假设您已经创建了数据库
  4. 重新启动/启动瘦服务器群集(不确定这里,如果它与乘客相似,我使用此操作只是创建一些restart.txt文件) - 我假设您的nginx是反向的代理在它面前,对吗?
  5. 这是长篇短篇。它有点复杂,例如。如果你使用资产管道(rails> = 3.1),你想预编译资产等。但上面是一个很好的起点。

答案 1 :(得分:0)

好吧,我设法让它几乎完全投入使用。

到目前为止,我可以追踪的主要行动是:

  • 用户推送到trunk,必须使用git hooks使用脚本触发后续步骤。

脚本必须执行以下操作:

  • 将项目克隆到/ var / www文件夹;
  • 将'thin'gem插入Gemfile;
  • 在应用程序文件夹中运行'bundle'命令;
  • 预编译应用程序文件夹中的资产;
  • 迁移数据库;
  • 停止nginx并瘦;
  • 再次重启瘦和nginx。

如果申请是新的,我们还必须:

  • 创建与数据库信息匹配的新用户;
  • 创建生产数据库;
  • 插入新的nginx配置文件;
  • 从应用程序文件夹导出精简配置,如下所示:

thin config -C /etc/thin/app.yml -c /var/www/app --servers 1 -e production

行动的顺序或多或少是这样的:

$ bundle package
$ bundle install --deployment
$ RAILS_ENV=production rake db:migrate
$ rake assets:precompile
$ thin start -C /etc/thin/app.yml

这是现在的基础。我想让它100%工作,然后我想在互联网上发布指南。

更新

我说我会做的指南:

https://github.com/sentient06/RDH/wiki