Amazon EC2+Jenkins+capistranoでLaravel5をデプロイする

参考になればシェアしてもらえるとうれしいです

  • このエントリーをはてなブックマークに追加
  • 8
CapistranoLogo

アプリケーションの更新のたびに発生するデプロイ作業。
そのデプロイをCapistranoで自動化するということを目標とし、EC2+Jenkins+Capistranoでデプロイ環境を構築する。

スポンサーリンク

Capistranoとは

Rubyで作られたデプロイメントツール。
高度な設定まで対応しており、学習コストが比較的高いが、いろいろ出来て便利。

何が出来るの?

設定ファイルを作成し、そのメソッド的なものを叩くことで汎用性の高いデプロイメントを行える。

デプロイはsshによるcopyや、gitなどのソースダウンロードが出来る。

今回はデプロイ先サーバにgitでソースをデプロイさせることとする。

EC2上にセットアップしたJenknsサーバにSSHで接続する

先回セットアップしたJenkinsサーバにログインを行う。

JenkinsサーバにCapistranoをインストール

capistranoは転送元サーバーにのみインストールされていれば良い。
今回はJenkinsサーバにそのままインストールすることとする。

Capistranoのインストール

gemで一発。

capistrano-colorsは見やすくなるので、入れておいたら便利
railsless-deployはRailsアプリ以外のDeployでは必須。
#今回はPHPのLaravel5アプリを想定しているため必須。

SSHのユーザ設定を行う

転送元サーバと転送先サーバに同じユーザを作る

転送元サーバ(Jenkins)と転送先サーバ(Develop)に双方同じユーザを作成する必要がある。
# そのユーザがSSHログイン等を行ないデプロイを行うため。

Jenkinsサーバ・Developサーバ両方

両方に同名ユーザを作ります。

次に、転送元サーバのSSH鍵を生成します。

転送元サーバユーザで鍵を生成

 公開鍵の取得

 鍵の内容(上記の最終行)をコピーする。

転送先サーバに転送元ユーザの鍵を登録する

まずはホスト情報を作る。面倒なんで、自分自身にSSHアクセスしてベース作る。

 次に、転送元サーバの公開鍵を既知ホストとして登録する。

上記ファイルの最終行に公開鍵情報をペーストし、上書き保存。
そして権限情報を最適化。

これで転送元→転送先のSSH設定は終わりです。
上手く設定出来たか確認してみましょう。

転送元サーバから転送先サーバへSSHで接続確認

すらすら書いているけど、権限関連でかなり詰まった・・・。

両方のサーバにGitをインストール

基本的にインストールされている可能性もありますが、年の為記載。
今回、デプロイはGitを活用するため、インストールしていないと「git clone」が行えないため、当然コケる。

転送元サーバ、転送先サーバにgitをインストール

JenkinsサーバにCapistranoを設定

Capistranoの設定ファイル群を作成していく。
ここがデプロイプロジェクトの肝となる。

 「cap install」で基本系のファイル群がジェネレートされる。

# Capistrano2では「capify [dir]」だったが、Capistrano3からは「cap install」に変わっているため注意。

Capistranoの設定ファイルを記述

プロジェクト共通設定ファイル(/home/deployuser/deploy_setting/config/deploy.rb)

env毎の設定ファイル(/home/deployuser/deploy_setting/config/deploy/develop.rb)

書き終わったらチェックする。

デプロイ先サーバでsudoを実行できるよう権限付与。

デプロイテストの実行

コマンド一覧の確認

テスト実行

ここでエラーチェックを行う。
エラーの大半は権限関係やインストール不足なので、ひとつずつ確認して潰していく。

JenkinsにCapistranoの実行を紐付け

ここまで来るとなんということは無いですね。

ビルドが成功した後のシェルの実行に下記のようにしてcapistranoのトリガを紐付け

上手く実行出来ないと思ってたら、Jenkinsユーザがsudoを実行出来なかったためでした。
sudoersにJenkinsユーザも追記

これでひとまず設定完了です。

しかし、もう少しenv設定などの取り回しを柔軟にしたいなーと思っています。
しばらくこれで回してみて問題が見えたらHackしていきましょう。

みなさん、よいCIを。

スポンサーリンク

参考になればシェアしてもらえるとうれしいです

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です