おはようございます。座禅いぬです。
いつも表題の仕組みを使っているのですが、見事に構築の仕方を忘れました。頻繁にサーバーなんて立てないよね...特に非エンジニアは。そこで忘備録というかせっかくなので、自分のような非エンジニアがチャレンジするときの助けになったらうれしいので、手順をなるべく詳細にまとめなおすことにしました。
とりあえずEC2立ち上げよう
-
「名前とタグ」で適当な名前をアルファベットでつける(例:zazeninu-is-not-a-dog)
-
「インスタンスタイプ」を選ぶ。とりあえずt2.microにしとこう
-
「キーペア(ログイン)」
新しいキーペアの作成→キーペア名(アルファベット)、RSA、.pemでキーペアを作成する
→pemファイルがダウンロードされる。これ絶対無くしちゃダメ。 -
「ネットワーク設定」では、「セキュリティグループを作成」、「からのSSHトラフィックを許可」を「自分のIP」、「インターネットからのHTTPトラフィックを許可」にチェックを入れる。
-
とりあえずこれで右側の「インスタンスを起動」を押そう
起動したらインスタンスに接続、で「SSHクライアント」を選ぶ。下の方にssh-i なんちゃらというのがあるので、これをコピペしておく
SSH接続する
gitbashが便利
僕はssh接続にはGitBash使っています。Windows上でLinuxコマンドがちょっと使えるという感じのツール。
参考資料→WindowsでGitBashを使って快適なBashライフを送る
接続してみよう
ssh -i (さっき落としたpemファイルを絶対パスで指定) ec2-user@(IPv4アドレス)
これをかますと、初回だけ
The authenticity of host'(IPV4アドレス) can't be established.なんちゃらとでるので、yesと打ってエンターを押す。すると
なんか鳥が出てきます。これでOK.
timezone設定しよう
最初は時間帯が世界標準的な何かで、日本時間じゃないので色々後でイラつくことになります。そこで、日本時間にサーバーをセッティングする必要があります。
ここを参考にするとすぐできます。
インストール
まずはyumをアップデートしてpipをインストールします。
sudo yum update
sudo yum install python3-pip
sudo pip install flask
これでOK.
あとはflaskでアプリを書いて、scpでアップロードします。フォルダごと送る時は-rを指定します。
scp -i (さっき落としたpemファイルを絶対パスで指定)-r (flaskアプリを書いたフォルダを絶対パスで指定) ec2-user@(IPv4アドレス):/home/ec2-user/
これで送りこまれるので、
sudo flask --app (実行ファイル名).py run --port 80 --host 0.0.0.0
これでサーバーが起動します。
ただし、あくまでこれはテストサーバーなので、実際にはwaitressとか入れるといい感じです。
まとめ
思い出してみたら簡単でした。
テストサーバーまでは簡単なのですが、他にもいろいろやろうと思ったらnginx入れたりDBサーバ立てたりセキュリティ色々いじったりは必要です。でもこの作業たまにやると色々思い出していいなと思いました。
そのうちCloudFormationでどうやるかとか、AMIイメージつかってみるとか、TerraForm使うとかもまとめてみたい。
参考資料
YouTube
-
AWS EC2入門 #01: AWSを始めよう
昔はじめてAWS触ったときはこの動画を参考にやりました。とてもわかりやすくて本当にありがたかった... -
【AWS EC2入門】クラウド上にサーバを構築!SSH接続してFlaskのWebアプリをデプロイしてみよう!〜初心者向け〜
本も買いましたサプーさん。説明がとても丁寧。
オンライン学習
-
paiza
python、flask、SQLあたりはだいたいここで覚えました。ブラウザ上でほぼ完結するからわかりやすかったです。