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

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

詳細はこちら
Ruby on Rails

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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

Q&A

1回答

2257閲覧

EC2 capistranoでのデプロイ時に(connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?)s

nika_nika

総合スコア38

Ruby on Rails

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2021/01/01 15:13

編集2021/01/08 07:12

###やりたいこと
capistranoを使って、デプロイを行いたいです。
AWSのRDSを使っています。

困っていること

ローカルで

%bundle exec cap production deploy

のコマンドをうった後

01 PG::ConnectionBad: could not connect to server: No such file or directory 01 Is the server running locally and accepting 01 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

というエラーが出ます。

やったこと

postgrSQLが起動していないというエラーだとは思うのですが、

sudo amazon-linux-extras install -y postgresql11 yum list | grep postgresql sudo yum -y install postgresql-devel

これで、バージョン11をインストールをして

psql -h エンドポイント -U postgres

ログインしてデータベースに自分の入れたproductionの確認はできています。

connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

/var/runにpostgresqlというファイルはなくて、他も探しましたがなかったです。
↑これが原因でしょうか?

他に確認すべきことや、すべきことがありましたら、ご教示お願いします。

ファイル

gemfile

1ource 'https://rubygems.org' 2git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4ruby '2.7.1' 5 6# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 7gem 'rails', '~> 6.0.3', '>= 6.0.3.4' 8# Use postgresql as the database for Active Record 9gem 'pg', '>= 0.18', '< 2.0' 10# Use Puma as the app server 11gem 'puma', '~> 4.1' 12# Use SCSS for stylesheets 13gem 'sass-rails', '>= 6' 14# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker 15gem 'webpacker', '~> 4.0' 16# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks 17gem 'turbolinks', '~> 5' 18# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 19gem 'jbuilder', '~> 2.7' 20# Use Redis adapter to run Action Cable in production 21# gem 'redis', '~> 4.0' 22# Use Active Model has_secure_password 23# gem 'bcrypt', '~> 3.1.7' 24gem 'active_decorator' 25gem 'better_errors' 26gem 'binding_of_caller' 27gem 'devise' 28gem 'aws-sdk-s3', require: false 29gem 'bootstrap', '~> 4.1.1' 30gem 'jquery-rails' 31 32# Use Active Storage variant 33# gem 'image_processing', '~> 1.2' 34 35# Reduces boot times through caching; required in config/boot.rb 36gem 'bootsnap', '>= 1.4.2', require: false 37 38group :development, :test do 39 # Call 'byebug' anywhere in the code to stop execution and get a debugger console 40 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 41 gem 'rubocop-rails' 42 gem 'dotenv-rails' 43end 44 45group :development do 46 # Access an interactive console on exception pages or by calling 'console' anywhere in the code. 47 gem 'listen', '~> 3.2' 48 gem 'web-console', '>= 3.3.0' 49 # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 50 gem 'spring' 51 gem 'spring-watcher-listen', '~> 2.0.0' 52 gem "capistrano", "~> 3.10", require: false 53 gem "capistrano-rails", "~> 1.6", require: false 54 gem 'capistrano-rbenv', '~> 2.2' 55 gem 'capistrano-rbenv-vars', '~> 0.1' 56 gem 'capistrano3-puma', '< 5' 57end 58 59group :test do 60 # Adds support for Capybara system testing and selenium driver 61 gem 'capybara', '>= 2.15' 62 gem 'selenium-webdriver' 63 # Easy installation and use of web drivers to run system tests with browsers 64 gem 'webdrivers' 65end 66 67# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 68gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 69

capfile

1require 'capistrano/rbenv' 2require 'capistrano/bundler' 3require 'capistrano/rails/assets' 4require 'capistrano/rails/migrations' 5require 'capistrano/puma' 6install_plugin Capistrano::Puma 7install_plugin Capistrano::Puma::Nginx

config/deploy.rb

lock "~> 3.14.1" set :application, "アプリ名" set :repo_url, "GitHubのリポジトリURL" set :rbenv_ruby, File.read('.ruby-version').strip set :branch, "main" set :nginx_config_name, "#{fetch(:application)}.conf" set :nginx_sites_enabled_path, "/etc/nginx/conf.d" append :linked_files, "config/master.key" append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "node_modules"

database.yml

production: <<: *default database: アプリ名_production username: postgres password: <%= ENV['アプリ名_DATABASE_PASSWORD'] %> host: <%= ENV['アプリ名_DATABASE_HOSTNAME'] %>

EC2でpostgrSQLが動いていないようです

%psql -l psql: サーバに接続できませんでした: No such file or directory ローカルにサーバが稼動していますか? Unixドメインソケット"/var/run/postgresql/.s.PGSQL.5432"で通信を受け付けていますか? %psql -h エンドポイント -U postgres psql (11.5、サーバ 12.4) 警告: psql のメジャーバージョンは 11 ですが、サーバのメジャーバージョンは 12 です。 psql の機能の中で、動作しないものがあるかもしれません。 SSL 接続 (プロトコル: TLSv1.2、暗号化方式: ECDHE-RSA-AES256-GCM-SHA384、ビット長: 256、圧縮: オフ) "help" でヘルプを表示します。

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

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

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

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

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

yu_1985

2021/01/01 19:13

調べるといろんな原因が出てきますが、とりあえずcapistranoでどのようにデプロイしたかわかるようにcaistranoの設定ファイルを貼ってみてはどうでしょうか。
winterboum

2021/01/01 22:22

No such file or direct… この先に重要な情報が有ります。
nika_nika

2021/01/02 11:42

No such file or directory で、他はなかったみたいです! 返事遅れてすいません!
winterboum

2021/01/02 11:44

その後になんという名前か書いてあるとおもうのですが
nika_nika

2021/01/02 11:53

``` 01 $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate 01 rake aborted! 01 PG::ConnectionBad: could not connect to server: No such file or directory 01 Is the server running locally and accepting 01 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/pg-1.2.3/lib/pg.rb:58:in `new' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/pg-1.2.3/lib/pg.rb:58:in `connect' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/postgresql_adapter.rb:46:in `postgresql_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:887:in `new_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:931:in `checkout_new_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:910:in `try_to_checkout_new_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:871:in `acquire_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_handling.rb:221:in `retrieve_connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/connection_handling.rb:189:in `connection' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/tasks/database_tasks.rb:238:in `migrate' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <main>' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/railties/databases.rake:84:in `each' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/activerecord-6.0.3.4/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <main>' 01 /var/www/my_portfolio/shared/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>' 01 /home/ec2-user/.rbenv/versions/2.7.1/bin/bundle:23:in `load' 01 /home/ec2-user/.rbenv/versions/2.7.1/bin/bundle:23:in `<main>' 01 Tasks: TOP => db:migrate 01 (See full trace by running task with --trace) #<Thread:0x00007fc233110f38 /Users/nikawadori/my_portfolio/vendor/bundle/ruby/2.7.0/gems/sshkit-1.21.1/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true): ``` こんな感じなんですが、一度全部貼り付けた方が分かりやすいでしょうか?
yu_1985

2021/01/02 14:08

database.ymlはどうなってますか? パスワードとかは伏せてください。
nika_nika

2021/01/02 14:19

記載しました!ENVの変数はrails cで取得できました 余談ですが、2時間前までAWSのRDSにあったデータベースが消えてました(泣)
yu_1985

2021/01/02 18:25 編集

> EC2でpostgrSQLが動いていないようです あまりちゃんと記載してないので想像ですが、アプリからつないでいるDBはRDS上ですか? それであればEC2インスタンス上のpostgresqlサーバは不要です。 なのでpsql -lがエラーになろうと無視して構いません。 psqlコマンドは別に使える必要はなく、確認用にRDSにつなぐためにあると便利というだけです。 エラーの内容がローカルに繋ぎに行ったときと同じなのですが、本当にアプリが環境変数を読み込めているのかが気になります。 環境変数はどうやって渡していますか?
nika_nika

2021/01/02 23:23

仰る通りで、DBはRDS上です。 そうなんですか!ありがとうございます。 GitHubプッシュせずに一度database.ymlに直接パスワードを渡すっていうのは危険ですか? 環境変数は、.ENVで アプリ名_DATABASE_HOSTNAME=エンドポイント みたいに渡しています! 今PCがないので後でコード貼ります!
yu_1985

2021/01/03 10:31

> GitHubプッシュせずに一度database.ymlに直接パスワードを渡すっていうのは危険ですか? ちょっとよくわからないのですが、具体的にはどんなことをすることを指してますか? database,ymlでは環境変数を使用するようにしておいて、値は環境変数でコントロールするというのは特に問題ないです。 > 環境変数は、.ENVで アプリ名_DATABASE_HOSTNAME=エンドポイント みたいに渡しています! もう少し具体的な渡し方のところですね。 あとはproductionにしか設定が書いてないと思われるので、きちんとproductionの設定を読んでいるか、とかですかね。 オプションではproductionを指定していますが…。
nika_nika

2021/01/03 12:36

database,ymlの password: <%= ENV['アプリ名_DATABASE_PASSWORD'] %> host: <%= ENV['アプリ名_DATABASE_HOSTNAME'] %> この部分の環境変数を使わずに、直接値を書いてデプロイ出来るかの確認がしたい ということだったのですが、分かりにくかったらすいません、、 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ↑これは無視してもらってもかまいせん。m(__)m すいません、具体的な渡し方が分かりません。 database.ymlには production: <<: *default database: アプリ名_production username: postgres password: <%= ENV['APP_DATABASE_PASSWORD'] %> host: <%= ENV['APP_DATABASE_HOSTNAME'] %> こんな感じで書いてあって、 .ENVで APP_DATABASE_PASSWORD=パスワード APP_DATABASE_HOSTNAME=エンドポイント こんな風に書いてます。これ以外にENVの渡し方が分からないです????説明が二重してすいません >きちんとproductionの設定を読んでいるか、とかですかね。 とは。config/deploy/production.rbの中身でしょうか? かなり知識が浅くてご迷惑をおかけします
yu_1985

2021/01/03 15:50

どう設定しているかではなくて、.envをどのようにして読み込んでいるか、というところなのですが…。 見た感じ、dotenv-railsを使っていないように見えるのですが、どのようにして.envに書き込んだ値を読み込んでますか。 Railsにそこまで詳しいわけではないので他の方法があるのなら申し訳ないですが。
nika_nika

2021/01/05 13:17

返事遅くなりすいません! 丁寧な説明ありがとうございます! gemfileのdevelopment, :test doに記載しております! group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'rubocop-rails' gem 'dotenv-rails' end
yu_1985

2021/01/05 13:26

それはdevelopment, test でしかインストールしていないということですか? もし抜粋であるなら、抜粋せずに全部貼ってください。
nika_nika

2021/01/05 13:52

はい!そういうことになります
guest

回答1

0

productionでデプロイしているのに、developmentとtestにしかにdotenv-railsをインストールしてないのなら、productionでは.envは読み込めないでしょう。
全ての環境で使うならすべての環境に入れてください。

投稿2021/01/05 15:45

yu_1985

総合スコア7588

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

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

nika_nika

2021/01/05 15:58

source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.7.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 6.0.3', '>= 6.0.3.4' # Use postgresql as the database for Active Record gem 'pg', '>= 0.18', '< 2.0' # Use Puma as the app server gem 'puma', '~> 4.1' # Use SCSS for stylesheets gem 'sass-rails', '>= 6' # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker gem 'webpacker', '~> 4.0' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.7' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use Active Model has_secure_password # gem 'bcrypt', '~> 3.1.7' gem 'active_decorator' gem 'better_errors' gem 'binding_of_caller' gem 'devise' gem 'aws-sdk-s3', require: false gem 'bootstrap', '~> 4.1.1' gem 'jquery-rails' gem 'dotenv-rails' # Use Active Storage variant # gem 'image_processing', '~> 1.2' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'rubocop-rails' end group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'listen', '~> 3.2' gem 'web-console', '>= 3.3.0' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' gem "capistrano", "~> 3.10", require: false gem "capistrano-rails", "~> 1.6", require: false gem 'capistrano-rbenv', '~> 2.2' gem 'capistrano-rbenv-vars', '~> 0.1' gem 'capistrano3-puma', '< 5' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of web drivers to run system tests with browsers gem 'webdrivers' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 全ての環境に入れて、bundle installし bundle exec cap production deploy しましたが、挙動は変わらずでした????
winterboum

2021/01/09 14:03

git commit と git push をしましたか?
yu_1985

2021/01/09 15:22 編集

rails c production で ENV['アプリ名_DATABASE_HOSTNAME'] みたいに打つとどうなりますか
nika_nika

2021/01/10 11:43

>git commit と git push をしましたか? してます! $rails c -e production Running via Spring preloader in process 25224 WARNING: Spring is running in production. To fix this make sure the spring gem is only present in `development` and `test` groups in your Gemfile and make sure you always use `bundle install --without development test` in production Loading production environment (Rails 6.0.3.4) irb(main):001:0> ENV['MY_PORTFOLIO_DATABASE_PASSWORD'] => "パスワード" irb(main):002:0> ENV['MY_PORTFOLIO_DATABASE_HOSTNAME'] => "エンドポイント" ENVに記載したパスワードとエンドポイントはちゃんと表示されました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問