PHP Blue-Green deployment tools - deployer

Php

Requirement of deployment server (production server)

1
apt-get install -y git php

Deployer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# install via web
curl -LO https://deployer.org/deployer.phar
chmod +x deployer.phar

# or install via composer
composer global require deployer/deployer
composer require deployer/dist --dev
php vendor/bin/dep

# minor update and major upgrade
./deployer.phar self-update
./deployer.phar self-update --upgrade

# simple usage
./deployer.phar init # create config file
./deployer.phar deploy server-production # deploy to production server
./deployer.phar run 'ifconfig' # run ad-hoc command at remote server

Sample of deployer.php

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
<?php
namespace Deployer;
require 'recipe/common.php';

set('repository', 'https://github.com/calvinlam0124/cron-mysqldump.git');
set('deploy_path', '~/deployer/' . basename(get('repository'), '.git'));
set('default_stage', 'server-test');


// Hosts
host('localhost')
->user('root')
->port(22000)
->stage('server-test')
->forwardAgent();

host('server2.localhost')
->user('root')
->port(22000)
->stage('server-production')
->forwardAgent();

// Tasks
desc('Deploy your project');
task('deploy', [
'deploy:info',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:shared',
'deploy:writable',
'deploy:clear_paths',
'deploy:symlink',
'deploy:unlock',
'cleanup',
'success'
]);

// [Optional] If deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

reference

https://deployer.org/docs/examples/inventory.html