今回はEC2にRDSから情報を取得し、FlaskでWebアプリとして表示させることをやっていきます。
事前知識
・EC2でサーバを立ち上げてクラウドシェルで接続(https://smizunolab.blogspot.com/2023/10/ec2.html)
・Pythonでデータベースに情報を格納する(https://smizunolab.blogspot.com/2024/07/python.html)
・EC2でjupter-notebookをインストールする(https://smizunolab.blogspot.com/2023/11/ec2jupter-notebook.html)
1. EC2を立ち上げ、Flaskをインストールする
上記の「EC2でサーバを立ち上げてクラウドシェルで接続」の方法でEC2にサーバを立ち上げます。また「EC2でjupter-notebookをインストールする」にあるpipのインストールを実施しといてください。
$ sudo yum install python3-pip
今回はec2-userでFlaskをインストールしていきます。
(1) Flaskのインストール
$ pip install Flask mysql-connector-python
$ mkdir my_flask_app
$ cd my_flask_app
$ touch app.py
$ mkdir templates
$ touch templates/index.html
(3) app.pyの作成:
from flask import Flask, render_template | |
import mysql.connector | |
app = Flask(__name__) | |
def get_db_connection(): | |
conn = mysql.connector.connect( | |
host="localhost", | |
user="root", | |
passwd="LinuxOS99@", | |
database="nasa" | |
) | |
return conn | |
@app.route('/') | |
def index(): | |
conn = get_db_connection() | |
cursor = conn.cursor(dictionary=True) | |
cursor.execute("SELECT * FROM apod") | |
apod_data = cursor.fetchall() | |
cursor.close() | |
conn.close() | |
return render_template('index.html', apod_data=apod_data) | |
if __name__ == '__main__': | |
app.run(debug=True, host='0.0.0.0') |
ホストやパスワードは自分の環境に揃える
(4) index.htmlの作成:
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>APOD</title> | |
</head> | |
<body> | |
<h1>Astronomy Picture of the Day</h1> | |
{% for apod in apod_data %} | |
<div> | |
<h2>{{ apod.title }}</h2> | |
<img src="{{ apod.url }}" alt="{{ apod.title }}"> | |
<p>{{ apod.explanation }}</p> | |
</div> | |
{% endfor %} | |
</body> | |
</html> |
templates/index.html にコードを書き込みます。
(5) セキュリティグループの追加 : インバウンドルールに5000を追加(Flaskのデフォルトポートが5000)
(6) app.pyの実行 : python3 app.py
0 件のコメント:
コメントを投稿