新手入門
首先, 我們來 安裝 Deployer. 在終端運行以下命令:
curl -LO https://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
現在你就可以通過命令 dep 來使用Deployer.
打開終端,在你項目的目錄中運行初始化命令:
dep init
這個命令會在當前目錄創建 deploy.php 文件. 他被稱之為 食譜(recipe) 包含了部署相關的配置與任務.
默認情況下,所有的食譜都繼承自 common . 把你的 deploy.php 放在項目的根目錄中,輸入命令 dep 或 dep list . 將會看到全部可用的命令集.
你也可以在項目中的任何子目錄中調用
dep命令.
創建任務
定義你的個性化任務非常簡單:
task('test', function () {
writeln('Hello phpdeployer.com');
});
執行這個任務, 運行命令:
dep test
接下來會輸出:
? Executing task test
Hello phpdeployer.com
? Ok
在遠端執行任務
我們要想在遠端執行任務,必須要先配置 deployer.
新創建的 deploy.php 文件, 應該包含 host 聲明, 如:
host('phpdeployer.com')
->stage('production')
->set('deploy_path', '/var/www/phpdeployer_com');
也可以在單獨的yaml文件中聲明主機. 了解更多請參考: inventory.
更多配置參考:主機.
接下來我們定義一個任務,這個任務會在遠程主機中執行linux pwd 命令:
task('pwd', function () {
$result = run('pwd');
writeln("當前目錄: $result");
});
運行命令 dep pwd, 你將得到如下結果:
? Executing task pwd
當前目錄: /var/www/phpdeployer_com
? Ok
好啦,來準備我們的第一個部署工作. 你需要配置一些參數,如 repository, shared_files, 以及其它:
set('repository', 'git@domain.com:username/repository.git');
set('shared_files', [...]);
你可以在任何一個任務中通過get方法調用這個參數.
還可以在任何一個主機的聲明中覆蓋這個參數:
host('phpdeployer.com')
...
->set('shared_files', [...]);
更多部署配置參考: 配置 .
現在來部署我們的程序:
dep deploy
要在輸出中包含額外的詳細信息,可以使用 --verbose 選項增加詳細程度:
* -v 標準輸出
* -vv 詳細輸出
* -vvv debug
Deployer 將在主機上創建以下目錄:
releases包含各版本的文件目錄shared包含共享的文件和目錄current軟鏈接到當前版本
將主機的公用目錄配置為 current 向外提供服務
?? 注意: that deployer 默認情況下,采用 ACL 設置權限. 可以使用
writable_mode配置更改此行為.
默認情況下 deployer 保留5個版本, 你可以通過下面參數增量:
set('keep_releases', 10);
如果部署過程中出現錯誤,或者新版本有問題,只需運行以下命令即可回滾到上一個可運行的版本:
dep rollback
您可能希望在其他任務之前(之后)運行某些任務。這真的很簡單!
在 deploy 任務完成之后重載php-fpm:
task('reload:php-fpm', function () {
run('sudo service php-fpm reload');
});
after('deploy', 'reload:php-fpm');
如果您需要連接到主機,Deployer提供了一個快捷方式:
dep ssh
此命令將連接到選定的主機,并且進入到 current_path.
了解更多部署配置請參考: 配置 .