我是ruby的新手,我想了解它的工作原理。所以我一直在测试虚拟机中的服务器配置,以便快速部署Rails。
我在Ubuntu 10.04环境中运行RVM,Ruby,Rails,Git,Gitolite,PostgreSQL,Thin和Nginx。
现在我想将所有东西捆绑在一起。但是,我在部署过程中遇到了困难。
在我将项目提交到Git主干之后,我想挂钩部署操作以将应用程序放在正确的位置,设置为生产,安装捆绑包,进行迁移并重新启动Nginx。
但我没有找到关于它是如何工作的简单参考。我在谷歌找到的所有内容都是使用乘客,卡皮斯特拉诺等人的指南。我想在git commit动作上触发部署,类似于heroku,但是100%服务器端的最佳工具是什么?
制作一些shell脚本怎么样?如何手动部署项目?步骤是什么?是否有任何指南不假设我知道Rails部署中的每个细节?
谢谢!
答案 0 :(得分:0)
你可能正在寻找的是一个git post-receive
钩子(可以在这里找到一个教程:http://toroid.org/ams/git-website-howto)。
通过这个钩子你应该触发例如。一个shell脚本,它应该执行你需要的所有步骤 -
git checkout -f
的HEAD提交,请参阅链接教程)bundle install
bundle exec rake db:migrate
- 这假设您已经创建了数据库restart.txt
文件) - 我假设您的nginx是反向的代理在它面前,对吗?这是长篇短篇。它有点复杂,例如。如果你使用资产管道(rails> = 3.1),你想预编译资产等。但上面是一个很好的起点。
答案 1 :(得分:0)
好吧,我设法让它几乎完全投入使用。
到目前为止,我可以追踪的主要行动是:
脚本必须执行以下操作:
如果申请是新的,我们还必须:
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%工作,然后我想在互联网上发布指南。
我说我会做的指南: