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