簡體   English   中英

Capistrano:config / deploy.rb中默認的linked_dirs是做什么用的?

[英]Capistrano: What are the default linked_dirs in config/deploy.rb for?

給Rails項目添加config/deploy.rb ,您會得到一個文件config/deploy.rb ,其中包含注釋行,該注釋行創建了從releases目錄到部署共享部分的符號鏈接。

# 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應用程序的部署

默認符號鏈接

Capistrano的維護者(@mattbrictson)撰寫的部分

  • 公共/資產–在滾動部署方案中,某些客戶可能正在引用舊資產版本(樣式表,圖像等),而其他客戶可能在引用新版本。 使用共享資產目錄可確保舊版本和新版本位於同一位置,並且可由Web服務器訪問。

  • tmp / cache –如果必須從頭開始,則部署的資產編譯步驟確實很慢。 使用共享的tmp目錄意味着編譯步驟可以重用過去編譯中的緩存工件,從而加快部署速度。

  • tmp / {pids,sockets} –由Puma和Unicorn等用於管理服務器狀態。 在部署期間,服務器指向舊版本,然后切換到新部署的版本,可能不會冷停止/啟動服務器進程。 將pid和套接字文件保存在共享位置有助於進行這種零停機時間部署。

  • 公共/系統–歷史上,上傳的文件附件存儲在此處。 如果不共享此目錄,則每次部署新版本的應用程序時,所有上傳的文件都會有效消失。

    (我的編輯:提到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 |
+---------------------+----------------+

摘要

大多數項目都需要默認符號鏈接來實現“快速”部署-刪除注釋,Capistrano將處理其余的鏈接。


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM