Deployer 简介
Deployer是一个用PHP编写的 cli
部署工具,用于部署任何 PHP
应用程序,包括 Laravel
、Symfony
、Zend Framework
等框架。
特点
- 简单的设置过程和最小的学习曲线
- 可以使用在大多数框架上
- 没有扩展的并行执行
- 出现错误,可以回滚到之前版本
- 没有使用什么代理,仅仅是
SSH
- 可以实现零停机部署
开始安装
1 2 3
| curl -LO https://deployer.org/deployer.phar mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep
|
测试 Deployer
是否安装成功:
1 2
| $ dep --version Deployer 6.7.3
|
开始使用
安装完后,你可以通过 dep
命令在你的项目目录下运行以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| $ dep init
Welcome to the Deployer config generator
This utility will walk you through creating a deploy.php file. It only covers the most common items, and tries to guess sensible defaults. Press ^C at any time to quit.
Please select your project type [Common]: [0 ] Common [1 ] Laravel [2 ] Symfony [3 ] Yii [4 ] Yii2 Basic App [5 ] Yii2 Advanced App [6 ] Zend Framework [7 ] CakePHP [8 ] CodeIgniter [9 ] Drupal [10] TYPO3 >
|
依照提示生成 deployer.php
文件。文件中包含了基本的部署配置和任务,你可以根据注释在适当的地方添加配置以及任务。
简单测试
添加一个测试项
1 2 3
| task('test', function () { writeln('Hello world'); });
|
执行查看结果:
1 2 3 4 5 6
| $ dep test
➤ Executing task test Hello world • done on [project.com] ✔ Ok [0ms]
|
项目部署
直接上完整的部署文件 deployer.php
,这里以 Laravel
框架为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <?php namespace Deployer;
require 'recipe/laravel.php';
set('application', 'my_project');
set('repository', 'git@gitserver.com:_inc/bbs.git');
set('git_tty', true);
set('keep_releases', 5);
add('shared_files', ['.env']); add('shared_dirs', [ 'public/static', 'storage', ]);
add('writable_dirs', []);
host('192.168.15.75') ->user('deployer') ->identityFile('~/.ssh/id_rsa') ->set('deploy_path', '/www/bbs.gitserver.com');
task('build', function () { run('cd {{release_path}} && build'); });
task('success', function () { writeln('Deploy success!'); });
before('deploy:symlink', 'artisan:migrate'); after('deploy:failed', 'deploy:unlock'); after('deploy:update_code', 'success');
|
Deployer
将会在服务器上生成一下三个目录:
releases
保留部署的历史版本文件夹,
shared
共享文件夹,它的作用就是存储我们项目中版本间共享的文件,比如 Laravel
中的配置文件 .env
current
指向当前发型版本的软连接,比如指向 releases
下面的 1
号文件夹
dep rollback
如果新版本或者当前部署进程有什么错误的话,可以通过执行 dep rollback
会推到前一个版本
1 2
| dep rollback ✔ Executing task rollback
|
branch
分支部署:
如果当前需要部署一个特别的 branch、tag、reversion,只需要在后面添加对应的选项就可以。
1 2 3
| dep deploy --branch=task1111 dep deploy --tag="v0.1" dep deploy --revision="5daefb59edbaa75"
|
更多的配置项,请查看官方文档:https://deployer.org/docs/getting-started.html
参考文档: https://learnku.com/articles/13242/another-introduction-to-the-use-of-deployer
升级版本参考通过sh脚本执行Deployer代码部署