簡單輕鬆部署你的專案 - Deployer

cjjian發表於2017-04-09

deployer

本文主要介紹 Deployer —— 一個具有模組化、程式碼回滾、並行任務等功能的 PHP 部署工具。

Deployer 用法非常簡單易用,可以快速上手,且支援多個 PHP 框架。

安裝

Deployer 安裝有多種方法:

第一種 透過 Phar 存檔,只需執行一下命令即可:

curl -LO https://deployer.org/deployer.phar

mv deployer.phar /usr/local/bin/dep

chmod +x /usr/local/bin/dep

第二種 透過 composer 安裝:

composer require deployer/deployer --dev

使用:

php vendor/bin/dep

第三種 透過 Github 原始碼安裝:

clone 最新的程式碼:

git clone https://github.com/deployphp/deployer.git

在原始碼目錄下執行:

php ./build

第三種方法會建立 deployer.phar 的 Phar 歸檔,所以建議使用第一種方法安裝。

使用

安裝完後,你可以透過 dep 使用 Deployer ,在你的專案目錄下執行以下命令:

dep init

執行此命令後會出現下圖的選項,可選擇你所需的,當然本教程使用 Laravel ,so 選擇 [1] Laravel

deployer-init

初始化後,會自動生成 deployer.php 檔案。 deployer.php 檔案包含了基本的部署配置和任務,且有明確的註釋,你可以根據註釋在適當的地方新增配置以及任務。

沒錯,按照 deployer.php 檔案的註釋,設定一下 repositoryserver config ,基本上都能正常執行。

如何快速入門使用?可以看看官方入門文件 https://deployer.org/docs/getting-started ,這裡不一一列出。

當你第一次成功部署的時候, Deployer 會自動幫你在伺服器上生成一下檔案:

  • releases 包含你部署專案的版本(預設保留 5 個版本)
  • shared 包含你部署專案的共享檔案或目錄(如:LaravelStorage 目錄、.env 檔案等 )
  • current 軟連線到你當前釋出的版本

需要注意的地方: Deployer 預設使用 ACL 來設定許可權,你可以設定 writable_mode 來改變這個行為。

自動部署

到了這裡,恭喜你,已經可以愉快使用 Deployer 。但是又有一個問題,每次提交 push 一次程式碼後都要執行 dep deploy 才會部署,有木有覺得很麻煩,接下來就說一下自動部署,相信你也想一切自動化的吧。

需要做的工作:

生成 git 使用者公鑰和部署公鑰 -> 設定使用者公鑰到你帳戶相關聯的 SSH Keys -> 設定部署公鑰到你專案的 Deploy keys -> 準備 hook 檔案 -> 在專案上新增一個 Webhook 並設定 hook 的網址

當然,你要在伺服器上自動部署還需要在伺服器上安裝 deployer 並設定好部署配置,確保其能正常執行。當 push 程式碼後觸發 webhook ,傳送請求到伺服器的 hook ,若驗證成功則執行 dep deploy 命令。

自動部署的文章很多,也非常簡單,基本上就是在 Git 程式碼倉庫設定一下 webhook 然後在伺服器配置一下就搞掂的事,我就不一一列出,因為做重複的事也沒什麼意義。

webhook 設定自動部署教程:

Laravist - Coding Webhook 自動部署 Git 專案

利用WebHook實現PHP自動部署Git程式碼

使用PHP指令碼遠端部署git專案

如果你想使用圖形化介面的部署工具,你可以使用:Jenkinswalle - 瓦力部署 等等。

本文主要簡單介紹一下 Deployer 以及使用 Deployer 自動部署如何去做,而不會做太過詳細的教程,因為 Deployer 的文件已經寫得很清晰易明,以及有各種設定 Webhook 的教程,所以我沒有必要一一列出(因為我懶)。

最後的最後感謝 overtrue - 超哥

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Nothing is impossible. —— @Jiajian Chan

相關文章