0
2

More than 3 years have passed since last update.

GCE上でFlask+uWSGI+Nginxの簡易webアプリ:メモ

Last updated at Posted at 2021-04-17

今回は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アプリ。

app.py
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に任せるというような指示

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

ファイルの内容

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