0

我是 ruby​​ 新手,我想更多地了解它是如何工作的。因此,我一直在虚拟机中测试服务器配置以进行快速 Rails 部署。

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

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

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

但我找不到关于它如何工作的简单参考。我在谷歌中找到的只是使用乘客、capistrano 和其他人的指南。我想在 git commit 操作上触发部署,类似于 heroku,但是在 100% 服务器端执行该操作的最佳工具是什么?

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

谢谢!

4

2 回答 2

0

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

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

  1. 从 git repo 签出 HEAD 提交(git checkout -f参见链接教程)
  2. bundle install
  3. 运行bundle exec rake db:migrate- 这假设您已经创建了数据库
  4. 重新启动/启动瘦服务器集群(这里不确定,如果它与乘客类似,我使用此操作只是为了创建一些restart.txt文件) - 我假设你有你的 nginx 作为它前面的反向代理,对吧?

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

于 2012-10-09T12:06:42.720 回答
0

好吧,我设法让它几乎完全运行。

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

  • 用户推送到主干,必须使用 git 挂钩使用脚本触发后续步骤。

该脚本必须执行以下操作:

  • 将项目克隆到 /var/www 文件夹;
  • 将“薄”宝石插入 Gemfile;
  • 在应用程序文件夹中运行“捆绑”命令;
  • 预编译应用程序文件夹中的资产;
  • 迁移数据库;
  • 停止 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

于 2012-11-02T15:35:41.800 回答