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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

nginx

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

Ruby on Rails

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

3回答

1462閲覧

自動デプロイ後のMysqlエラー

_sora_

総合スコア14

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

nginx

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

Ruby on Rails

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2020/07/13 11:47

前提・実現したいこと

自動デプロイ(capistrano使用)後、ローカルで下記のエラーが発生しています。

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

unicornstderrlog

1ERROR -- : Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (Mysql2::Error::ConnectionError)

試したこと

ローカルにmysql.sockファイルがあるか確認。

$ mysqladmin variables | grep socket | performance_schema_max_socket_classes | 10 | | performance_schema_max_socket_instances | 322 | | socket | /tmp/mysql.sock

databaseyml

1# MySQL. Versions 5.0 and up are supported. 2# 3# Install the MySQL driver 4# gem install mysql2 5# 6# Ensure the MySQL gem is defined in your Gemfile 7# gem 'mysql2' 8# 9# And be sure to use new-style password hashing: 10# http://dev.mysql.com/doc/refman/5.7/en/old-client.html 11# 12default: &default 13 adapter: mysql2 14 encoding: utf8 15 pool: 5 16 username: root 17 password: 18 socket: /tmp/mysql.sock 19 20development: 21 <<: *default 22 database: hogehoge_development 23 24# Warning: The database defined as "test" will be erased and 25# re-generated from your development database when you run "rake". 26# Do not set this db to the same as development or production. 27test: 28 <<: *default 29 database: hogehoge_test 30 31# As with config/secrets.yml, you never want to store sensitive information, 32# like your database password, in your source code. If your source code is 33# ever seen by anyone, they now have access to your database. 34# 35# Instead, provide the password as a unix environment variable when you boot 36# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database 37# for a full rundown on how to provide these environment variables in a 38# production deployment. 39# 40# On Heroku and other platform providers, you may have a full connection URL 41# available as an environment variable. For example: 42# 43# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" 44# 45# You can use this database configuration with: 46# 47# production: 48# url: <%= ENV['DATABASE_URL'] %> 49# 50production: 51 <<: *default 52 database: hogehoge_production 53 username: root 54 password: <%= ENV['DATABASE_PASSWORD'] %> 55 socket: /var/lib/mysql/mysql.sock 56

database.ymlの記述も問題ないかと思います。
ご教授のほど何卒よろしくお願いします。

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

ruby 2.6.3
rails 5.0.7.2
capistrano 3.11.1
nginx 1.16.1

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

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

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

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

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

guest

回答3

0

自己解決

sudo vim /etc/nginx/conf.d/rails.conf内の記述が一部スペルミスをしていてデプロイできなかったみたいです。
無事デプロイすることができて一安心です。
解決しようとしてくれた方々ありがとうございました。

投稿2020/07/21 14:50

_sora_

総合スコア14

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

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

0

エラーメッセージでは:

console

1ERROR -- : Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (Mysql2::Error::ConnectionError)

/var/lib/mysql/mysql.sock へ接続しようとしているので、
database.ymlproduction の設定が適用されているように見えます:

yaml

1production: 2 <<: *default 3 database: hogehoge_production 4 username: root 5 password: <%= ENV['DATABASE_PASSWORD'] %> 6 socket: /var/lib/mysql/mysql.sock

Rails の環境の定義の方法はいくつかありますが、
いずれかの方法で自分が想定している環境に設定する必要があります

第7章 ユーザー登録 - Railsチュートリアル 「コラム7.1 Railsの3つの環境」を参照

投稿2020/07/13 12:20

y_shinoda

総合スコア3272

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

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

_sora_

2020/07/13 13:29

このdatabese.ymlの書き方は開発環境と本番環境とで場合分けできていないですか?
y_shinoda

2020/07/13 13:37

database.yml の書き方自体は問題ないように思います(あくまで、「思います」) ただ、"production" の設定が読み込まれている、 つまり「本番環境」として動いているようですが、 それは意図通りでしょうか? もし、意図通りでないのであれば、 「どの環境として動くべきか」を何かしらの方法で行う必要があります その方法については、「コラム7.1 Railsの3つの環境」を参照するとわかりやすいと思います
guest

0

そのメッセージのlocalってサーバー上で動く unicornにとってのlocalつまりサーバーのことでは無いですか?
/var/lib/mysql/mysql.sock に接続に行ってそれが見つからないということです。mysqlの設定で変わります /tmp に有ったりしませんか?

投稿2020/07/13 12:00

winterboum

総合スコア23567

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

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

_sora_

2020/07/13 13:34

どういうことでしょうか?? /tmp にmysql.sockはありませんでした。
winterboum

2020/07/13 22:20

/var/lib/mysql/mysql.sock はありますか?
_sora_

2020/07/14 05:59

本番環境のサーバにあります
winterboum

2020/07/14 13:22

すると可能性として 「 実はmysqlが止まっている。そのソケットは以前動いていたものの残骸」 ps -eaf | grep mysqld すると動いていますか?
_sora_

2020/07/14 14:07

$ ps -eaf | grep mysqld root 3041 1 0 Jul13 ? 00:00:00 /bin/sh /usr/libexec/mysql56/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 3255 3041 0 Jul13 ? 00:00:19 /usr/libexec/mysql56/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql56/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock ec2-user 10586 9273 0 14:05 pts/0 00:00:00 grep --color=auto mysqld
_sora_

2020/07/14 14:08

となります。 動いているように思います。
winterboum

2020/07/14 20:48

ですね。socketも一致している。 はて、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問