DeployerでColofulBoxにLaravelアプリケーションをデプロイする
対象読者
- ColorfulBoxにPHPアプリケーションをデプロイしたい
- GitなどでLaravelアプリケーションのソースコードをバージョン管理してる
- composerを利用してて
vendor
ディレクトリはバージョン管理対象から外してる
ColorfulBoxの制限
ColorfulBoxはいわゆる共用サーバです。VPSや専用サーバとは違って他のユーザに影響を与えないようにいくつか制限があります。
さくらインターネットなど他の共用サーバを利用したことがないのでこれらが一般的なのか分かりませんが、ColorfulBoxには現状気づいてるだけでも以下の制限が存在しています。
- CLIのPHPバージョンはcPanelからは設定できない
- php.iniの
allow_url_fopen=Off
なのでcomposer install
とかできない - サーバにrsyncがインストールされてないのでrsyncできない
これらの制約がある中でも、これから紹介する方法を利用すれば、ローカル開発環境からコマンド1つでデプロイすることが可能になります。
ちなみに、CLIのPHPバージョンを変更する方法は以下の記事で解説しています。
tofucodes.hatenablog.jp
Deployerとは
人気のフレームワークをサポートしているPHP製のデプロイツールです。 LaravelやCakePHP、他にもたくさんのPHPフレームワークがサポートされています。 他のデプロイツールとの比較はできませんが、数行のスクリプトでLaravelのアプリケーションがデプロイできて感動しました。
方法
🛠Deployerのインストール
$ curl -LO https://deployer.org/deployer.phar $ mv deployer.phar /usr/local/bin/dep $ chmod +x /usr/local/bin/dep
👨🍳Laravel用のレシピを利用してDeployerのスクリプトを作成
$ dep init -t Laravel
📝作成されるdeploy.php
を編集(解説は後述します)
<?php namespace Deployer; require 'recipe/laravel.php'; set('application', 'アプリ名'); set('repository', 'リポジトリのURL'); set('git_tty', true); set('writable_mode', 'chmod'); // 1. set('bin/php', '/home/ユーザ名/bin/php'); // 2. set('bin/composer', function () { if (commandExist('composer')) { $composer = locateBinaryPath('composer'); } return '{{bin/php}} -d allow_url_fopen=1 ' . $composer; }); host('ホスト名') ->set('deploy_path', 'デプロイ先のパス'); after('deploy:failed', 'deploy:unlock'); before('deploy:symlink', 'artisan:migrate');
🚢デプロイ実行
$ dep deploy [-vvv]
解説
1. bin/php
set('bin/php', '/home/ユーザ名/bin/php');
ColofulBoxサーバのCLIのPHPバージョンはデフォルト5.6となっていて最新版のLaravelをダウンロードすることができません。そのためDeployerが利用するCLIのPHPをバージョン7.1や7.2にする必要があります。
私はシステムのPHP7.1をユーザのbin
ディレクトリにコピーしてPATHを通して利用しているため上記のような設定になっていますが、バージョンさえ合っていればパスはどこでもいいと思います。
2. bin/composer
set('bin/composer', function () { if (commandExist('composer')) { $composer = locateBinaryPath('composer'); } return '{{bin/php}} -d allow_url_fopen=1 ' . $composer; });
制限2.で記載した通り、ColorfulBoxサーバではphp.iniのallow_url_fopen=Off
になってる都合上、単純にcomposer installを実行することができません。そこでcomposer install時に-d allow_url_fopen=1
をつけることで一時的にallow_url_fopen=On
の状態を作っています。またcomposer install時のphpに関しても先ほど2.で指定したbin/php
が利用されるようにします。