5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

capistrano・EC2・postgresql・rails6で自動デプロイ設定した際のエラー例

Last updated at Posted at 2020-05-09

##ローカルファイルを変更したら必ず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

下記記事の通り。
https://twin-t.com/rails%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92aws%E3%81%B8%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC2/

##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に下記を追加する必要がある。

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

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?