2012-10-09 50 views
0

我是ruby的新手,我想了解更多关于它是如何工作的。所以我一直在测试虚拟机中的服务器配置,以便快速部署Rails。直线导轨部署

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

现在我想把所有东西都捆绑在一起。不过,在部署过程中,我陷入了困境。

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

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

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

谢谢!

回答

0

嗯,我设法让它几乎完全运作。

我就可以追查到现在为止,主要的操作是:

  • 用户推到主干,必须使用git钩来触发使用脚本的下一个步骤。

脚本必须做到以下几点:

  • 克隆项目到/ var/WWW文件夹;
  • 将'瘦'宝石插入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

0

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

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

  1. 结账HEAD从git的回购承诺(git checkout -f,见链接教程)
  2. 运行bundle install
  3. 运行bundle exec rake db:migrate - 这个假设你已经创建了您的数据库
  4. 重新启动/启动瘦服务器集群(在这里没有确切的地方,如果它类似于乘客,我使用这个操作只是创建一些restart.txt文件) - 我认为你有你的nginx作为在它前面的反向代理,对吧?

这是长话短说。这有点复杂,例如。如果您使用资产管道(rails> = 3.1),您希望预先编译资产等。但上述是一个很好的起点。

+0

也许这是一个相关的SO问题... http://stackoverflow.com/questions/3838727/git-post -receive-hook-for-website-stage – Inza

+1

不要忘记rake资源:预编译... –