質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

Q&A

解決済

2回答

2968閲覧

nginxとunicornでsinatraを動かしたい

miyamoto0105

総合スコア216

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2016/05/14 16:00

編集2016/05/15 04:14

サーバー初心者のものですが設定に苦戦しております。
さくらvpsのubuntu、nginx、unicorn、sinatraを動かそうとしております。
どの付近を修正すればいいのかご教授いただけますでしょうか。

ブラウザ上で下記を実行するとエラーになっております。
http://hogehoge.com:8000/

2016/05/15 00:46:14 [error] 10607#0: *4 connect() to unix:/usr/share/nginx/html/hogehoge/tmp/sockets/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 999.999.999.999, server: hogehoge.com, request: "GET / HTTP/1.1", upstream: "http://unix:/usr/share/nginx/html/hogehoge/tmp/sockets/unicorn.sock:/", host: "hogehoge.com:8000"

■フォルダ構成
app.rb
config - unicorn.rb
config.ru
Gemfile
log
public - index.html
tmp - pid - unicorn.pid
tmp - sockets - unicorn.sock

■app.rb ★ここのページを表示したい。
require 'sinatra/base'

class App < Sinatra::Base
get '/' do
"<p>This is <i>dynamic</i> content served via unicorn: #{rand(36**6).to_s(36)}"
end
end
■unicornの設定
unicorn -c /usr/share/nginx/html/hogehoge/config/unicorn.rb -E production -D
を実行

ps -ef --forest | grep unicorn
で確認

user 10702 7657 0 00:51 pts/0 00:00:00 _ grep --color=auto unicorn
user 10676 1 0 00:45 ? 00:00:00 unicorn master -c /usr/share/nginx/html/hogehoge/config/unicorn.rb -E production -D
user 10679 10676 0 00:45 ? 00:00:00 _ unicorn worker[0] -c /usr/share/nginx/html/hogehoge/config/unicorn.rb -E production -D
user 10682 10676 0 00:45 ? 00:00:00 _ unicorn worker[1] -c /usr/share/nginx/html/hogehoge/config/unicorn.rb -E production -D

unicorn.rb内容
@dir = "/home/[ユーザー名]/projects/hogehoge/"
worker_processes 2
working_directory @dir

timeout 30
listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64

pid "#{@dir}tmp/pids/unicorn.pid"

stderr_path "#{@dir}log/unicorn.stderr.log"
stdout_path "#{@dir}log/unicorn.stdout.log"
■nginxの設定
/etc/nginx/sites-available/default
server {
listen 8000 default_server;
listen [::]:8000 default_server ipv6only=on;
server_name hogehoge.com;
location / {
root /usr/share/nginx/html/hogehoge/public/;
index index.html index.htm;
}
}

/etc/nginx/nginx.conf
user www-data;
worker_processes 1;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
accept_mutex off;
}

http {
include /etc/nginx/mime.types;

default_type application/octet-stream;
access_log /tmp/nginx.access.log combined;

sendfile on;
tcp_nopush on;

keepalive_timeout 5;
tcp_nodelay on;

gzip on;
gzip_vary on;
gzip_min_length 500;

gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_types text/plain text/xml text/css
text/comma-separated-values
text/javascript application/x-javascript
application/atom+xml image/x-icon;

upstream unicorn_server {
server unix:/usr/share/nginx/html/hogehoge/tmp/sockets/unicorn.sock
fail_timeout=0;
}

server {
server_name hogehoge.com;
root /usr/share/nginx/html/hogehoge/public/;
listen 8000;
client_max_body_size 4G;
keepalive_timeout 5;

location / { try_files $uri @app; } location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; # pass to the upstream unicorn server mentioned above proxy_pass http://unicorn_server; }

}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

q1701

2016/05/15 00:46

unicorn.rb の listen に記載した .sock ファイルのパスを見せてください。「■フォルダ構成」に書かれた「 -sockets-unicorn.sock」とは何でしょうか?
miyamoto0105

2016/05/15 04:15

tmp/sockets/unicorn.sockのパスの意味になります。ちなみに.sockの中には何も記載していないので少し違和感を覚えております。
guest

回答2

0

ベストアンサー

いただいた情報を確認しました。

(1)Nginxの設定内容
unix:/usr/share/nginx/html/hogehoge/tmp/sockets/unicorn.sock
(2)Unicornの設定内容
@dir = "/home/[ユーザー名]/projects/hogehoge/"
listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64

(1)と(2)に指定したSocketファイル名が一致している必要があります。(このファイルを介してNginxとUnicornがお互いに通信をするための設定です。)
Nginxの設定の方を、
/home/[ユーザー名]/projects/hogehoge/tmp/sockets/unicorn.sock
にしてみてはいかがでしょうか?

なお、.sockファイルは手動で作成するものではありません。
もし試行錯誤して、同じ名前のファイルを作成してしまったのであれば、削除しておいてください。

投稿2016/05/15 05:51

編集2016/05/15 05:52
q1701

総合スコア274

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyamoto0105

2016/05/19 13:39

sinatraのconfig.ruあたりの設定がまだおかしかったようですが、なんとか動きました。 非常に助かりました。ありがとうございます。
guest

0

以下の渡し先が合っているか確認して見て見るといいかもしれません。
proxy_pass http://unicorn_server;

投稿2016/05/15 01:25

miyamiya

総合スコア691

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyamoto0105

2016/05/15 04:17

初歩的なことで申し訳ありませんが、どのようにして確認をすればよろしいでしょうか。 全くどう確認していいのか不明な状態で申し訳ないです。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問