unicorn で Hello World!
nginx + unicorn + rails という構成がごく普通だが、nginx と unicorn の接続にハマったため、問題を切り分けるためにそもそも、unicorn とはなんぞやというところからはじめることにした。
unicorn は Rack アプリを動かせるウェブサーバである。
実用性はゼロだが、unicorn だけで一度動かしてみた。
AWSで、unicorn + nginx + sinatra を動かしてみる
http://qiita.com/konpyu/items/3ba3774bcde226d7d07d
を参考にさせていただいた。
準備
$ mkdir helloworld
$ cd helloworld
$ vi Gemfile
$ vi config.ru
Gemfile:
source "https://rubygems.org"
gem "unicorn"
gem "sinatra"
config.ru:
require 'rubygems'
require 'sinatra/base'
class HelloApp < Sinatra::Base
get '/' do
'Hello World!'
end
end
run HelloApp
ここまで準備したら、
$ bundle install
$ bundle exec unicorn
すると、
I, [2016-05-26T16:11:56.939643 #17527] INFO -- : listening on addr=0.0.0.0:8080 fd=9
I, [2016-05-26T16:11:56.939867 #17527] INFO -- : worker=0 spawning...
I, [2016-05-26T16:11:56.940895 #17527] INFO -- : master process ready
I, [2016-05-26T16:11:56.941741 #17529] INFO -- : worker=0 spawned pid=17529
I, [2016-05-26T16:11:56.942187 #17529] INFO -- : Refreshing Gem list
I, [2016-05-26T16:11:57.006805 #17529] INFO -- : worker=0 ready
と unicorn が起動。
Hello World!
と表示される。
後日談
私がはまっていた問題というのは、nginx でアクセスすると、502 Bad Gateway と表示されるものだったのだが、実は、単に unicorn が起動していなかったぽい…。やれやれ。仕組みを知らずに使っていると問題の核心に近づくのに時間がかかる、という教訓だった。
nginx と unicorn は通常、Unix ドメインソケットでつなぐが、この設定は、unicorn側では、設定ファイルに、
listen "someappdir/app.sock"
などと書いておけば良いようだ。
ちなみに nginx 側は、
upstream app-production {
server unix:/someappdir/app.sock fail_timeout=0;
}
みたいにしておく。
Author And Source
この問題について(unicorn で Hello World!), 我々は、より多くの情報をここで見つけました https://qiita.com/mdew150/items/afaec692f2562a9b381d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .