unicorn & nginx で tdiary を使う

tdiary に付属した config.ru があるのでほとんど設定することはなかった。

tdiary 自体の設定

tdiary は

git clone https://github.com/tdiary/tdiary-core.git

でダウンロードした。tdiary の設定は http://transitive.info/2011/07/25/serversman-vps-tdiary/ のようになっている。

ruby 2.0

ruby は rvm で 2.0 をインストールした。

rvm install ruby-2.0.0-head
rvm use ruby-2.0.0-head

gem のインストール

cd /path/to/tdiary-core

therubyracer がないと unicorn 動かなかったので Gemfile に

gem 'therubyracer'

を追加する。

bundle update

で最新の gem をインストールする。unicorn もインストールする。

gem install unicorn

unicorn の設定

unicorn の設定を書いたファイルを作成する。ここでは、unicorn.rb というファイル名にした。 log というディレクトリ以下にログと PID を出力している。 preload_app と GC の項目は必要なのかは不明。

worker_processes 2

listen '/tmp/unicorn_tdiary.sock'

stderr_path File.expand_path(File.join(File.dirname(__FILE__), 'log/unicorn.log'))
stdout_path File.expand_path(File.join(File.dirname(__FILE__), 'log/unicorn.log'))
pid stdout_path File.expand_path(File.join(File.dirname(__FILE__), 'log/pid'))

preload_app true
GC.respond_to?(:copy_on_write_friendly=) and
  GC.copy_on_write_friendly = true

次のようにして unicorn を実行する。

unicorn -c /path/to/unicorn.rb -D

tdiary の .htpasswd

git でダウンロードした tdiary-core ディレクトリに .htpasswd を置けばよい。 私の環境では別のディレクトリに置いてあったので config.ru の方を変更した。

use TDiary::Rack::Auth::Basic, '.htpasswd'

となっているところを

use TDiary::Rack::Auth::Basic, '/path/to/.htpasswd'

のようにする。

nginx

unicorn 上の設定だと /tmp/unicorn_tdiary.sock で実行されているので nginx をリバースプロキシにして /tmp/unicorn_tdiary.sock にアクセスするようにする。 nginx の設定は前に使っていたファイルをコピーしたので不要な部分があるかもしれないので注意。

/etc/nginx/sites-available/example.com に

upstream tdiary_unicorn_server {
  server unix:/tmp/unicorn_tdiary.sock;
}

server {
        listen   80;
        server_name  example.com;

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

        root /path/to/tdiary-core;

        gzip on;
        gzip_http_version 1.1;
        gzip_types text/plain
                   text/xml
                   text/css
                   application/xml
                   application/xhtml+xml
                   application/rss+xml
                   application/javascript
                   application/x-javascript;
        gzip_buffers 4 8k;
        gzip_min_length 1000;
        gzip_comp_level 1;
        gzip_proxied off;
        gzip_disable "MSIE [1-6]\."  "Mozilla/4";
        gzip_vary off;

        location / {
                proxy_http_version 1.1;
                proxy_set_header    X-Real-IP       $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header    Host            $http_host;
                proxy_redirect      off;
                proxy_max_temp_file_size    0;
                proxy_pass http://tdiary_unicorn_server;
        }
}

のような設定を書き

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

で設定を有効にして

service nginx restart

で設定を読み込ませる。

unicorn の起動

起動するたびに

cd /path/to/tdiary-core
unicorn -c /path/to/unicorn.rb -D

を実行する必要がある。本当は自動で起動するようにすれば良いのだが、サーバで常時起動なのであまり困らない。

Tags of current page

, ,