CodeIgniter 3.0をコマンド一発でデプロイするCodeIgniter Deployer
CodeIgniter Composer Installerでコマンド一発でCodeIgniter 3.0をインストールできるようになりました。
デプロイもコマンド一発でできるようにしましょう。
CodeIgniter Deployer
CodeIgniterをデプロイするためのツールです。
中身はDeployerです。別にCodeIgniterでなくてもちょっと設定を変えれば使えます(w
も参考にしてください。
インストール方法
Composerでインストールします。
$ cd /path/to/codeigniter/
$ composer require 'phpseclib/phpseclib:dev-master#2c96af214bf1b5e29b707249108504b4e0041a21' # この行、Deployer v3.0.6以降では不要
$ composer require kenjis/codeigniter-deployer:1.0.x@dev --dev
$ php vendor/kenjis/codeigniter-deployer/install.php
これでインストール完了です。
(2015-06-15 更新)
phpseclibの行は、今現在Deployerがリリース前のphpseclibに依存しているため、プロジェクトルートのcomposer.jsonにそのコミットを追加しないと、stabilityの関係でうまくインストールできないために必要です。phpseclibの新しいバージョンがリリースされ、Deployerが更新されれば不要になります。 Deployer v3.0.6から不要になりました。
フォルダ構成
以下のようになります。
codeigniter/
└── deploy/
├── deploy.php ... Deployerの設定ファイル
├── deploy.sh ... デプロイ用のスクリプト
└── logs/
Deployerの設定方法
deploy/deploy.php
を変更します。
デプロイ先のサーバの指定
以下を自分のサーバに合わせて変更します。
// Your production server
server('prod', 'your.server.example.com', 22)
->user('username')
->forwardAgent()
->stage('production')
->env('branch', 'master')
->env('deploy_path', '/var/www/your-codeigniter-app');
上記はSSH Agentで認証する設定ですが、パスワードや鍵ファイルを使う場合の設定は、以下のドキュメントを参照してください。
リポジトリの指定
以下にリポジトリを設定します。
// Your Git repository
set('repository', 'git@github.com:org/your-codeigniter-app.git');
サーバ上でこのリポジトリからgit clone
しますので、アクセス可能に設定する必要があります。
サーバの設定
sudo
ttyなしパスワードなしでsudo
が実行できる必要があります。そのように設定してください。
例えば、以下のようになります。
Defaults:username !requiretty
username ALL=(ALL) NOPASSWD: /usr/bin/setfacl
デプロイ方法
以下でデプロイされます。
$ cd /path/to/codeigniter/
$ cd deploy/
$ sh deploy.sh
サーバ上では以下のように配置されます。
your-codeigniter-app/
├── current -> /var/www/your-codeigniter-app/releases/20150603181638
└── releases/
├── 20150603180505/
├── 20150603181203/
└── 20150603181638/
デプロイ先のベースパスの中のcurrent
が現在リリースされているソースになります。current
フォルダはreleases/20150603181638
へのシンボリックリンクです。
Webサーバの設定は(codeigniter-composer-installerを使っている場合は)current/public
をドキュメントルートに設定します。
CodeIgniterをデフォルトのフォルダ構成で使っている場合は、current
をドキュメントルートに設定します。
関連
Date: 2015/06/04