はじめに

Unicorn + Nginxで、Railsアプリの公開までに必要な設定を行います。
最近のRailsアプリではApache + Passengerの組み合わせよりもパフォーマンス面に強いということでNginx + Unicornが使われることが多くなっています。

Unicorn導入

UnicornはRuby用アプリケーションサーバのことです。
Unix系OS上で動作するRack規格Rubyアプリケーションを動かすためのアプリケーションサーバです。
Unicornの設定はいろいろあるので今回は簡易設定のみにします。

公式ページ:
http://unicorn.bogomips.org/

Unicornの詳細で参考にしたページです
http://www.engineyard.co.jp/blog/2013/everything-you-need-to-know-about-unicorn/

デプロイ対象のRailsプロジェクトを設置

今回は/home/直下に設置します

Unicornインストール

デプロイ対象のアプリディレクトリ直下のGemfileに以下を追加します

gem install unicorn

インストールします

$ bundle install

Unicorn設定

sock,pidファイルのディレクトリを作成します

$ mkdir /var/run/unicorn
$ chmod 777 /var/run/unicorn

デプロイ対象のアプリディレクトリ直下のconfigディレクトリへunicorn.rbファイルを作成し以下コードで保存します
はRailsのディレクトリを記載してください。

application = "<Railsアプリケーションディレクトリ名>"

worker_processes = 2
working_directory "/home/#{application}"

listen "/var/run/unicorn/unicorn_#{application}.sock"
pid "/var/run/unicorn/unicorn_#{application}.pid"

stderr_path "/home/#{application}/log/unicorn.stderr.log"
stdout_path "/home/#{application}/log/unicorn.stdout.log"

preload_app true

※worker_processesは適時変えてください

Unicorn起動時などにエラーなど出る場合は上記指定しているパスの「unicorn.stderr.log」ファイルで確認ができます

Unicorn起動

デプロイ対象のアプリディレクトリ直下で以下コマンドを実行します

$ unicorn_rails -c config/unicorn.rb -E development -D

※ここでエラーが出なければプロセスが実行されています

unicorn_railsのオプションについては以下になります

-c : 設定ファイル
-E : RAILS_ENV(デフォルトはdevelopment)
-D : デーモンで実行(バックグラウンド)
-p : ポート指定
–path : ディレクトリ指定

unicornのプロセスを確認してみます

ps aux | grep unicorn

ここで正しくでていればOKです

Nginx導入

軽量・高速のwebサーバーでRailsの開発ではApacheよりシェア高く、速度も高速とのことのようです。
こちらもいろいろしようとすると設定がいろいろあるので、プロジェクトにあった設定にするとパフォーマンスがあがる?と思います。

Nginxインストール

Nginxをインストールします

$ yum install nginx

Nginx設定

デフォルト設定ファイルを無効にし、設定ファイルsample.confを作成します

$ cd /etc/nginx/conf.d
$ mv default.conf _default.conf.bak
$ vim sample.conf

sample.confは以下の設定にします

    upstream unicorn-unix-domain-socket {
        server unix:/var/run/unicorn/unicorn_hoge.sock fail_timeout=0;
    }

    upstream unicorn-tcp {
        server 127.0.0.1:3000;
    }

    server {
        listen 80;
        server_name localhost;

        root /home/[railsapp]/public;

        access_log  /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        location / {
                proxy_pass http://unicorn-unix-domain-socket;
        }
     }

※「unicorn_hoge.sock」部分はunicorn.rbの「listen “/var/run/unicorn/unicorn_#{application}.sock”」で設定した値に置き換えて設定してください

Nginx起動

Nginxを起動します

$ service nginx start

既に起動している場合に設定情報を反映される場合は再起動をします

$ service nginx restart

ブラウザ動作チェック

http://[ipアドレス]

その他おすすめの備忘録

Tagged with:
 

コメントを残す