##ローカルファイルを変更したら必ずadd commit pushしてmasterにデプロイをすること。
この作業を忘れていた。
##aws_access_lkey、aws_secret_keyがないと言われる。
###原因
ローカルとEC2にあげているアプリの下記の部分をみてawsキーが書いてあるかどうか、間違ってないかみる。
- carrier_wave.rb
- .env
- credentialsファイル(アプリディレクトリでEDITOR="vim" bin/rails credentials:editで見れるやつ)
ローカルとサーバー側のファイル3つずつ、合計6つの設定をローカルに合わせる。
##yarnがないと言われる。
EC2内にyarnをインストールする。
$ yum -y install wget
$ wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
$ curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
$ yum install yarn
$ yarn --version
##webpackerがないと言われる。
###原因
EC2内のnodeのバージョンが低い。
エラー内容
error @rails/webpacker@5.0.1: The engine "node" is incompatible with this module. Expected version ">=10.13.0". Got "6.17.1"
error Found incompatible module.
1: from /Users/shogo/environment/Portfolio/vendor/bundle/ruby/2.6.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/Users/shogo/environment/Portfolio/vendor/bundle/ruby/2.6.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as shogo@13.115.179.212: rake exit status: 1 (SSHKit::runner::ExecuteError)
rake stdout: yarn install v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Compiling…
Compilation failed:
error Command "webpack" not found.
EC2内に入り、node -vをすると下記が表示された。
[shogo@ip-10-0-0-193 ~]$ node -v
v6.17.1
エラーでは10.13.0以上にしろとのこと。
下記の通りにして最新版をインストールしました。
$ sudo npm install n -g
$ sudo n stable
$exit
$もう一度入り直す
$node -v
v12.16.3
下記記事の通り。
https://loumo.jp/archives/24419
##config/database.ymlがないと言われる。
Caused by:
Could not load database configuration. No such file - ["config/database.yml"]
/var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/railties-6.0.0/lib/rails/application/configuration.rb:240:in `database_configuration'
/var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/railtie.rb:39:in `block (3 levels) in <class:Railtie>'
/var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'
/home/shogo/.rbenv/versions/2.6.3/bin/bundle:23:in `load'
/home/shogo/.rbenv/versions/2.6.3/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate => db:load_config
###原因
ローカル、ec2の.gitignoreにdaetabase.ymlを隠す設定をしている。
.gitignoreのdatabase.ymlを隠している部分をコメントアウトし、pushしてデプロイしたら先に進んだ。
##Postgresqlの設定周りのエラー。
エラー文は後から思い出して書き足します。
###原因
本番環境にPostgreSQLを使っている場合はdeploy.rbに下記を追加する必要がある。
~省略~
set :pg_without_sudo, false
set :pg_host, 'localhost'
set :pg_database, 'portfolio'
set :pg_username, 'postgres'
set :pg_ask_for_password, true
set :port, 22
~省略~
##エラー01 PG::ConnectionBad: could not translate host name "ENV['DATABASE_HOST']" to address: Name or service not knownなどの環境変数周りのエラー
00:52 deploy:migrating
01 $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate
01 /var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/bootstrap-4.4.1/lib/bootstrap/version.rb:4: warning: already initialized constant Bootstrap::VERSION
01 /var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:2: warning: previous definition of VERSION was here
01 /var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/bootstrap-4.4.1/lib/bootstrap/version.rb:5: warning: already initialized constant Bootstrap::BOOTSTRAP_SHA
01 /var/www/rails/Portfolio/shared/bundle/ruby/2.6.0/gems/bootstrap-sass-3.4.1/lib/bootstrap-sass/version.rb:3: warning: previous definition of BOOTSTRAP_SHA was here
01 rake aborted!
01 PG::ConnectionBad: could not translate host name "ENV['DATABASE_HOST']" to address: Name or service not known
###原因
capistranoの環境変数が読み込めないことが原因。私の場合参照ファイルがec2内のアプリ/shared/config/database.ymlにあり、ここの設定が影響していた。とりあえず下手打ちで入れたところ動き、後で環境変数に格納する。
これとか、「capistrano 環境変数」でググると見つかる。
https://tech.dely.jp/entry/2019/12/16/070000
##ローカルアプリのGemfile内にもgem unicornを書いてbundle installする必要がある。
###ローカルのGemfileにgem unicornがない。
Gemfileに下記を書いてbundle installする。
group :production, :staging do
gem 'unicorn'
end
bootstrapがGemfile.lockによってバージョンが固定されてるからあげてくれのエラー。
###原因
ローカルファイルのgem 'bootstrap' の後ろにbootstrapのURLを記載していたのが原因。
したがってローカルのGemfile.lockと後ろについていたURLを消してbundle installで解決した。
##デプロイした後に We're sorry, but something went wrongと表示される.
###原因
不明。とりあえず下記を試して成功しました。
下記項目を1つずつ試して本環境のURLをリロードしましょう。
下記を試す。
・ec2の再起動し、もう一度デプロイ。
・ec2とgithubを繋ぐssh-keygenが正しく設定されているか確認。
・ec2に入り各種ログを確認。
・ec2に入り本番環境を起動させるコマンドを一通りうつ。
【Rails】前までEC2の本番環境が動いていたのにcapistranoでの自動デプロイを実装した後に改めて本番環境で動かすと111: Connection refusedになる際の対処法↓
https://qiita.com/shota0701nemoto/items/bbe406cfa3dc924c90d2
##他、capistranoのエラーで参考にした記事
https://qiita.com/QgqKZmHUkJv26pG/items/6f1bf5ec3e1a7c7f3b9d
https://qiita.com/yuki_uchida/items/c559862fba6f39bd6e73