deploy getting started cn

首先,安装 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,决定了如何部署,包含了部署所需要的配置和任务。默认所有 recipe 都继承了 common recipe。把你的 deploy.php 放到项目根目录然后运行 dep 或者 dep list 你可以看到可用任务的列表

你可以在项目的任意次级目录调用 dep

定义任务是很简单的:

task('test', function () {
    writeln('Hello world');
});

执行任务:

dep test

输出会是这样:

➤ Executing task test
Hello world
✔ Ok

现在创建一个在服务器上运行命令的任务。我们必须先配置 deployer。 你新的 deploy.php 文件应该包含服务器的配置,像这样:

host('domain.com')
    ->stage('production')    
    ->set('deploy_path', '/var/www/domain.com');

另外你可以在 yaml 文件中配置服务器。更多请查看 inventory

你可以在这里找到更多的服务器的配置。现在定义一个任务,在服务器上运行 pwd 命令并获得输出。

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

运行 dep 你会得到

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

现在准备第一次部署。你需要配置一些参数例如 repository, shared_files等等:

set('repository', '[email protected]:username/repository.git');
set('shared_files', [...]);

你可以的值在每个任务中使用 get 返回一些参数。另外你可以覆盖任意服务器的任意配置:

host('domain.com')
    ...
    ->set('shared_files', [...]);

查看更多关于如何配置 deploy

现在让来部署我们的应用

dep ploy

如果需要查看额外的信息,你可以加上 –vervose:

  • -v for normal output,
  • -vv for more verbose output,
  • -vvv for debug.

Deployer 会在服务器创建下列文件夹

  • releases 包含发布版本目录
  • shared 包含共享的文件和文目录
  • current 是当前发布版本的软链接

配置你的服务器来把 current 作为公共访问目录

注意 deployer 默认使用 ACL 来设置权限。你可以在 writable_mode 配置中改变

deploy 默认保留最后五个发布版本,你可以修改相关参数来增加这个值

set('keep_releases', 10);

如果在部署过程中出现错误,或者你的新发布版本中有问题,运行下列命令可以回滚到上个正常运行版本

dep rollback

你可能想要在某个任务之前或者之后运行一些特定的任务。这很容易实现!让我们在完成部署之后 reload php-fpm:

task('reload:php-fpm', function () {
    run('sudo /usr/sbin/service php7-fpm reload');
});

after('deploy', 'reload:php-fpm');

如果你需要连接到服务器,Deployer提供了更快的途径:

dep ssh

该命令会连接到服务器并切换到 current_path 目录

查看更多关于部署的配置