LoginSignup
9
17

More than 3 years have passed since last update.

【AWS】Rails+MySQL+DockerアプリをEC2にデプロイする

Posted at

ポートフォリオをやっとAWSにデプロイできたんですが、
地獄のような日々だったのでその孤軍奮闘を記します。

前提

  • Rails+MySQL+Dockerアプリがある
  • Githubにpushされている
  • AWS登録済

参考サイト

主にこちらのサイトに沿って作業を行いました。
DockerコンテナをEC2で起動と公開

インスタンスの設定などはこちらも参考にさせていただきました。
無料!かつ最短?で Ruby on Rails on Docker on AWS のアプリを公開するぞ。

ぶっちゃけこの2サイトを参考にしていただければ特に問題なくコンテナは立つと思うのですが、
それ以前にも他のいろんなサイトを参考にしすぎて環境がかなりぐちゃぐちゃになっており、
中々デプロイできなかったです。

あんまりググりすぎるのもよくないですね。
似た様な状況の人は以上2つのサイトを参考にしてください。

特に躓いたところ

ここからは特に時間がかかってしまったところについて記述いたします。

インスタンスに接続できない

最初の躓きはインスタンスに接続できなくて一生ec2に入れなかったことです。

原因

考えられる原因は以下です。

  • コマンド走らせる場所が違う
  • awsで作ったpemファイルが正しい位置に設定されていない

解決方法

コマンドを走らせる場所なんですが、ちゃんと.sshに移動しないと接続してくれません。

cd ~/.ssh

サーバー側の知識が乏しいのでいきなりコマンド走らせてしまっていたんですが、接続なのでちゃんと.sshに移動しないといけなかったんですね。

次に確認しておきたいのがpemファイルの場所です。
.sshに移動したらそこにちゃんとawsで作成したpemファイルがあるか確認しましょう。

soehina@soehinaMacBook-Air .ssh % ls
known_hosts                awsdep.pem

このpemファイルはインスタンスを作成するときに一緒に作ったキーペアのファイルです。
作成時にダウンロードしてるはずですが、ちゃんと.sshにファイルを移動しときましょう。

git clone ができない

githubにpushしてあるアプリをクローンしようと思ってもクローンできなくて地獄でした。

原因

  • .sshのknown_hostsに余計なものが書かれてる。

解決方法

known_hostsにgithub以外のssh情報があったら消しときましょう。
余計な書き込みがあるとすぐエラーになるみたいです。

bundle install ができない

こちらはrailsアプリ作成時点で注意しとかないといけないことなんですが、bundle installするときにGemfileとGemfile.lockとの情報が噛み合ってなかったことでエラーが起きました。

gemの追加・削除が正しく行えてるかちゃんと確認しときましょう。

これのせいでdocker-composeもできなくてしんどかったです。

学んだこと・得たもの

今回このAWSエラー地獄で学んだことは以下です。

  • ssh
  • Linuxコマンドの操作にそこそこ慣れた
  • インフラが苦手
  • 安易にコマンドを打つな

ssh・インフラが苦手

sshとかインフラとかは正直理解がかなり乏しかったので、今回のことで概要が学べて良かったかなと思います。
しかし、同時に私はインフラが苦手なこともわかりました。

コードを書いて悩むのは結構楽しいのですが、今回の様な接続がどうのこうのみたいな悩みは正直「死ぬんちゃうんか???」と思うくらい中々にキツかったです。

なぜ苦手に思うのか考えてみたのですが、おそらく論理構造を考える過程があまり無いからではないかと思いました。

コードを書いてる時は、パズルみたいに組み立て方を模索するのが楽しいのですが、インフラ構築はパースというより既に完成されてる装置を正しく組み立てないといけないイメージなので、考える幅があまり広がらない印象を持ちました。

安易にコマンドを打つな

これは今回の経験で本当に心から思ったことです。
あまりにもわからなすぎてかなり投げやりになって色んな記事みながらコマンド打ちまくってたのですが、それがさらに混乱を極めてしまいました。

今度からは本当に気をつけたいと思います。

Linuxコマンドの操作にそこそこ慣れた

Linuxコマンドの操作は現在勉強中なのですが、今回のAWSエラー地獄のおかげでコマンド操作をすることが一気に増えてそこそこ慣れました。

特にviコマンドは使いまくりましたね。

この点については手を動かしながら身に付けられて良かったです。

まとめ

AWSでのデプロイは中々大変でしたが、とりあえず完走できて良かったです。
良い経験になりました。

人は失敗して学ぶものなので、今回の数々の失敗も学びに変えて次に活かしていきます。

ではでは。

9
17
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
9
17