teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

githubリポジトリ名を隠す

2022/05/30 00:23

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -1,174 +1,174 @@
1
- ### 実現したいこと
2
- ローカルのDockerコンテナ内に作成したRailsアプリを、AWSのEC2サーバにデプロイしたいです。
3
-
4
- ### 表示されているエラー
5
- dockerのRailsコンテナ内で「bundle exec cap production deploy」すると、以下のエラーが出ます。
6
-
7
- ```
8
- SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@(IPアドレス): Authentication failed for user ec2-user@(IPアドレス)
9
- ```
10
-
11
- エラー全文
12
- ![エラー内容](a95457eb65bc3b03cbfcbc0195129fa0.png)
13
-
14
- ### 困っていること
15
- エラー内容から、SSHの鍵の問題かと思って調査中ですが、
16
- 鍵の部分の知識も不足しており、具体的な原因、解決方法をご教示いただきたいと考えています。
17
- **「鍵は、dockerからホストドライブをマウントして渡すべき」** という記事も見かけたのですが、
18
- この文章の意味がわかっておらず、何も実施できていません。
19
-
20
- ### 現状のCapistrano設定ファイル
21
-
22
- ### Capfile
23
- ```Ruby
24
- require "capistrano/setup"
25
- require "capistrano/deploy"
26
-
27
- require 'capistrano/scm/git'
28
- install_plugin Capistrano::SCM::Git
29
-
30
- # add requires
31
- require 'capistrano/bundler'
32
- require 'capistrano/rbenv'
33
- require 'capistrano/rails/assets'
34
- require 'capistrano/rails/migrations'
35
- require 'capistrano/puma'
36
-
37
- # Load custom tasks from `lib/capistrano/tasks` if you have any defined
38
- Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
39
- ```
40
-
41
- ### config/deploy.rb
42
-
43
- ```Ruby
44
- lock "3.7.0"
45
-
46
- # Capistranoのログの表示に利用する
47
- set :application, "myfavrest-app"
48
-
49
- # どのリポジトリからアプリをpullするかを指定する
50
- set :repo_url, "git@github.com:gcp632dsh/myfavrest-app.git"
51
-
52
- # サーバ上でのソースの配置先
53
- set :deploy_to, "/var/www/apps/myapp"
54
-
55
- # Rubyをrbenv経由で使う
56
- set :rbenv_type, :system
57
- set :rbenv_ruby, File.read('.ruby-version').strip
58
- set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} #{fetch(:rbenv_path)}/bin/rbenv exec"
59
-
60
- # アプリケーションで使用するgemをリリース間で共有
61
- append :linked_dirs, '.bundle'
62
-
63
- # サーバの並列数
64
- set :bundle_jobs, 2
65
-
66
- # リリース間での共有リソース定義
67
- append :linked_files, "config/master.key"
68
- append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets"
69
- ```
70
-
71
- ### config/deploy/production.rb
72
- ```Ruby
73
- # EC2サーバーのIP、EC2サーバーにログインするユーザー名、サーバーのロールを記述
74
- server '(IPアドレス)', user: 'ec2-user', roles: %w{app db web}
75
-
76
- set :ssh_options, {
77
- # capistranoコマンド実行者の秘密鍵
78
- keys: %w(~/.ssh/id_rsa),
79
- forward_agent: true,
80
- auth_methods: %w(publickey)
81
- }
82
- ```
83
-
84
- ### Gemfile(関連部分のみ抜粋)
85
- ```Ruby
86
- ruby '2.6.5'
87
- gem 'rails', '~> 5.2.4'
88
- gem 'mysql2', '>= 0.4.4', '< 0.6.0'
89
- gem 'puma', '~> 3.11'
90
-
91
- group :development do
92
- gem 'capistrano-rails'
93
- gem 'capistrano-bundler'
94
- gem 'capistrano-rbenv'
95
- gem 'capistrano-rbenv-vars'
96
- gem 'capistrano3-puma'
97
- end
98
- ```
99
-
100
- ### docker-compose.yml
101
- ```yml
102
- version: '3'
103
- services:
104
- db:
105
- image: mysql:5.7
106
- command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
107
- environment:
108
- (省略)
109
- volumes:
110
- - db-volume:/var/lib/mysql
111
- ports:
112
- - "3306:3306"
113
- app:
114
- build:
115
- context: .
116
- dockerfile: ./docker/rails/Dockerfile
117
- command: bundle exec pumactl start
118
- tty: true
119
- stdin_open: true
120
- volumes:
121
- - .:/myapp
122
- - public-data:/myapp/public
123
- - tmp-data:/myapp/tmp
124
- - log-data:/myapp/log
125
- - sockets:/myapp/tmp/sockets
126
- privileged: true
127
- depends_on:
128
- - db
129
- web:
130
- build:
131
- context: .
132
- dockerfile: ./docker/nginx/Dockerfile
133
- ports:
134
- - '80:80'
135
- volumes:
136
- - public-data:/myapp/public
137
- - tmp-data:/myapp/tmp
138
- - sockets:/myapp/tmp/sockets
139
- depends_on:
140
- - app
141
- volumes:
142
- db-volume:
143
- public-data:
144
- tmp-data:
145
- log-data:
146
- sockets:
147
- ```
148
-
149
- ### 参考にした情報・試したこと
150
- Capistranoの設定は下記記事を参照しました。
151
- [Capistrano 3によるRails 5.2 + puma + nginxのデプロイをステップバイステップで学ぶ](https://qiita.com/tkykmw/items/a34441aae142e0e41b65)
152
-
153
- また、エラー内容から推測し、鍵の設定の問題かと思い、下記の記事を参照して、
154
- deploy/production.rbの:ssh_optionsの箇所を修正し、再びデプロイ実行しましたがエラー内容は変わらずでした。
155
- [capistranoでデプロイする時のssh-key周りのTips](https://qiita.com/Takkiii/items/c4f2cfd143e97e061e66)
156
- →この記事における、**「これだけだとgithubからソースコードを取ってこれないのでgithubの方にも自分の公開鍵を置く必要がある。さらに自分のssh-keyをssh-agentで使用する場合は以下のコマンドをローカル環境で実行する必要がある。」**という文章は、具体的に何の操作をすればいいのか、全くわからず何も出来ていない状態です。。
157
-
158
- 「どこの何の鍵を、どこに置けばいいのか?」
159
- 「何かの鍵を新しく生成する必要があるのか?」
160
- 等、混乱しており、少しずつ調べているところです。
161
-
162
- SSHクライアント(Rlogin)を通じて、EC2にはSSH接続できており(EIPで固定IP化もしています)
163
- var/www/app/myappというデプロイ用ディレクトリも作成しています。
164
-
165
- ### 環境
166
- Ruby 2.6.5
167
- Rails 5.2.4
168
- puma 3.11
169
- EC2のAMIはAmazon Linux 2 (t2.micro)
170
- ホストOS:Windows10 Home
171
- Virtual Box上にDocker-composeを使ってコンテナを構築しており、そちらは問題なく動いており、アプリにもブラウザでアクセスできます。(Puma(Rails)+Nginx+Mysqlのコンテナがそれぞれ存在)
172
-
173
- 不明点、不足情報等ございましたら、お手数をお掛けし恐縮ですがご教示いただけますと幸いです。
1
+ ### 実現したいこと
2
+ ローカルのDockerコンテナ内に作成したRailsアプリを、AWSのEC2サーバにデプロイしたいです。
3
+
4
+ ### 表示されているエラー
5
+ dockerのRailsコンテナ内で「bundle exec cap production deploy」すると、以下のエラーが出ます。
6
+
7
+ ```
8
+ SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@(IPアドレス): Authentication failed for user ec2-user@(IPアドレス)
9
+ ```
10
+
11
+ エラー全文
12
+ ![エラー内容](a95457eb65bc3b03cbfcbc0195129fa0.png)
13
+
14
+ ### 困っていること
15
+ エラー内容から、SSHの鍵の問題かと思って調査中ですが、
16
+ 鍵の部分の知識も不足しており、具体的な原因、解決方法をご教示いただきたいと考えています。
17
+ **「鍵は、dockerからホストドライブをマウントして渡すべき」** という記事も見かけたのですが、
18
+ この文章の意味がわかっておらず、何も実施できていません。
19
+
20
+ ### 現状のCapistrano設定ファイル
21
+
22
+ ### Capfile
23
+ ```Ruby
24
+ require "capistrano/setup"
25
+ require "capistrano/deploy"
26
+
27
+ require 'capistrano/scm/git'
28
+ install_plugin Capistrano::SCM::Git
29
+
30
+ # add requires
31
+ require 'capistrano/bundler'
32
+ require 'capistrano/rbenv'
33
+ require 'capistrano/rails/assets'
34
+ require 'capistrano/rails/migrations'
35
+ require 'capistrano/puma'
36
+
37
+ # Load custom tasks from `lib/capistrano/tasks` if you have any defined
38
+ Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
39
+ ```
40
+
41
+ ### config/deploy.rb
42
+
43
+ ```Ruby
44
+ lock "3.7.0"
45
+
46
+ # Capistranoのログの表示に利用する
47
+ set :application, "myfavrest-app"
48
+
49
+ # どのリポジトリからアプリをpullするかを指定する
50
+ set :repo_url, "git@github.com:(リポジトリ名)/(アプリ名).git"
51
+
52
+ # サーバ上でのソースの配置先
53
+ set :deploy_to, "/var/www/apps/myapp"
54
+
55
+ # Rubyをrbenv経由で使う
56
+ set :rbenv_type, :system
57
+ set :rbenv_ruby, File.read('.ruby-version').strip
58
+ set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} #{fetch(:rbenv_path)}/bin/rbenv exec"
59
+
60
+ # アプリケーションで使用するgemをリリース間で共有
61
+ append :linked_dirs, '.bundle'
62
+
63
+ # サーバの並列数
64
+ set :bundle_jobs, 2
65
+
66
+ # リリース間での共有リソース定義
67
+ append :linked_files, "config/master.key"
68
+ append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets"
69
+ ```
70
+
71
+ ### config/deploy/production.rb
72
+ ```Ruby
73
+ # EC2サーバーのIP、EC2サーバーにログインするユーザー名、サーバーのロールを記述
74
+ server '(IPアドレス)', user: 'ec2-user', roles: %w{app db web}
75
+
76
+ set :ssh_options, {
77
+ # capistranoコマンド実行者の秘密鍵
78
+ keys: %w(~/.ssh/id_rsa),
79
+ forward_agent: true,
80
+ auth_methods: %w(publickey)
81
+ }
82
+ ```
83
+
84
+ ### Gemfile(関連部分のみ抜粋)
85
+ ```Ruby
86
+ ruby '2.6.5'
87
+ gem 'rails', '~> 5.2.4'
88
+ gem 'mysql2', '>= 0.4.4', '< 0.6.0'
89
+ gem 'puma', '~> 3.11'
90
+
91
+ group :development do
92
+ gem 'capistrano-rails'
93
+ gem 'capistrano-bundler'
94
+ gem 'capistrano-rbenv'
95
+ gem 'capistrano-rbenv-vars'
96
+ gem 'capistrano3-puma'
97
+ end
98
+ ```
99
+
100
+ ### docker-compose.yml
101
+ ```yml
102
+ version: '3'
103
+ services:
104
+ db:
105
+ image: mysql:5.7
106
+ command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
107
+ environment:
108
+ (省略)
109
+ volumes:
110
+ - db-volume:/var/lib/mysql
111
+ ports:
112
+ - "3306:3306"
113
+ app:
114
+ build:
115
+ context: .
116
+ dockerfile: ./docker/rails/Dockerfile
117
+ command: bundle exec pumactl start
118
+ tty: true
119
+ stdin_open: true
120
+ volumes:
121
+ - .:/myapp
122
+ - public-data:/myapp/public
123
+ - tmp-data:/myapp/tmp
124
+ - log-data:/myapp/log
125
+ - sockets:/myapp/tmp/sockets
126
+ privileged: true
127
+ depends_on:
128
+ - db
129
+ web:
130
+ build:
131
+ context: .
132
+ dockerfile: ./docker/nginx/Dockerfile
133
+ ports:
134
+ - '80:80'
135
+ volumes:
136
+ - public-data:/myapp/public
137
+ - tmp-data:/myapp/tmp
138
+ - sockets:/myapp/tmp/sockets
139
+ depends_on:
140
+ - app
141
+ volumes:
142
+ db-volume:
143
+ public-data:
144
+ tmp-data:
145
+ log-data:
146
+ sockets:
147
+ ```
148
+
149
+ ### 参考にした情報・試したこと
150
+ Capistranoの設定は下記記事を参照しました。
151
+ [Capistrano 3によるRails 5.2 + puma + nginxのデプロイをステップバイステップで学ぶ](https://qiita.com/tkykmw/items/a34441aae142e0e41b65)
152
+
153
+ また、エラー内容から推測し、鍵の設定の問題かと思い、下記の記事を参照して、
154
+ deploy/production.rbの:ssh_optionsの箇所を修正し、再びデプロイ実行しましたがエラー内容は変わらずでした。
155
+ [capistranoでデプロイする時のssh-key周りのTips](https://qiita.com/Takkiii/items/c4f2cfd143e97e061e66)
156
+ →この記事における、**「これだけだとgithubからソースコードを取ってこれないのでgithubの方にも自分の公開鍵を置く必要がある。さらに自分のssh-keyをssh-agentで使用する場合は以下のコマンドをローカル環境で実行する必要がある。」**という文章は、具体的に何の操作をすればいいのか、全くわからず何も出来ていない状態です。。
157
+
158
+ 「どこの何の鍵を、どこに置けばいいのか?」
159
+ 「何かの鍵を新しく生成する必要があるのか?」
160
+ 等、混乱しており、少しずつ調べているところです。
161
+
162
+ SSHクライアント(Rlogin)を通じて、EC2にはSSH接続できており(EIPで固定IP化もしています)
163
+ var/www/app/myappというデプロイ用ディレクトリも作成しています。
164
+
165
+ ### 環境
166
+ Ruby 2.6.5
167
+ Rails 5.2.4
168
+ puma 3.11
169
+ EC2のAMIはAmazon Linux 2 (t2.micro)
170
+ ホストOS:Windows10 Home
171
+ Virtual Box上にDocker-composeを使ってコンテナを構築しており、そちらは問題なく動いており、アプリにもブラウザでアクセスできます。(Puma(Rails)+Nginx+Mysqlのコンテナがそれぞれ存在)
172
+
173
+ 不明点、不足情報等ございましたら、お手数をお掛けし恐縮ですがご教示いただけますと幸いです。
174
174
  継続して鍵のことについて勉強・調査中ですが、皆さんのお力添え頂きたく、宜しくお願い致します。

5

エラー解決調査において得た情報について補足しました

2020/07/19 06:15

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  ### 困っていること
15
15
  エラー内容から、SSHの鍵の問題かと思って調査中ですが、
16
16
  鍵の部分の知識も不足しており、具体的な原因、解決方法をご教示いただきたいと考えています。
17
- **「dockerからホストドライブをマウントして渡すべき」** という記事も見かけたのですが、
17
+ **「鍵は、dockerからホストドライブをマウントして渡すべき」** という記事も見かけたのですが、
18
18
  この文章の意味がわかっておらず、何も実施できていません。
19
19
 
20
20
  ### 現状のCapistrano設定ファイル

4

実現したいことを具体的に記載しました。

2020/07/19 06:15

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -14,6 +14,8 @@
14
14
  ### 困っていること
15
15
  エラー内容から、SSHの鍵の問題かと思って調査中ですが、
16
16
  鍵の部分の知識も不足しており、具体的な原因、解決方法をご教示いただきたいと考えています。
17
+ **「dockerからホストドライブをマウントして渡すべき」** という記事も見かけたのですが、
18
+ この文章の意味がわかっておらず、何も実施できていません。
17
19
 
18
20
  ### 現状のCapistrano設定ファイル
19
21
 

3

題名を変更しました

2020/07/19 06:12

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
@@ -1,1 +1,1 @@
1
- RailsCapistranoを用いてEC2へのデプロイを実施時、SSHの認証エラーが出てデプロイできない
1
+ RailsコンテナからCapistranoを用いてEC2へのデプロイを実施時、SSHの認証エラーが出てデプロイできない
body CHANGED
File without changes

2

実現したいことを具体的に記載しました。

2020/07/18 13:33

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,8 @@
7
7
  ```
8
8
  SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@(IPアドレス): Authentication failed for user ec2-user@(IPアドレス)
9
9
  ```
10
+
10
- 全文
11
+ エラー全文
11
12
  ![エラー内容](a95457eb65bc3b03cbfcbc0195129fa0.png)
12
13
 
13
14
  ### 困っていること

1

実現したいことを具体的に記載しました。

2020/07/18 11:21

投稿

otdsh9432
otdsh9432

スコア55

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
  SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@(IPアドレス): Authentication failed for user ec2-user@(IPアドレス)
9
9
  ```
10
10
  全文
11
- ![エラー](362408459ba38685757348ffbfe4bff5.png)
11
+ ![エラー内容](a95457eb65bc3b03cbfcbc0195129fa0.png)
12
12
 
13
13
  ### 困っていること
14
14
  エラー内容から、SSHの鍵の問題かと思って調査中ですが、