■目次
Deployer外部サーバへの接続プロジェクトを作成してリポジトリをデプロイnginxユーザでのデプロイデプロイ用ユーザでのデプロイLaravelのデプロイメモ
■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 以下は最新版をダウンロードする例 ファイルの取得以外は、インストール手順も基本的な使い方も同じ # wget http://deployer.org/deployer.phar バージョンごとの使い方の差は、以下に記載されている 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 … 処理内容を作成
<?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 ■エラー対策 「[Error] Call to undefined function Deployer\Utility\posix_setsid()」のエラーになる場合、以下を実行する 「php71」の部分は、PHPのバージョンに合わせて変更する # 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 … 接続先を定義
target: hostname: 192.168.33.11 user: vagrant deploy_path: /home/vagrant
■デバッグメッセージを表示して実行 「-vvv」を追加すれば、デバッグメッセージ付きで実行される ただしこの機能はVer6以降かも $ 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
#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ユーザでデプロイ ・ログファイルなど、アプリケーションのバージョンに関わらず利用するものは 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/
■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
develop: hostname: 192.168.33.11 user: deployer deploy_path: /var/www/deployer branch: develop
デプロイを実行すると The command "sudo systemctl restart php-fpm.service" failed. のエラーになる sudoにパスワードが必要だから?以下で解除しようとしたが反映されず? # 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
develop: hostname: 192.168.33.11 user: vagrant deploy_path: /var/www/vhosts/laravel branch: develop
deploy.php を調整する 「dep init」によって作成された内容は、Laravel用になっている 「before('deploy:symlink', 'artisan:migrate');」は、デプロイ先で .env を作るまではコメントアウトしておく(データベース接続に失敗するため) $ vi deploy.php
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');
■デプロイ実行(デプロイ元サーバ) デプロイ先(/var/www/vhosts/laravel)のディレクトリがカラであることを確認しておく テスト用のファイルがあれば、デプロイ前に削除しておく $ 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=vagrant DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel DB_PASSWORD=abcd1234
上記の設定内、「APP_ENV」が「local」だと場合によっては 「Class 'Laravel\Dusk\DuskServiceProvider' not found」 「Class 'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider' not found」 のようなエラーになるので注意 「composer require --dev laravel/dusk」でインストールするのも手だが、これは手元の開発環境にだけ入れておけば良さそう デプロイの際にComposerが実行されるので、インストールするとデプロイにとても時間がかかりそう 「productionなら無視する」ではなく「local以外なら無視する」とできるかは要検証 .env の変更を認識させるためにキャッシュをクリア $ 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
#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 ブラウザからLaravelにアクセスできることを確認 ■デプロイ実行(デプロイ元サーバ) 無効にしていたマイグレーションを有効にする $ 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