在沒有自動部署的世代,基本上重新部署就等同於,把舊的程式碼刪掉,再把新版的程式碼上傳到 FTP 同個位置,接著手動重啟伺服器。但由於現在講究雲端架構要彈性,伺服器要可以無限開 N 台的情況,所有步驟都要改成自動化,那到底要做哪些事?
重新部署要做的事
- 備份資料庫
- 更新程式碼
- 更新設定檔
- 更新資料庫
- 例行性指令
- 重啟 service
- 清除 cache
- etc…
以往,我們要做上述的這些事,我們要組合非常多的 plugin 組合技去達成,帶隨著時代在進步,漸漸出現一套就可以涵蓋這些範圍的工具,並發展出一套架構。
相關的工具類型
- 資料庫遷移工具 (Migration tools)
- 自動部署工具 (automated configuration manage tool)
自動部署工具
- Ansible
- Chef
- Capistrano
- etc…
以 Capistrano 為例來說明
1 | require 'capistrano/setup' |
Capistrano 下有非常多的 sub module,這些 sub module 是實際去執行動作的模組,Capistrano 的責任在至於制定一個架構,讓大家依照這個架構下,只需針對設定檔調整,就可以輕鬆達到自動部署及版本控制。