ポートフォリオをやっと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でのデプロイは中々大変でしたが、とりあえず完走できて良かったです。
良い経験になりました。
人は失敗して学ぶものなので、今回の数々の失敗も学びに変えて次に活かしていきます。
ではでは。