LoginSignup
10
8

More than 5 years have passed since last update.

素人がRailsで作ったアプリをAWSでデプロイするまでに出会ったエラーとその対処法

Last updated at Posted at 2018-12-28

はじめに

素人の僕が初めてデプロイした時に出会ったエラー集とその対応例です。
かなり小さなエラーまで書いたので読むべき対象者は限られてくると思います。

対象者

  • railsでアプリを作ったが、AWSでデプロイしてみたい。
  • だけど、プログラミング初心者でコマンドやインターネットの通信に関する知識のインプットまで手が回っていない。
  • 上記をみたすプログラミング初学者。

開発までにたどっていた道

progateでRails→Railsのtutorialの1章を読みながらherokuへデプロイ→herokuのリージョンが海外らしく、アクセスに時間がかかって嫌だったのでAWSのEC2東京リージョンにサーバーを立てようと思いたつ
そして…
世界一丁寧なAWS解説シリーズ
ここを見ながら進めて行った。
以下エラー集。

1-1.EC2へログインできない!

上記の解説シリーズのデプロイ編①をやっていた時でした。
これまでは家でやっていたんですが、続きを大学の図書館でやっていました。
すると、今まで

[~]$ ssh (アプリの秘密鍵)

でログインできていたのに一向にログインできなくなりました。

1-2.原因と解決策

IPアドレスって繋げるWiFiによって変わるんですね…。
本物の初心者だったのでこれだけで数日悩んでしまった。
以下のサイトで自分のIPアドレスがわかります。今までのIPアドレスと比べてみてください。
https://www.myip.com/

もし違っていたら、EC2のセキュリティグループの設定をいじります。
「ルールの追加」を押し、
タイプ:SSH
ソース:マイIP →これを選択すれば自動で自分のIPアドレスを設定してくれます。
そして保存。これでログインできるようになったはず(たぶん)。

2-1.unicornの起動ができない!

これの解決には結構時間かかりました。
複数の原因が関係していたからです。なかなか解決できず心が折れて1ヶ月放置してました。

2-2.原因と解決策

⒈unicornの設定ファイルを確認
参考する記事によってはunicornの設定ファイルがunicorn.conf.rbだったりunicorn.rbだったりするので、起動コマンドを打ち込む際に自分の設定ファイル名を確認してみてください。

⒉ログを確認してみよう
当時の僕はログを確認できることすら知りませんでした…
アプリのlogフォルダにあるunicorn.logを確認してみてください。catコマンドで確認できます。
僕の場合は2つのエラーがあるみたいでした。

⑴データベースがない
そのまんまです。作成してマイグレートしましょう。

rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production

上記コマンドですが、たまに先頭にbundle execをつけないと効かない時がありました。

⑵secret_key_base

bundler: failed to load command: unicorn_rails (/var/www/rails/(アプリの名前)/vendor/bundle/ruby/2.4.0/bin/unicorn_rails)
ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit`

上記のエラーもありました。
調べてみると、configフォルダにあるmaster.keyはGitのクローンの際についてこないらしい。
なのでローカルのmaster.keyの中身をEC2のmaster.keyへコピペしてみるとこの問題は解決した。
参考にした記事:https://qiita.com/scivola/items/cc06ddbfd94d3118f693
(そもそも世界一丁寧なAWS解説シリーズのデプロイ編①の「アプリのsecret_key_baseの設定」でその辺ちゃんと書かれてた…)

3-1.mySQLに入れない!

これは2つ目のアプリをデプロイした時に出会ったエラー。
相変わらずunicorn起動の時にうまくいっていないようだったのでログを確認するとこんなエラーがあった。

Access denied for user 'root'@'localhost' (using password: NO) (Mysql2::Error::ConnectionError)
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (Mysql2::Error::ConnectionError)

mySQL関連でのエラーらしい。

3-2.原因と解決策

このエラーをコピペして検索してみると多くの記事があった。どうやら権限がないらしい。
多くの記事で、

mysql_safe --skip-grant-tables &

このコマンドを使ってオプション付きで起動しなさいとあったが、この起動すらできなかったのでかなり困った。
有効な解決策に出会うまでは結構骨が折れた。
以下の記事が僕にとっては有効だったので同じ境遇の方はぜひ試してみてほしい
https://qiita.com/RyochanUedasan/items/9a49309019475536d22a

おわりに

僕もまだまだ素人なので手に負えないエラーにぶつかるたびにやる気が落ち込んでしまう。
でもやっぱり自分で何かを作るのは楽しい。
このエラー集が僕と同じ初学者の役に立てれば幸いだ。
エラーに負けず一緒に頑張って行きましょう。

10
8
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
10
8