今回はGCE上でflaskを動かしてみることを試したので、その手順をメモに残す。
GCEでVMインスタンス作成
GCEにログインしてComputeEngineでVMインスタンスを作成を選択。
イメージはubuntu18.04を使用。
ファイアウォールでHTTP トラフィックを許可する、HTTPS トラフィックを許可するに設定。
作成後、VPCネットワーク、外部IPアドレスから固定のIPアドレスを予約する。
これで事前の準備は完了!
Flaskのインストール
まず、Flaskインストールのために必要なpythonとpipをインストールし、その後にflaskをインストール。
$ apt update #パッケージリストの更新
$ apt upgrade #インストールされてるパッケージの更新
$ apt install python3 #python3のインストール
$ apt install python3-pip #pipのインストール
$ pip3 install flask #flaskのインストール
簡易なFlaskアプリの準備
今回はhomeフォルダの下にflaskというフォルダを作成し、その下にapp.pyを作った。
$ cd /home
$ sudo touch flask
$ cd /home/flask
hello worldと表示するだけの簡易なwebアプリ。
from flask import Flask
app = Flask(__name__)
@app.route("/") #このpathにアクセスがきたときに実行する処理
def index():
return "hello world"
if __name__ == "__main__":
app.run(host="0.0.0.0",port=80)
flaskだけの簡易なサーバーを実行
$ sudo python3 app.py
「http://xxxxx:80」
(xxxはGCEで設定したIPアドレス)で「hello world」と表示されていることを確認
Nginx・uWSGIインストール
$ apt install nginx #nginxのインストール
$ pip3 install uwsgi #uwsgiのインストール
その他、必要なパッケージをインストール
$ sudo apt-get install uwsgi-plugin-python
$ sudo apt install uwsgi-plugin-python
$ sudo apt-get install libpcre3 libpcre3-dev
Nginxの設定
/etc/nginx/下に設定を作成する
ubuntuだとsites-available下にファイルをおき、sites-enabledにそのショートカットを作っておく
$ cd /etc/nginx/sites-available #移動
$ sudo touch uwsgi #名前は自由
$ sudo vi uwsgi
設定ファイルの中身
nginxにきたアクセスはuwsgiに任せるというような指示
server {
listen 80;
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
}
#ショートカットの作成
$ ln -s /etc/nginx/sites-available/uwsgi /etc/nginx/sites-enabled/uwsgi
#defaultの削除
$ cd /etc/nginx/sites-enabled
$ rm default
あとはnginxを再起動して問題がないか確認をする
$ sudo systemctl restart nginx.service #nginx再起動
$ sudo nginx -t #nginx自体に問題ないか確認
uWSGIの設定
最後にuWSGIの設定を行う。
uwsgiの設定 uwsgi自体はパラメータをまとめてかいた設定ファイルを用意しておき、以下を実行して起動することができる
uwsgi (設定ファイル読み込み)
設定ファイルはflaskのプロジェクトフォルダに作る(今回の場合だと/home/flask/)
$ cd /home/flask #移動
$ sudo touch flaskapp.ini #ファイルの名前自由
$ sudo vi flaskapp.ini
ファイルの内容
[uwsgi]
plugins = python3
module = app
callable = app
master = true
processes = 1
socket = /tmp/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true
uWSGIの起動
sshでの接続が切れても、serverを立ち上げたままにするためにnohupというコマンドを使用する
$ cd /var/log
$ touch uwsgi.log
$ nohup uwsgi --ini flaskapp.ini --logto /var/log/uwsgi.log &