【问题标题】:Capistrano: What are the default linked_dirs in config/deploy.rb for?Capistrano:config/deploy.rb 中默认的linked_dirs 是做什么用的?
【发布时间】:2017-03-08 14:00:04
【问题描述】:

当你对一个 Rails 项目进行命名时,你会得到一个文件config/deploy.rb,其中包含一个注释掉的行,它创建了从发布目录到部署的共享部分的符号链接。

# config/deploy.rb
#
# Default value for linked_dirs is []
# append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system"

一旦取消注释,他们会做什么?

【问题讨论】:

    标签: ruby-on-rails capistrano capistrano3


    【解决方案1】:

    TLDR:取消注释linked_files 行以加快Rails 应用程序部署

    默认符号链接

    Section written by maintainer of Capistrano (@mattbrictson)

    • public/assets – 在滚动部署场景中,一些客户可能会引用旧资产版本(样式表、图像等),而其他客户则引用新版本。使用共享资产目录可确保旧版本和新版本位于同一位置,并且可供 Web 服务器访问。

    • tmp/cache - 如果必须从头开始,部署的资产编译步骤真的很慢。使用共享的 tmp 目录意味着编译步骤可以重用过去编译中缓存的工件,从而加快部署速度。

    • tmp/{pids, sockets} – 被Puma 和 Unicorn 等用于管理服务器状态。在部署期间,服务器指向旧版本,然后切换到新部署的版本,可能没有服务器进程的冷停止/启动。将 pid 和套接字文件保存在共享位置有助于实现这种零停机部署。

    • public/system – 从历史上看,上传的文件附件存储在这里。如果不共享此目录,则每次部署新版本的应用程序时,所有上传的文件都会有效地消失。

      (我的编辑:提到 Puma,因为它现在是 rails 的默认 Web 服务器)

    其他符号链接

    如果您将它们注释掉会怎样?

    它不会中断,但速度要慢得多。我使用了我当前的项目并运行了“第一个”然后“下一个”部署。如果您将linked_dirs 注释掉,那么部署速度可能会慢四倍——由于不使用缓存数据,时间会增加。

    +---------------------+----------------+
    |                     | Deploys (mins) |
    +---------------------+----------------+
    |                     | First |   Next |
    +---------------------+----------------+
    | Default linked_dirs |  8.10 |   0.50 |
    +---------------------+----------------+
    | No linked_dirs      |  8.20 |   4.30 |
    +---------------------+----------------+
    

    总结

    大多数项目都需要默认符号链接以进行“快速”部署 - 删除注释,Capistrano 将处理其余部分。


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 2015-06-09
      • 2018-04-03
      相关资源
      最近更新 更多