phpのデプロイツールdeployerを試してみる。
今回はcakephp3をデプロイしてみるイメージ。
リポジトリはsvnで。
vagrant で、3台のゲストサーバを用意する。
踏み台用 192.168.33.10 デプロイ先用1台目 192.168.33.11 デプロイ先用2台目 192.168.33.12
踏み台にログインして任意の場所にディレクトリを作成する $ mkdir deploy $ cd deploy 最新のdeployer.pharファイルをダウンロードしコマンド化する $ wget https://deployer.org/releases/v4.0.2/deployer.phar $ sudo mv deployer.phar /usr/local/bin/dep $ sudo chmod +x /usr/local/bin/dep 設定ファイルを用意する $ vi deploy.php ---- user('vagrant') ->password('vagrant'); // サーバログイン設定2 server('web2', '192.168.33.12', 22) ->user('vagrant') ->password('vagrant'); // 変数にデプロイ時刻を保存 set('dateYmdHis', date('Ymd_His')); // httpd.confの環境変数からシンボリックリンクのパスを決定する switch (getenv('CAKEPHP_ENV')) { case 'prod': set('linkPath', '/var/www/html/prod'); break; case 'stg': set('linkPath', '/var/www/html/stg'); break; default: set('linkPath', '/var/www/html/dev'); } // デプロイ($ dep deploy) task('deploy', function() { writeln('deploy: start'); $svn_path = ''; $dir_create_date = get('dateYmdHis'); $dep_path = '/var/www/release/' . $dir_create_date; $link_path = get('linkPath'); $result = run("sudo svn export {$svn_path} {$dep_path}"); $result = run("sudo chmod -R 777 {$dep_path}/tmp"); $result = run("sudo chmod -R 777 {$dep_path}/logs"); run('sudo systemctl stop httpd.service'); $result = run("sudo ln -nfs {$dep_path} {$link_path}"); run('sudo systemctl start httpd.service'); writeln('deploy: finish'); }); // ロールバック($dep rollback) task('rollback', function() { writeln('rollback: start'); $old_dir_create_date = run("sudo ls /var/www/release | tail -2 | head -1"); $dep_path = '/var/www/release/' . $old_dir_create_date; $link_path = get('linkPath'); run('sudo systemctl stop httpd.service'); $result = run("sudo ln -nfs {$dep_path} {$link_path}"); run('sudo systemctl start httpd.service'); writeln('rollback: finish'); }); ---- デプロイを実行 $ dep deploy ロールバックを実行 $ dep rollback
なお、デプロイ先のサーバで svn(とかgit) コマンドがインストール済みで、かつ一度svnコマンドを実行して(p)とかを押している必要あり。