【问题标题】:Straight-forward Rails deployment直接的 Rails 部署
【发布时间】:2012-10-09 11:41:11
【问题描述】:

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

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

现在我想将所有内容联系在一起。但是,我在部署过程中遇到了困难。

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    您可能正在寻找的想法是 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),您希望预编译资产等。但以上是一个很好的起点。

    【讨论】:

    【解决方案2】:

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

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

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

    脚本必须执行以下操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多