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

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

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

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

Ruby

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

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

1383閲覧

本番環境で[このサイトにアクセスできません]とでる

keisuke.F

総合スコア19

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

Ruby

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

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/10/13 04:45

編集2020/10/13 04:48

お世話になっております。
現在、個人アプリにて、Docker環境でunicornとnginxを導入しています。

#解決したいこと
docker-compose upとunicornを起動しても、本番環境にアクセスできない。

#現状
nginx、unicorn共に起動はできています。
dockerのコンテナ、イメージも確認できています。
docker-compose up とbuildはエラーは出ません。

URLは
http://54.178.22.150:3000/
http://54.178.22.150
共にアクセスできません。

nginxを導入するにあたって色々といじってしまった事が原因でアクセスできなくなってしまいました。
元々は、http://54.178.22.150:3000/でアクセスができておりました。

不明点は追記しますので、コメントで教えていただけますと幸いです。

Dockerfile

FROM ruby:2.5.3 ENV DOCKERIZE_VERSION v0.6.1 RUN apt-get update && \ apt-get install -y --no-install-recommends\ nodejs \ mariadb-client \ build-essential \ wget \ && wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN mkdir /app_name ENV APP_ROOT /app_name WORKDIR $APP_ROOT ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN gem install bundler # Gemfileのbundle install RUN bundle install ADD . $APP_ROOT

docker-compose.yml

version: '3' services: db: image: mysql:5.6.49 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "4306:3306" web: build: . command: dockerize -wait tcp://db:3306 -timeout 20s bundle exec unicorn -p 3000 -c /L-MGMT/config/unicorn.conf.rb volumes: - .:/app_name ports: - "3000:3000" links: - db nginx: build: context: ./nginx dockerfile: Dockerfile ports: - 81:80 restart: always depends_on: - web

nginx/Dockerfile

FROM nginx:stable RUN rm -f /etc/nginx/conf.d/* COPY nginx.conf /etc/nginx/conf.d/myapp.conf CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

nginx.conf

upstream unicorn { #ユニコーンソケットの設定 server unix:/L-MGMT/tmp/sockets/.unicorn.sock fail_timeout=0; } server { #IPとポートの指定 listen 80 default; #サーバーネームの指定 server_name localhost; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; #ドキュメントルートの指定 root /L-MGMT/public; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; try_files $uri/index.html $uri @unicorn; keepalive_timeout 5; location @unicorn { 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_pass http://unicorn; } }

unicorn.conf

$worker = 2 $timeout = 30 $app_dir = "/L-MGMT" $listen = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir $pid = File.expand_path 'tmp/pids/unicorn.pid', $app_dir $std_log = File.expand_path 'log/unicorn.log', $app_dir # set config worker_processes $worker working_directory $app_dir stderr_path $std_log stdout_path $std_log timeout $timeout listen $listen pid $pid # loading booster preload_app true # before starting processes before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{server.config[:pid]}.oldbin" if old_pid != server.pid begin Process.kill "QUIT", File.read(old_pid).to_i rescue Errno::ENOENT, Errno::ESRCH end end end # after finishing processes after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end

unicorn.rb

app_path = File.expand_path('../../', __FILE__) worker_processes 1 working_directory app_path pid "#{app_path}/tmp/pids/unicorn.pid" listen "#{app_path}/tmp/sockets/unicorn.sock" stderr_path "#{app_path}/log/unicorn.stderr.log" stdout_path "#{app_path}/log/unicorn.stdout.log" timeout 60 preload_app true GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true check_client_connection false run_once = true before_fork do |server, worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.connection if run_once run_once = false # prevent from firing again end old_pid = "#{server.config[:pid]}.oldbin" if File.exist?(old_pid) && server.pid != old_pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH => e logger.error e end end end after_fork do |_server, _worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection end

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

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

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

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

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

guest

回答2

0

ports:
- 81:80

とあるので、80:80に修正すればnginxに到達するようにはなりそうです。

投稿2020/10/14 10:23

inductor

総合スコア428

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

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

0

外していたら申し訳ないのですが、nginx.confの先頭部分を以下のようにしたらどうでしょうか?

upstream unicorn { #ユニコーンソケットの設定 server web:3000 fail_timeout=0; }

docker-cmopose.ymlを見る限りでは nginxのコンテナ内に /L-MGMT/tmp/sockets/.unicorn.sock というファイルは存在しないと思われます。
(docker exec -it 等で調べてみてください。もし、nginxコンテナにこのファイルが存在していたら、この回答は大ハズレなので無視してください。)

投稿2020/10/13 04:57

YakumoSaki

総合スコア2027

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

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

keisuke.F

2020/10/13 05:05

変わらなかったです汗 しかしながら、問題点のご指摘、ありがとうございます!
YakumoSaki

2020/10/13 05:10

外してしまいましたか…お役にたてずもうしわけない
keisuke.F

2020/10/13 05:14

心強いです。。ありがとうございます????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問