/var/log/messages

debugging with sixth sense

Nginx+unicorn でもひとつステージングなソレを動かしてみたメモ

ステージングな環境でもひとつアプリを動かすことに。面倒なので 80 でないポートを listen する形をとってみることにします。

面倒なので DB は sqlite な方向。とりあえず clone して Gemfile に以下を追加。

group :production do
  gem 'unicorn'
end

で、config/unicorn.rb を以下に。

listen "/tmp/hoge.sock"
pid "/tmp/hoge.pid"

既存のものとはカブッていないはず。で、bundle install では —path 使います。

$ bundle install --path vendor/bundle --without test development

これが終わったら以下。

$ bundle exec rake db:migrate RAILS_ENV=production

で、Unicorn を起動してみます。

$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D

これで rails 方面の準備はできた、ということで nginx 方面に着手。とりあえず設定ファイルを作って中身を以下に。

$ cat /etc/nginx/conf.d/hoge.conf
upstream test {
        server unix:/tmp/hoge.sock;
}

server {
        listen          8080;
        server_name     hoge.example.com;
        access_log      /var/www/test/logs/access.log;
        error_log       /var/www/test/logs/error.log;

        location / {
                proxy_pass http://test;
        }


        location = /robots.txt  { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }

}

80 ポートは別なナニが listen してるので 8080 にしてみました。これで nginx 再起動。

$ sudo service nginx restart

で、このサーバの 8080 にアクセスしてみたのですが返事が戻ってきませんな。

色々設定ファイルにも問題あったのですが、最後に port forward してないことが分かり問題解決できました。微妙だっのは以下。

  • 設定ファイルの upstream な記述が重複
  • なんとなくログ出力な記述を修正してディレクトリを掘った
  • port 空けて forward

でアクセスしてみたら 502 てorz

これ、localhost から w3m でアクセスすると動くんですが一体どーゆー意味か。とりあえず nginx.conf に以下を追加で何とかなった模様。

proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;

ただ、CSS が駄目らしい。これって assets:precompile だな。しかも実行したらオチてるしorz

結局

作業着手前に巻き戻してリトライすることにしました。しかも master でヤッてて超微妙。色々リセット必要ですorz

Comments