实现轻松部署你的个人项目 这是一个具有模块化、代码回滚、并行任务等功能的 PHP 部署工具。

安装

1.第一种方法:

curl -LO https://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep

如果你需要其他的版本 需要升级Deployer 可以使用命令

$ dep self-update

2.composer 安装

$ composer require deployer/deployer --dev

当然你也可以使用全局安装

$ composer global require deployer/deployer

接着使用下面的命令:

$ php vendor/bin/dep

3.如果你想使用源代码部署 那么可以

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

接着在项目文件夹里运行

$ php ./build

这是会建立 deployer.pharPhar 存档

为了方便使用 这里还是推荐第一种方式安装 如果你不是在MAC环境下 那么你可以使用全局安装

使用

现在我们就可以通过dep这个命令使用Deployer了 在你的项目目录的终端执行:

$ dep init

运行此命令后会给出下图的选项,可选择你的项目类型,这里我以Laravel项目为例 ,so 选择 [1] Laravel

初始化完成后,会自动生成 deployer.php 文件。里面包含了基本的部署配置和任务,

且有明确的注释,你可以根据注释在适当的地方添加配置以及任务。

我们设置好相应的Repositoryserver 即可以完成部署

deployer.php我们可以定义一系列的任务 举个官方的列子来说 如果我们想查看当前的目录
我们可以为这个task提供一个说明

desc('My task');

接着就是定义task:

task('pwd', function () {
    $result = run('pwd');
    writeln("Current dir: $result");
});

接着我们去命令行执行:

$ task pwd

我们会得到如下反馈

➤ Executing task pwd
Current dir: /var/www/domain.com
✔ Ok

现在我们可以开始我们的第一次部署 我们可以根据文件的注释填写相关的信息 如repository, shared_files

在第一次部署后会在服务器上生成下面的目录

  • releases 包含你部署的项目的版本
  • shared 包含你部署项目的共享文件或目录(如:Laravel 的 Storage 目录、.env 文件等 )
  • current 软连接到你当前发布的版本

所以如果你是nginx服务器 那么最后的server root应该这样配置

server {
  listen 80;
  server_name domain.org;

  root /var/www/html/current/public;

  location / {
    try_files $uri /index.php$is_args$args;
  }
}

release默认保存5个版本 当然你也可以修改成你希望的值

$ set('keep_releases', 10);

如果在部署的过程中出席那问题 你可以像在laravel数据库迁移一样 回滚当前的操作

$ dep rollback

你可以在执行一个任务之前或者之后去运行其他的任务 无非就是before after里的逻辑操作
这个在deployer.php都有实例的

所以这里我们可以定义一系列的处理业务 如重启php-fpm 执行项目的初始化数据 就以laravel项目来说

就可以执行php artisan migrate 这些都可以在部署时自动在Task里定义完成 而你只需要给出这一系列任务的顺序就行