Capistrano:config/deploy.rb 中的默认 linked_dirs 有什么用?
Capistrano: What are the default linked_dirs in config/deploy.rb for?
当您 capify 一个 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"
取消评论后他们会做什么?
TLDR:取消注释 linked_files 行以加快 Rails 应用部署
默认符号链接
Section written by maintainer of Capistrano (@mattbrictson)
public/assets – 在滚动部署场景中,一些客户可能引用旧资产版本(样式表、图像等),而其他客户引用新版本。使用共享资产目录可确保旧版本和新版本位于同一位置并且可由 Web 服务器访问。
tmp/cache – 如果必须从头开始,部署的资产编译步骤真的很慢。使用共享的 tmp 目录意味着编译步骤可以重用过去编译的缓存工件,从而加快部署速度。
tmp/{pids, sockets} – Puma 和 Unicorn 等使用它来管理服务器状态。在部署期间,服务器指向旧版本,然后切换到新部署的版本,可能没有服务器进程的冷 stop/start。将 pid 和套接字文件保存在共享位置有助于实现这种零停机部署。
public/system – 过去,上传的文件附件存储在这里。如果不共享此目录,则每次部署新版本的应用程序时,所有上传的文件实际上都会消失。
(我的编辑:提到 Puma,因为它现在是 rails 的默认 Web 服务器)
其他符号链接
如果您将它们注释掉会怎样?
它没有中断,但速度要慢得多。我使用我当前的项目和 运行 一个 'first' 然后 'next' 部署。如果您将 linked_dirs 注释掉,那么部署速度可能会慢四倍 - 由于不使用缓存数据,时间会增加。
+---------------------+----------------+
| | Deploys (mins) |
+---------------------+----------------+
| | First | Next |
+---------------------+----------------+
| Default linked_dirs | 8.10 | 0.50 |
+---------------------+----------------+
| No linked_dirs | 8.20 | 4.30 |
+---------------------+----------------+
总结
大多数项目都需要默认符号链接才能进行 'fast' 部署 - 删除注释,Capist运行o 将处理其余部分。
当您 capify 一个 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"
取消评论后他们会做什么?
TLDR:取消注释 linked_files 行以加快 Rails 应用部署
默认符号链接
Section written by maintainer of Capistrano (@mattbrictson)
public/assets – 在滚动部署场景中,一些客户可能引用旧资产版本(样式表、图像等),而其他客户引用新版本。使用共享资产目录可确保旧版本和新版本位于同一位置并且可由 Web 服务器访问。
tmp/cache – 如果必须从头开始,部署的资产编译步骤真的很慢。使用共享的 tmp 目录意味着编译步骤可以重用过去编译的缓存工件,从而加快部署速度。
tmp/{pids, sockets} – Puma 和 Unicorn 等使用它来管理服务器状态。在部署期间,服务器指向旧版本,然后切换到新部署的版本,可能没有服务器进程的冷 stop/start。将 pid 和套接字文件保存在共享位置有助于实现这种零停机部署。
public/system – 过去,上传的文件附件存储在这里。如果不共享此目录,则每次部署新版本的应用程序时,所有上传的文件实际上都会消失。
(我的编辑:提到 Puma,因为它现在是 rails 的默认 Web 服务器)
其他符号链接
如果您将它们注释掉会怎样?
它没有中断,但速度要慢得多。我使用我当前的项目和 运行 一个 'first' 然后 'next' 部署。如果您将 linked_dirs 注释掉,那么部署速度可能会慢四倍 - 由于不使用缓存数据,时间会增加。
+---------------------+----------------+
| | Deploys (mins) |
+---------------------+----------------+
| | First | Next |
+---------------------+----------------+
| Default linked_dirs | 8.10 | 0.50 |
+---------------------+----------------+
| No linked_dirs | 8.20 | 4.30 |
+---------------------+----------------+
总结
大多数项目都需要默认符号链接才能进行 'fast' 部署 - 删除注释,Capist运行o 将处理其余部分。