Deployer
Deployer - Deployment Tool for PHP
https://deployer.org/
PHPで作られたデプロイツール
デプロイサーバにDeployerをインストールし、対象のサーバに命令を送る…という使い方をする
Webサーバがプライベートネットワークにあり、アクセスはロードバランサー…という場合、踏み台サーバ経由でデプロイする場合にも使える
動作にはPHP7が必要
Deployerを使ってデプロイしてみたら想像以上に楽だった - Qiita
https://qiita.com/ritukiii/items/ce1876b85c5bed68c93b
PHPだけで使えるDeployerでデプロイ | Pepo-le blog
https://blog.pepo-le.com/deployer/
Vagrant環境で試す場合、Ansible.txt にならって2台構成で最低限の環境を構築しておくといい
■準備
※デプロイ元サーバにPHP7が無ければ、あらかじめインストールしておく
※練習ではなく実際に使い続けるサーバなら、言語やタイムゾーンなども最初に設定しておく
# yum -y install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum -y install --enablerepo=remi-php71 php php-cli php-common php-devel php-fpm
# yum -y install --enablerepo=remi-php71 php-process
# php -v
■Deployerをインストール
※最新版の挙動が怪しい(リポジトリのデプロイができない?)ので、Ver5の最終版を試す
# wget https://deployer.org/releases/v5.1.3/deployer.phar
# mv deployer.phar /usr/local/bin/dep
# chmod +x /usr/local/bin/dep
# dep
Deployer 5.1.3
# exit
以下は最新版をダウンロードする例
ファイルの取得以外は、インストール手順も基本的な使い方も同じ
バージョンごとの使い方の差は、以下に記載されている
deployer/UPGRADE.md at master - deployphp/deployer
https://github.com/deployphp/deployer/blob/master/UPGRADE.md
また例えばPHPのバージョンが5.6の場合、Deployerは4.3を使う必要があるみたい
今日からはじめるCI/CD ─ CircleCI + Deployerでテストとデプロイを自動化しよう!【休日個人開発】 - エンジニアHub|若手Webエンジニアのキャリアを考える!
https://employment.en-japan.com/engineerhub/entry/2018/03/20/110000
■1つのサーバ内でDeployerを動作確認
$ mkdir deploy_test
$ cd deploy_test
$ vi deploy.php … 処理内容を作成
■エラー対策
「[Error] Call to undefined function Deployer\Utility\posix_setsid()」のエラーになる場合、以下を実行する
「php71」の部分は、PHPのバージョンに合わせて変更する
<?php
namespace Deployer;
task('test', function () {
writeln('Hello world!');
});
$ dep test … Deployerを実行
Executing task test
Hello world!
Ok
$ vi deploy.php … 処理内容を作成
<?php
namespace Deployer;
task('test', function () {
writeln('Hello world!');
});
task('pwd', function () {
$result = run('pwd');
writeln("Current dir: $result");
});
$ dep test … Deployerを実行
Executing task test
Hello world!
Ok
$ dep pwd … Deployerを実行
Executing task pwd
Current dir: /home/vagrant/deploy_test
Ok
# yum -y install --enablerepo=remi-php71 php-process
# service php-fpm restart
# service nginx restart
deployerを実行した時にエラーになって進まないのを解決する話 - Qiita
https://qiita.com/binthec/items/bdc82416d4f6643498c9
「未だに必要要件が書いてあるページを見つけられません。どなたか知ってたら教えてください。」
とあるように、「PHP7」以外の必要要件がよく判らない
外部サーバへの接続
※対象サーバにSSH接続できることが前提
■パスワードでの接続
デプロイツール「Deployer」をつかってみた。PHPerなら簡単に使えます
https://gootablog.com/use-deployer
$ cd
$ mkdir deploy_target
$ cd deploy_target
$ vi file.yml … 接続先を定義
■鍵での接続
鍵を設定済みなら、以下の設定だけで接続できる
target:
hostname: 192.168.33.11
user: vagrant
pass: vagrant
deploy_path: /home/vagrant
$ vi deploy.php … 処理内容を作成
<?php
namespace Deployer;
inventory('file.yml');
task('test', function () {
run('cd ' . get('deploy_path'));
writeln('hostname: ' . run('hostname'));
writeln('id: ' . run('id'));
writeln('pwd: ' . run('pwd'));
writeln("ls:\n" . run('ls'));
});
$ dep test target … Deployerを実行(接続先での実行結果が表示される)
Executing task test
hostname: target.localhost
id: uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
pwd: /home/vagrant
ls:
test1.txt
test2.txt
Ok
$ vi file.yml … 接続先を定義
■デバッグメッセージを表示して実行
「-vvv」を追加すれば、デバッグメッセージ付きで実行される
ただしこの機能はVer6以降かも
target:
hostname: 192.168.33.11
user: vagrant
deploy_path: /home/vagrant
$ dep test target -vvv
Executing task test
[target] > cd /home/vagrant
[target] > hostname
[target] < target.localhost
hostname: target.localhost
[target] > id
[target] < uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
id: uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
[target] > pwd
[target] < /home/vagrant
pwd: /home/vagrant
[target] > ls
[target] < test1.txt
[target] < test2.txt
ls:
test1.txt
test2.txt
done on [target]
Ok [164ms]
プロジェクトを作成してリポジトリをデプロイ
※デプロイ先サーバにGitのインストールが必要
■デプロイ先ディレクトリを作成
あらかじめ、デプロイ先サーバにディレクトリを作成しておく
$ sudo su -
# mkdir /var/www/deploy_test
# chown vagrant. /var/www/deploy_test
■プロジェクトを作成
デプロイ元サーバでDeployerのプロジェクトを作成する
(「deploy_init」という名前にしているが、実際は案件名をもとにしたディレクトリ名にするといい)
$ cd
$ mkdir deploy_init
$ cd deploy_init
$ 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
> 0 … 今回は「0」を入力
Repository []:
> git@bitbucket.org:refirio/test.git … デプロイしたいリポジトリを入力
Contribute to the Deployer Development
In order to help development and improve Deployer features in,
Deployer has a setting for collection of usage data. This function
collects anonymous usage data and sends it to Deployer. The data is
used in Deployer development to get reliable statistics on which
features are used (or not used). The information is not traceable
to any individual or organization. Participation is voluntary,
and you can change your mind at any time.
Anonymous usage data contains Deployer version, php version, os type,
name of the command being executed and whether it was successful or not,
exception class name, count of hosts and anonymized project hash.
If you would like to allow us to gather this information and help
us develop a better tool, please add the code below.
set('allow_anonymous_stats', true);
This function will not affect the performance of Deployer as
the data is insignificant and transmitted in separate process.
Do you confirm? (yes/no) [yes]:
> yes … 「yes」を入力
Successfully created: /home/vagrant/deploy_init/deploy.php … 上記入力内容をもとに、処理内容を記述したファイルが作成される
$ vi file.yml … 接続先を定義
■デプロイの確認
対象サーバで確認すると、以下のようにファイルが配置されている
develop:
hostname: 192.168.33.11
user: vagrant
deploy_path: /var/www/deploy_test
$ vi deploy.php … 作成されたファイルを編集
<?php
namespace Deployer;
require 'recipe/common.php';
// Configuration
set('repository', 'git@bitbucket.org:refirio/test.git'); … デプロイしたいリポジトリが設定済みになっている
set('git_tty', true); // [Optional] Allocate tty for git on first deployment
set('shared_files', []);
set('shared_dirs', []);
set('writable_dirs', []);
// Hosts
inventory('file.yml'); … 接続設定を読み込み
/* … 元の接続設定はコメントアウトする
host('project.com')
->stage('production')
->set('deploy_path', '/var/www/project.com');
host('beta.project.com')
->stage('beta')
->set('deploy_path', '/var/www/project.com');
*/
// Tasks
desc('Restart PHP-FPM service');
task('php-fpm:restart', function () {
// The user must have rights for restart service
// /etc/sudoers: username ALL=NOPASSWD:/bin/systemctl restart php-fpm.service
run('sudo systemctl restart php-fpm.service');
});
after('deploy:symlink', 'php-fpm:restart');
desc('Deploy your project');
task('deploy', [
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:shared',
'deploy:writable',
// 'deploy:vendors', … プロジェクトにComposerが含まれないならコメントアウトする
'deploy:clear_paths',
'deploy:symlink',
'deploy:unlock',
'cleanup',
'success'
]);
// [Optional] if deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');
$ dep deploy develop … この時点で実行しても、リポジトリにアクセスできずにエラーになる
Executing task deploy:prepare
Executing task deploy:lock
Executing task deploy:release
Executing task deploy:update_code
The authenticity of host 'bitbucket.org (18.205.93.0)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,18.205.93.0' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Connection to 192.168.33.11 closed.
Executing task deploy:failed
Executing task deploy:unlock
[Symfony\Component\Process\Exception\ProcessFailedException]
The command "ssh -A -tt vagrant@192.168.33.11 '/usr/bin/git clone --depth 1 --recursive -q git@bitbucket.org:refirio/test.git /var/www/deploy_test/releases/1 2>&1'" failed.
Exit Code: 128(Invalid exit argument)
Working directory: /home/vagrant/deploy_init
Output:
================
Error Output:
================
deploy [-p|--parallel] [-l|--limit LIMIT] [--no-hooks] [--log LOG] [--roles ROLES] [--hosts HOSTS] [-o|--option OPTION] [--] [<stage>]
$ ssh-keygen -t rsa … デプロイ先サーバ(デプロイ元サーバではない)で鍵を作成し、リポジトリ(GitHubやBitbucket)に登録する
$ vi ~/.ssh/id_rsa.pub
$ dep deploy develop … 今度はデプロイできる
Executing task deploy:prepare
Executing task deploy:lock
Executing task deploy:release
Executing task deploy:update_code
Connection to 192.168.33.11 closed.
Ok
Executing task deploy:shared
Executing task deploy:writable
Executing task deploy:clear_paths
Executing task deploy:symlink
Executing task php-fpm:restart
Executing task deploy:unlock
Executing task cleanup
Executing task success
Successfully deployed!
# pwd
/var/www/deploy_test
# ll
total 0
lrwxrwxrwx 1 vagrant vagrant 10 Nov 16 14:54 current -> releases/1 … releasesの中で一番新しいものへのシンボリックリンク
drwxrwxr-x 3 vagrant vagrant 14 Nov 16 14:54 releases … デプロイ履歴
drwxrwxr-x 2 vagrant vagrant 6 Nov 16 14:54 shared … releases間で共通して使われるディレクトリ
# ll current/ … 公開したい内容が確認できる
total 8
drwxr-xr-x 2 vagrant vagrant 6 Nov 16 15:11 css
-rw-r--r-- 1 vagrant vagrant 10 Nov 16 15:11 index.php
drwxr-xr-x 2 vagrant vagrant 6 Nov 16 15:11 js
■デプロイ内容の公開
一例だがWebサーバを以下のように設定することで、デプロイ内容を公開できる
# vi /etc/nginx/nginx.conf
■引き続き
以下を検証しておきたい
・nginxユーザでデプロイ
・ログファイルなど、アプリケーションのバージョンに関わらず利用するものは shared_dirs や shared_files で指定するみたい
・ロールバック
・シンボリックリンクの手動での張り替え
・一切の変更がなくても別ディレクトリに丸ごとデプロイされるのは仕様?
各タスクの意味は以下に記載されている
DeployerによるPHPデプロイ : エキサイト公式 エンジニアブログ
https://blog.excite.co.jp/exdev/27205935/
ソースコードは以下にあるので、実際の処理内容を確認できる
deployphp/deployer: A deployment tool written in PHP with support for popular frameworks out of the box
https://github.com/deployphp/deployer
このツールに関係なく、シンボルリンクで公開ディレクトリ切り替えを試したい
publicフォルダにシンボリックリンクを貼る - Laravel学習帳
https://laraweb.net/environment/1332/
#root /var/www/html;
root /var/www/deploy_test/current;
#fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/deploy_test/current$fastcgi_script_name;
# service nginx restart
nginxユーザでのデプロイ
※検証中だがいったん導入見送り中
デプロイ先のサーバで以下を実行して鍵を作成
…としようとしたが、nginxユーザのSSHログインは禁止されている
なんとかして無理矢理ログインできるようにするよりは、デプロイ用にユーザを作成して接続する方が良さそう
$ sudo su -s /bin/bash - nginx
$ mkdir /var/lib/nginx/.ssh
$ chown -R nginx:nginx /var/lib/nginx/.ssh/
$ ssh-keygen -t rsa
$ vi /var/lib/nginx/.ssh/id_rsa
$ vi /var/lib/nginx/.ssh/id_rsa.pub
デプロイ用ユーザでのデプロイ
※検証中だがいったん導入見送り中
Ansibleと組み合わせたときにユーザの作成が大変になるなら、vagrantやec2-userでのデプロイの方がいいか
vagrantユーザにはパスワードが設定されているが、「sudo su -」はパスワードなしで実行できるしwheelグループにも属していない
特殊なユーザだからか。要勉強
デプロイ用ユーザーの在り方を考える | // sakura note
https://saku.io/use-dedicated-user-for-deployment/
■ユーザの作成
デプロイ先でユーザを作成
# useradd deployer
# passwd deployer
abcd1234
デプロイ元からパスワードでのアクセスを確認
$ ssh deployer@192.168.33.11
デプロイ先で鍵を作成
$ sudo su - deployer
$ ssh-keygen -t rsa
$ ll /home/deployer/.ssh/
$ vi /home/deployer/.ssh/id_rsa
$ vi /home/deployer/.ssh/id_rsa.pub
$ cp /home/deployer/.ssh/id_rsa.pub /home/deployer/.ssh/authorized_keys
$ chown deployer. /home/deployer/.ssh/authorized_keys
$ chmod 0600 /home/deployer/.ssh/authorized_keys
デプロイ元に鍵を作成
$ mkdir /home/vagrant/deployer
$ vi /home/vagrant/deployer/id_rsa
$ chmod 0600 /home/vagrant/deployer/id_rsa
デプロイ元からデプロイ先に鍵で接続
$ ssh -i /home/vagrant/deployer/id_rsa deployer@192.168.33.11
デプロイ元からDeployerで接続
$ cd
$ mkdir deploy_develop
$ cd deploy_develop
$ vi file.yml
何故か鍵では接続できないのでパスワードで接続
develop:
hostname: 192.168.33.11
user: deployer
identity_file: /home/vagrant/deployer/id_rsa
deploy_path: /var/www
$ vi file.yml
何故かパスワードでも接続できていない?
develop:
hostname: 192.168.33.11
user: deployer
pass: abcd1234
deploy_path: /home/deployer
$ vi file.yml
この状態にして、接続時にパスワードを入力すれば接続できる
要検証
develop:
hostname: 192.168.33.11
user: deployer
deploy_path: /home/deployer
$ vi deploy.php
■デプロイ先でパーミッションの調整
<?php
namespace Deployer;
inventory('file.yml');
task('test', function () {
run('cd ' . get('deploy_path'));
writeln('hostname: ' . run('hostname'));
writeln('id: ' . run('id'));
writeln('pwd: ' . run('pwd'));
writeln("ls:\n" . run('ls'));
});
$ dep test develop
# usermod -G nginx deployer
# mkdir /var/www/deployer
# chown nginx. /var/www/deployer
# chmod 0775 /var/www/deployer
# chmod g+s /var/www/deployer
$ sudo su - deployer
ここにデプロイさせるか
/home/deployer/.ssh/id_rsa.pub をGitサービスに登録しておく
$ vi file.yml
デプロイを実行すると
The command "sudo systemctl restart php-fpm.service" failed.
のエラーになる
sudoにパスワードが必要だから?以下で解除しようとしたが反映されず?
develop:
hostname: 192.168.33.11
user: deployer
deploy_path: /var/www/deployer
branch: develop
# usermod -G wheel deployer
# vi /etc/pam.d/su
#auth required pam_wheel.so use_uid
auth required pam_wheel.so use_uid … コメント解除
# visudo
# %wheel ALL=(ALL) ALL
%wheel ALL=(ALL) ALL … コメント解除
Laravelのデプロイ
DeployerでLaravelをデプロイする - Qiita
https://qiita.com/shalman/items/c09eb23137a9d5269f10
Vagrantでデプロイ元とデプロイ先を作り、
デプロイ元からAnsibleでデプロイ先の設定を行い
そこにvagrantユーザからDeployerでLaravelをデプロイしたときのメモ
AWS環境ならvagrantユーザをec2-userユーザに読み替えれば、同じように作業できそう
■準備(デプロイ先サーバ)
・nginx+PHP+MySQLなど、Laravelの稼働に必要なものをインストールしておく
・デプロイ用の鍵を作成してBitbucketに登録しておく
デプロイするユーザについては要検討だが、vagrantやec2-userを使うのが無難か
今回はvagrantユーザで実行している
$ ssh-keygen -t rsa
$ vi ~/.ssh/id_rsa.pub
・デプロイ先のディレクトリを作成しておく
$ sudo su -
# mkdir /var/www/vhosts
# mkdir /var/www/vhosts/laravel
# chown nginx. /var/www/vhosts/laravel
# chmod 0775 /var/www/vhosts/laravel
# chmod g+s /var/www/vhosts/laravel
・デプロイ用ユーザをnginxグループに追加しておく
# usermod -G nginx vagrant
・以下でファイルを作成すると、作成者がvagrantでグループがnginxになる(確認が終わったらファイルは削除しておく)
グループの追加は、いったんログアウトしないと反映されないので注意(vagrantからログアウトし、再度vagrantでログインする)
$ cd /var/www/vhosts/laravel
$ vi test1.txt
$ pwd
/var/www/vhosts/laravel
$ ll
total 4
-rw-rw-r-- 1 vagrant nginx 6 Nov 29 12:22 test1.txt
■準備(デプロイ元サーバ)
・Deployerをインストール。使えるようにしておく
・Deployer用のディレクトリを作成しておく
$ cd
$ mkdir deploy_laravel
$ cd deploy_laravel
■Deployerセットアップ(デプロイ元サーバ)
$ dep init
Please select your project type [Common]:
は「1」にしてLaravelを選択
Repository []:
は「git@bitbucket.org:refirio/test.git」のようにデプロイしたいリポジトリを入力
接続設定ファイルも作成しておく。「branch」はデプロイするブランチ名
$ vi file.yml
deploy.php を調整する
「dep init」によって作成された内容は、Laravel用になっている
「before('deploy:symlink', 'artisan:migrate');」は、デプロイ先で .env を作るまではコメントアウトしておく(データベース接続に失敗するため)
develop:
hostname: 192.168.33.11
user: vagrant
deploy_path: /var/www/vhosts/laravel
branch: develop
$ vi deploy.php
■デプロイ実行(デプロイ元サーバ)
デプロイ先(/var/www/vhosts/laravel)のディレクトリがカラであることを確認しておく
テスト用のファイルがあれば、デプロイ前に削除しておく
add('shared_files', []);
add('shared_dirs', []);
add('writable_dirs', []);
↓
add('shared_files', ['.env']);
add('shared_dirs', ['storage']);
add('writable_dirs', ['bootstrap/cache', 'storage']);
host('project.com')
->stage('production')
->set('deploy_path', '/var/www/project.com');
host('beta.project.com')
->stage('beta')
->set('deploy_path', '/var/www/project.com');
↓
inventory('file.yml');
/*
host('project.com')
->stage('production')
->set('deploy_path', '/var/www/project.com');
host('beta.project.com')
->stage('beta')
->set('deploy_path', '/var/www/project.com');
*/
before('deploy:symlink', 'artisan:migrate');
↓
//before('deploy:symlink', 'artisan:migrate');
$ dep deploy develop
デプロイ先サーバにComposerが無いとエラーになるので注意
初回実行時は「deploy:update_code」の際に接続確認を求められるので応答する
「deploy:vendors」は結構時間がかかる。対象サーバにunzipがインストールされていれば速度向上にはなる(無くてもデプロイ自体はできる)
■デプロイ確認(デプロイ先サーバ)
デプロイ先サーバで、ソースコードが配置されていることを確認する
$ ll /var/www/vhosts/laravel/current/
■Laravel設定(デプロイ先サーバ)
データベースに接続ユーザとデータベースを作成する
$ mysql -u root
>CREATE USER laravel@localhost IDENTIFIED BY 'abcd1234';
>GRANT ALL PRIVILEGES ON laravel.* TO laravel@localhost;
>CREATE DATABASE laravel DEFAULT CHARACTER SET utf8mb4;
.env は作成されているが、内容はカラなので入力する
以下は .env.local を複製して調整する例
$ cp /var/www/vhosts/laravel/current/.env.local /var/www/vhosts/laravel/shared/.env
$ vi /var/www/vhosts/laravel/shared/.env
上記の設定内、「APP_ENV」が「local」だと場合によっては
「Class 'Laravel\Dusk\DuskServiceProvider' not found」
「Class 'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider' not found」
のようなエラーになるので注意
「composer require --dev laravel/dusk」でインストールするのも手だが、これは手元の開発環境にだけ入れておけば良さそう
デプロイの際にComposerが実行されるので、インストールするとデプロイにとても時間がかかりそう
「productionなら無視する」ではなく「local以外なら無視する」とできるかは要検証
.env の変更を認識させるためにキャッシュをクリア
APP_ENV=vagrant
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=abcd1234
$ cd /var/www/vhosts/laravel/current/
$ php artisan config:clear
ひととおり操作できることを確認
$ cd /var/www/vhosts/laravel/current/
$ php artisan
$ php artisan migrate
$ php artisan db:seed
$ php artisan config:clear
$ php artisan view:clear
nginxの設定ファイルを調整して再起動し、デプロイ内容を公開(Ansibleで管理している場合はそちらで操作)
# vi /etc/nginx/conf.d/www.conf
ブラウザからLaravelにアクセスできることを確認
■デプロイ実行(デプロイ元サーバ)
無効にしていたマイグレーションを有効にする
#root /var/www/html;
root /var/www/vhosts/laravel/current/public;
#fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/laravel/current/public$fastcgi_script_name;
# service nginx restart
$ vi deploy.php
マイグレーションも含めてデプロイをテストする
(以降はこのコマンドのみでデプロイできる)
//before('deploy:symlink', 'artisan:migrate');
↓
before('deploy:symlink', 'artisan:migrate');
$ dep deploy develop
ブラウザからLaravelにアクセスし、異常が無いことを確認する
なお、デプロイ先で以下のコマンドを実行しなくても、Deployerによってシンボルリンクは設定済みになっている
(「/storage/information/2/image1.jpg」などでアクセスできる)
$ php artisan storage:link
メモ
■引き続き検証したいもの
シンボリックリンクを張り替えてデプロイバージョンを調整する方法
以下で対応できそうだが、実際に試しておく
$ dep rollback develop
PHP製のDeployerでデプロイ環境構築 | AloMarron DevBlog
http://blog.alomarron.com/php/deployer
PHPプロジェクトを簡単にデプロイするならDeployerがお薦め - A Day in Serenity (Reloaded) - PHP, FuelPHP, Linux or something
http://blog.a-way-out.net/blog/2015/06/02/deployer-is-good-for-simple-deployment/
Deployerでrsyncを使う - A Day in Serenity (Reloaded) - PHP, FuelPHP, Linux or something
http://blog.a-way-out.net/blog/2015/06/03/rsync-with-deployer/
■別ツール(Laravelを使っているなら検討に入れてもいい)
Envoyタスクランナー 5.5 Laravel
https://readouble.com/laravel/5.5/ja/envoy.html
LaravelにEnvoyタスクランナーを導入する手順 - Qiita
https://qiita.com/Arm4/items/da3adc249c3739deaf2a
■Ver6で試してダメだったときのメモ
$ dep deploy develop -vvvv
[localhost] > git rev-parse --abbrev-ref HEAD
[localhost] < fatal: Not a git repository (or any of the parent directories): .git
gitリポジトリがないと言われるので手動で取得してみる
$ git clone git@bitbucket.org:refirio/test.git ./
GitからCloneしてから試してみる
$ git clone git@bitbucket.org:refirio/test.git ./
さらに両方のサーバから、リポジトリにアクセスできるように調整してみる
さらに両方のサーバで、Composerを使えるようにしてみる
さらに両方のサーバで、unzipを使えるようにしてみる
yum -y install zip
yum -y install unzip
Composerは使っていないのでコメントアウト。これが一番の原因かも?これでデプロイできた
// 'deploy:vendors',
各タスクの意味は以下に記載されている
DeployerによるPHPデプロイ : エキサイト公式 エンジニアブログ
https://blog.excite.co.jp/exdev/27205935/
これを踏まえて再挑戦すれば、最新版でも動作するかも?
でもfatal errorになっていたので、そういう問題ではかも?駄目ならVer5を使う
毎回composer installを実行する前提なら、ちょっとしたテキストの編集でもデプロイの負荷は大きそう
mbstringの設定がされていないとエラーになるかも?関係ないかも?対象サーバにもPHP7が必要かも?要確認
対象サーバにComposerも必要かも?要確認
対象サーバはPHP7が十分に動作する環境である必要があるかも?要確認
使い方によってはgitも必要みたい?対象のサーバに必要みたい?要確認
Gitが絡むとまだ動かず
PHPアプリケーションのデプロイにぴったりなDeployerを試す | さくらのナレッジ
https://knowledge.sakura.ad.jp/4356/
Deployer でつまづいたポイント(Windows 10+さくらレンタルサーバー+GitHub) - Qiita
https://qiita.com/hirocueki2/items/d4464a5bf6e4041cab68
Deployerを使ってみた話 | ツクメモ - ウェブやアプリをツクるヒトのメモ
https://tukumemo.com/deployer-php/
■過去バージョンの導入を調べたときのメモ
仕様はガンガン変わるみたいなのはちょっと怖い
Ver6の資料が少ないようなら、Ver5の最終版を使うのはアリかもしれない
# wget http://deployer.org/deployer.phar
# wget https://deployer.org/releases/v5.1.3/deployer.phar
# wget https://deployer.org/releases/v4.3.1/deployer.phar
デプロイツール「Deployer」をつかってみた。PHPerなら簡単に使えます
https://gootablog.com/use-deployer
と思ったが、上記ページはVer6がもとになっている
いったんこの内容でお試し中
Bitbucket Pipelines で PHP のプロジェクトを Deployer する - koudenpaのブログ
https://koudenpa.hatenablog.com/entry/2017/05/27/040000