質問編集履歴
6
githubリポジトリ名を隠す
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
|
-

|
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:
|
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
|
+

|
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
エラー解決調査において得た情報について補足しました
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
実現したいことを具体的に記載しました。
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
題名を変更しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
RailsコンテナからCapistranoを用いてEC2へのデプロイを実施時、SSHの認証エラーが出てデプロイできない
|
body
CHANGED
File without changes
|
2
実現したいことを具体的に記載しました。
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
|

|
12
13
|
|
13
14
|
### 困っていること
|
1
実現したいことを具体的に記載しました。
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
|
-

|
12
12
|
|
13
13
|
### 困っていること
|
14
14
|
エラー内容から、SSHの鍵の問題かと思って調査中ですが、
|