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

Tags: codeigniter, deployment