🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
unicorn

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

Ruby on Rails 6

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

2回答

2383閲覧

unicornが起動しない

daifuku0515

総合スコア3

unicorn

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

Ruby on Rails 6

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/01/09 06:47

編集2021/01/10 02:18

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
・こちらの記事を参考に、AWS上にRailsアプリをデプロイしようとしています。中身はまだ空っぽの状態です
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1

・nginx、mysqlは起動状態まで確認ずみ
・いざunicornを起動してみるも、以下のエラーが発生して起動ができない状態です。
・「[BUG] vm_get_cref」を検索してみたのですが、特にこれと言った記事がヒットせずでした。
・unicorn.rbの80行目のソースを見ると、ENV["RACK_ENV"]のcase文だったので、development環境なのかdeployment環境なのかによって条件分岐が発生していることまではわかりました。しかしながらここから何を見てどう対処すれば良いのかがわからない状態です。

ちなみにunicornを使っている理由は記事の中でunicornを使っているから従っているだけで、pumaなど他のwebサーバーの方が環境構築が簡単などあればアドバイスいただければ幸いです。業務では無く、ポートフォリオ作成の為のアプリ作成なので、まずはアプリがAWSにデプロイできることを目指しております。

発生している問題・エラーメッセージ

/home/daifuku/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/unicorn-5.8.0/lib/unicorn.rb:80: [BUG] vm_get_cref: unreachable ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]

該当のソースコード

【追記】1/10
設定したファイルのソースコードを載せます。アプリ名はhogeとしています。
またそれぞれのファイルについては、ls -lを実行し、以下にあることを確認済み

[daifuku@ip-10-0-1-212 config]$ pwd /var/www/rails/hoge/config [daifuku@ip-10-0-1-212 config]$ ls -l -rw-rw-r-- 1 daifuku daifuku 939 1月 10 01:37 unicorn.conf.rb -rw-rw-r-- 1 daifuku daifuku 1772 1月 9 01:08 database.yml [daifuku@ip-10-0-1-212 conf.d]$ pwd /etc/nginx/conf.d [daifuku@ip-10-0-1-212 conf.d]$ ls -l -rw-r--r-- 1 root root 710 1月 5 23:08 hoge.conf

unicorn.conf.rb

$worker = 2 $timeout = 30 $app_dir = "/var/www/rails/hoge" #自分のアプリケーション名 $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

hoge.conf

error_log /var/www/rails/hoge/log/nginx.error.log; access_log /var/www/rails/hoge/log/nginx.access.log; client_max_body_size 2G; upstream app_server { server unix:/var/www/rails/hoge/tmp/sockets/.unicorn.sock fail_timeout=0; } server { listen 80; server_name 123.456.789.012(実際のIPとは異なります); keepalive_timeout 5; root /var/www/rails/hoge/public; try_files $uri/index.html $uri.html $uri @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/rails/hoge/public; } }

database.yml

production: <<: *default database: hoge_production username: root password: 【空欄ではログインできなかったので、パスワードが入っています。唯一ここが記事とは違う箇所です】

試したこと

・AWS EC2の再起動
・nginxのrestart

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
・AWS EC2 t2.micro Amazon Linux(1年間無料のインスタンスです)
・Ruby 3.0.0p0
・Rails 6.1.1
・MySQL Ver 14.14 Distrib 5.7.32
・nginx version: nginx/1.16.1
・nginx,unicornのプロセス状態は以下のコマンドで確認しました。

[daifuku@ip-10-0-1-212 hoge]$ ps -ax |grep nginx 3349 ? Ss 0:00 nginx: master process /usr/sbin/nginx 19233 ? S 0:00 nginx: worker process 19519 pts/0 S+ 0:00 grep --color=auto nginx [daifuku@ip-10-0-1-212 hoge]$ ps -ax |grep unicorn | grep -v grep [daifuku@ip-10-0-1-212 hoge]$ 【何も表示されない】

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

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

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

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

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

yu_1985

2021/01/09 07:05 編集

該当の箇所はINFOとして出力なのでERRORではないのですが、問題があるのは本当にそこだけでしょうか? また、起動していないことはどうやって確認しましたか?
winterboum

2021/01/09 09:25

「中身はまだ空っぽの状態」と言うのが気になります。 Rails関係はどこまで設定してありますか?
daifuku0515

2021/01/09 13:23

yu_1985様 【BUG】〜と表示されたのでてっきりエラーかと思ったんですが違うんですね・・・。 起動していないことは以下のコマンドを入力して、何も表示されないので起動していないものと認識しております。 ps -ef |grep unicorn | grep -v grep
daifuku0515

2021/01/09 13:27

winterboum様 中身が空っぽというのはrails newをしただけの状態を表現したかったので、空っぽと表記しました。分かりづらく申し訳ありません。ローカル環境でhello worldを確認しただけの状態と伝えた方が適切だったかもしれません。
yu_1985

2021/01/09 15:44

本当に書いてあるとおりにやりましたか…?
daifuku0515

2021/01/10 01:49

yu_1985様 お恥ずかしながら、このあたりの設定に関してはただひたすらその通りにやっているので、書いてある通りに進めております。タイプミスなど無いかも確認しましたが、見当たりませんでした・・・。
yu_1985

2021/01/10 09:09

出たメッセージは本当にそれだけですか? 抜粋しているのなら抜粋せずに極力全体を貼ってください。 問題となっている箇所がそこではない可能性があります。 また、unicorn自体を起動するコマンドを打ってるところが見当たりませんが、それはちゃんと行いましたか?
guest

回答2

0

Rubyのバージョンを2.7.2、unicornのバージョンを5.4.1にダウングレードしたら動きました。

どうやらRubyの3.0.0にunicornが対応していないらしいです。

投稿2021/03/15 01:14

NaoshiHoshi

総合スコア23

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

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

0

だとすると
gem 'unicorn'
も無ければ、当然
config/unicorn.rb
もないですね?
このあたり
を参考にしてください

投稿2021/01/09 13:51

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問