FREE-QUENCY BLOG

有限会社フリークエンシーのブログです。
渋谷区代々木にあるWEB/アプリ開発会社です。技術ネタなど更新中。

タグ:Deployer

Deployer

DeployerはPHP製のデプロイツールです。
基本動作はCapistrano3に似ていますが、
Deployerはもっと機能を絞った、シンプルな印象です。
2016年1月18日現在、3.0.10がリリースされています(公式サイト


基本動作

大まかなデプロイの流れとしては
・ホスト(CIサーバ等)からデプロイ先のサーバへSSH接続時
・デプロイ先にてリリース用ディレクトリを作成
・gitからソースをclone
・currentディレクトリのシンボリックリンクを最新のリリースディレクトリへ貼り直し
という流れになります。

ただ、それだとアプリケーションによってアップされた画像ファイルやログファイルが
リリースのたびに消えてしまいます。
そのためsharedというディレクトリが用意されており、
デプロイ時に対象ディレクトリを指定できるようになっています。

デプロイ先での配置例
deploy_path/
 ├── current -> /deploy_path/releases/20160117145103(最新のリリースフォルダ)
 ├── shared/
 |       └── fw/
 |           └── logs/(リリースフォルダ/fw/logsから参照されている)
 └── releases/
         ├── 20160117145103/
         ├── 20160117144938/
         └── 20160117134101/



インストール

下記のコマンドでpharファイル(約2.6MB)を1つダウンロードしてくるだけです。
curl -L http://deployer.org/deployer.phar -o deployer.phar
CentOSなどでコマンドとして使用するのであれば
chmod +x /usr/local/bin/dep
mv deployer.phar /usr/local/bin/dep
としておきましょう。


設定ファイルを用意

deploy.phpという名前でデプロイのための設定を記述します。
具体的にはPHPで下記のように、使用するタスクとサーバ情報、
gitのリポジトリ情報等を記述します。
設置場所はオプションで指定できます。
/usr/local/bin/dep --file=/your/server/path/deploy.php deploy stage_name -vvv
また、deployer.phpと同階層に設置するのであれば指定を省略できます。
php deployer.phar deploy sandbox -vvv


SSH接続設定

接続元サーバからデプロイ先サーバへSSH接続できるよう設定しておきます。
今回は両方のサーバに同名のユーザを作り、SSH公開鍵認証方式で接続できるよう設定
していました。
(deploy.phpのserver設定でパスワードも指定できるようですが未確認です)


実行方法

■デプロイ実行
php deployer.phar deploy stagename -vvv
実行するたびYYYYMMDDHHIISS形式でリリースフォルダを作成。
デフォルトで3世代管理されます。

■ロールバック実行
php deployer.phar rollback stagename -vvv
実行するたび1世代切り戻します。
最新のリリースフォルダは削除されます。
切り戻れるリリースフォルダが無い場合、ロールバックに失敗します。


所感

シンプルながら必要なデプロイ機能は最初から用意されている印象。
また、今回は紹介できませんでしたが、タスクの追加 / 拡張がやりやすそうなので、
プロジェクトごとの細かい対応や、migrationの実行設定なども問題なさそう。
あと、PHP製というところが地味に大事。
PHPプロジェクトにそのままdeployer.pharを含めてしまえばいいし、
エンジニアがメンテナンスに参加できるため属人化せずに済みそう。


昨日は一日Capistranoの勉強をしていた。
CapistranoはRuby製のデプロイツールで、他にも有名どころとしてFabric(Python製)、
Rocketeer(PHP)、Deployer(PHP)などがあるようだ。

そもそもデプロイツールは何を期待して使用するソフトなのか、
他のインフラ系のツールとの使い分けはどうなっているのか、が
これまで自分の中で曖昧だったのだけれど、
・実行すると全自動で複数サーバにリリース(アプリケーションの配備)を行ってくれる
・簡単にリリース前の状態に切り戻しできる
・あくまでアプリケーションの配備用であり、サーバ設定は Chef などに任せること
という理解でいいっぽい。

Capistranoが現状もっとも知名度があるようだけれど、
・高機能なのでRails以外のデプロイも出来るよ
・一番情報が出回っているので調べやすいし、安心
といった印象。

試しにCentOSにインストールして動かしてみたけど、
どうにもエラーを解決できず挫折。

「Rubyがない!」と怒られているみたいなのだけど、
Rubyの環境構築自体が初めてだったので
・Rubyの環境構築
・Capistranoの設定ファイルの記述
・Capistranoの実行場所、あるいは実行方法が悪い
どこに問題があるのか切り分けができなかった。
一応公式サイトは軽く見たつもりだけど、英語サイトなので大事なところを
読み飛ばしている可能性は高い。今度しっかり見てみよう。

↑このページのトップヘ