ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

Capistranoで快適デプロイ生活したかった

なぜできないのか
Capistranoで先日の環境にデプロイを自動化しようとしたところうまく行ってないお話です。

Capistranoでデプロイするとこうなる

ひとまずCapistranoをセットアップして、
cap production deploy
と打ち込むと、だいたい次の4つのことが起きます。セットアップについては長くなるので日を改めて。

  • デプロイ先のサーバーにアプリケーションに必要なファイルが投げつけられます。今のところCapistrano3はGit経由しか選べないようです。
  • デプロイ先に以下のようなディレクトリが構成されます。
[project_root]
├shared #共有するファイル
├current #20140117xxxx へのシンボリックリンク
├repo #リポジトリ
├revisions.log #リリースログ
└releases #過去のリリース
 ├20140117xxxx #最新版
 ├20140117yyyy
 └ ・・・

NginxとUnicornの設定を見直してみた

前の設定から少し改めて、ポートでリッスンするようにしました。
また、Unicornのワーキングディレクトリは/path/to/project_rootに、Nginxのルートは/path/to/project_root/current/publicに設定します。

server {
    root    /path/to/project_root/current/public;

    # 中略

    #assetsは直接返すように設定
    location ~* \.(html|ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
        root    /path/to/project_root/public;
        expires 1d;
        add_header Cache-Control public;

        break;
    }

    # 中略

}

upstream application-unicorn {
  server 127.0.0.1:8080; #ポートによる指定に変更
}
working_directory "/path/to/project_root/"

# ワーカーの数
worker_processes 4

# ソケット
listen 8080, :tcp_nopush => true 

#以下省略

この前から変更点のないところは省略しました。しかしなぜ動いてくれないのか…