想ひ出17: GCP/Flask1.0/Nginx/GCEにデプロイする
おはようございます、moqrinです。
前回、FlaskのチュートリアルのCRUDシステムを構築しました。
そいつをGCPのGCE(CentOS7)にデプロイしてみよう、
その際、uWSGIとNginxを利用してみよう、というお話になります。
なお、かなり原始的な対応をしておりますのでご了承下さいませ。。
ちなみに、CloudSQLへの接続は次回になっております。
やること
1. Python3の環境を設定する
2. プロジェクトをGitクローンしてvirtualenv環境にする
3. FlaskとuWSGIをインストールしてセットアップする
1. Python3の環境を設定する
とりあえず、まずSELinuxを停止しましょう! わたくしはこれで結構ヤラれました。。 参考URL
# vi /etc/selinux/config SELINUX=disabled
そんでもって先に必要そうなものをインストールしておきます。
yum install -y nginx gcc git wget
Python3をCentOS7にインストールするためにIUS Community Projectのリポジトリを追加します。
yum install -y https://centos7.iuscommunity.org/ius-release.rpm
Python 3.6 をインストールします(3.6じゃなくてもいいけどw)
yum install -y python36u python36u-libs python36u-devel python36u-pip
エイリアスを設定します
ln -s /bin/python3.6 /bin/python3
pipをインストールします
wget https://bootstrap.pypa.io/get-pip.py python get-pip.py
virtualenvをインストールします
pip install --upgrade virtualenv
2. プロジェクトをGitクローンしてvirtualenv環境にする
Gitクローンしてきます。 プロジェクトディレクトリをflaskrをします。 場所は下記とします。
cd /var/www/html/flaskr
virtualenvで切り替えます。
virtualenv --python python3 env source env/bin/activate
3. FlaskとuWSGIをインストールしてセットアップする
pip install uwsgi flask flask-sqlalchemy flask-login flask-migrate
Create the WSGI Entry Point
# vi /flaskr/wsgi.py from run import app if __name__ == "__main__": app.run()
表示を確認します。このとき、nginxは起動させてちゃダメです。
uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi:app
Creating a uWSGI Configuration File
# vi /flaskr/flaskr.ini [uwsgi] module = wsgi:app master = true processes = 5 socket = flaskr.sock chmod-socket = 660 vacuum = true die-on-term = true
Create a Systemd Unit File
# vi /etc/systemd/system/flaskr.service [Unit] Description=uWSGI instance to serve myproject After=network.target [Service] User=moqrin3 // プロジェクトディレクトリのユーザーに合わせましょう Group=nginx WorkingDirectory=/var/www/html/flaskr Environment="PATH=/var/www/html/flaskr/env/bin" ExecStart=/var/www/html/flaskr/env/bin/uwsgi --ini flaskr.ini [Install] WantedBy=multi-user.target
起動させます
systemctl start flaskr systemctl enable flaskr
Configuring Nginx to Proxy Requests
# vi /etc/nginx/conf.d/vhost.conf server { listen 80; server_name moqrin3.flask.com; location / { include uwsgi_params; uwsgi_pass unix:/var/www/html/flaskr/flaskr.sock; } ...略
確認して起動します
nginx -t systemctl start nginx systemctl enable nginx
ホスト設定してブラウザで表示確認しましょう!
# vi /etc/hosts
InstanceIP moqrin3.flask.com
参考:
Python 開発環境のセットアップ
Python3をCentOS 7 に yum でインストールする手順
How To Serve Flask Applications with uWSGI and Nginx on Ubuntu 16.04
How To Serve Flask Applications with uWSGI and Nginx on CentOS 7