0
0

半年ぶりにAWS&Pythonのハンズオンやってみた。

Last updated at Posted at 2024-02-19

内容
・趣旨目標
・使えるサービス
・参考サイト
・環境・EC2の作成、キーペアの作成
・SSH接続
・VSCodeから接続、ファイルなどの作成

趣旨目標

AWSを活用して簡単なWebアプリ(Hello World)をSSH通信でデプロイして、手を動かして学ぶ。

使えるサービス

EC2,Python,VSCode,Ubuntu

参考サイト:

環境

Windows11,Python,VSCode(これらはセットアップ済みとして進めます。)

EC2の作成、キーペアの作成

Ubuntuを選んでキーペア作成
image.png
image.png

ここでキーペア作成、widowsなのでCドライブのユーザー直下の「ssh」に格納
image.png
image.png
image.png
HTTP,HTTPS,SSHでインバウンド許可
image.png

SSH接続

赤枠をコピー。
image.png

・powershellで接続
先程のSSHのアドレスを貼り付ける。以下デフォルトの状態
image.png

次の形式に修正

ssh -i "ここにキーファイルのパスを入れる" ubuntu@ec2-34-238-44-107.compute-1.amazonaws.com

修正済み(接続完了)
image.png
※恐らくEC2からコピーしたデフォルトのパスでもいけますね。試してませんが(;'∀')

メモ:ここでSSHタイムアウトが怖いので、一度ログアウト方法を記載

exit

・Pythonのバージョン確認して、デフォルトのバージョンを確認

python -v

image.png
デフォルトになっていないので、画像のとおりコマンドを打ってください。と記載されています。
そもそもPython3がインストールされているか確認

python3 --version

入っているので、以下のコマンドでデフォルトのPythonをPython3にする。

sudo apt install python-is-python3

これのインストールが走って、再び以下のコマンド実行

python -v

たっくさん設定が表示され、デフォルトで設定されたことが分かる。
対話モードを抜ける「Ctrl+D」

続いて、Pythonがサーバー上で動作するか確認
空ファイル作成

 touch script.py

編集していく(vi)。
編集画面で例:print('こんにちわっす')と入力して保存で閉じる。

 vi script.py

Pythonを実行

python script.py

image.png

VSCodeから接続、ファイルなどの作成

拡張機能を入れて、EC2にあったキー(powershellにも入力した文字)を再び入力して接続する。
image.png
接続完了
image.png

コードを編集して、サーバーに繋がったターミナルから確認できるか
image.png
できています。

・パッケージを最新へ

sudo apt update

pipをインストール

sudo apt install python3-pip

はじめて見たぞこれ(p_-)華麗に「キャンセル」を選択。
image.png

・Flaskをインストール

sudo pip install flask

「flaskr」というフォルダを作成し、「templates」というフォルダ作成。
「templates」に新たなファイル「index.html」を作成。
動画で紹介されるHTMLコード(自己流に編集しましょう。)

<!DOCTYPE html>
<html lange="ja">
<head>
    <meta charset="UTF-8">
    <title>EC2にHPデプロイ!</title>
</head>
<body>
<h1>けいじのホームページ</h1>
    <span>VScode使ってSSH接続でEC2上にWebサイト構築したもの。</span>
</body>

次に「flaskr」直下に「main.py」を作成
htmlデータが表示されるアプリを作ります。

from flaskr import app
from flask import render_template

@app.route('/')
def index():
    return render_template(
        'index.html',
    )

次に「flaskr」の中に、「init.py」ファイルを作成する。
今こんな感じ
image.png
__init__py

from flask import Flask
app = Flask(__name__)
import flaskr.main

アプリに通ずるPythonのフォルダだよーと認識させる。これで繋がることができる。
考えてみたら、サーバーサーバーと言うけど、実際はPCだし、アプリはフォルダに入ったデータでしかない(p_-)なので、このフォルダはPython用でアプリに繋がっている大事なフォルダだよーと認識させないといけない。つまりinitファイルが大事(´▽`)

Pythonを実行

sudo flask --app flaskr run --port 80 --host 0.0.0.0

image.png
ローカルに無事デプロイできました。
image.png

改めてハンズオンを行った結果、半年前の理解度とエラー対処の行動が少し変わった気がします。経験だけを頼って仕事することは危険ですが、困ったときの対応方法に経験が活かされる気がします。精進いたします。

0
0
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
0
0