Capistrano:config / deploy.rb中的默认linked_dirs是什么?

时间:2017-03-08 14:00:04

标签: ruby-on-rails capistrano capistrano3

当您获取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"

一旦取消评论他们做了什么?

1 个答案:

答案 0 :(得分:2)

TLDR:取消注释linked_files行以获得更快的Rails应用程序部署

默认符号链接

Section written by maintainer of Capistrano (@mattbrictson)

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

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

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

  • public / system - 历史上,上传的文件附件存储在此处。如果此目录未共享,则每次部署新版本的应用程序时,所有上传的文件都会消失。

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

其他符号链接

如果你把它们注释掉会怎么样?

它没有破裂,但速度要慢得多。我使用了我当前的项目并且先运行了一个'然后' next'部署。如果你将linked_dirs注释掉,那么部署速度可能会慢四倍 - 由于不使用缓存数据而导致时间增加。

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

摘要

大多数项目都需要默认的符号链接才能实现'快速'部署 - 删除评论,Capistrano将处理其余的评论。

相关问题