Edited at

VPSで複数のFlaskを用いたサービスを立ち上げる

More than 1 year has passed since last update.


はじめに

1つのvpsで複数のFlaskアプリケーションを立ち上げるためのメモ

Flask,uWSGI,Nginxを使う。

https://qiita.com/morinokami/items/e0efb2ae2aa04a1b148b

ほとんどこの記事に書いてあることなので,

複数アプリケーションを立ち上げるときの違いだけ記述。

app1のドメインはapp1.com

app2のドメインはapp2.com

とする。

ドメインは2つとも同じvpsのIPアドレスを設定しておけば良い。

ディレクトリ構成は下記のようになっているとする。

home

|-strat.sh
|-app1
|-app.py
|-app2
|-app.py


Nginxの設定

/etc/nginx/conf.d/に.confファイルを作って設定する。

server_nameにドメインを書いておくと,ブラウザで入力されたドメインに応じて動作を切り替えることができる。

この際flaskにつなげるにはUNIXソケットを用いるが,

単に.sockの名前を変えてしまえばいい。


sample.conf

server {

listen 80;
server_name app1.com www.app1.com;
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi_app1.sock;
}
}
server {
listen 80;
server_name app2.com www.app2.com;
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi_app2.sock;
}
}


起動

複数アプリケーションをたちあげるためのスクリプトは以下の通り。


start.sh

#!/bin/sh

cd app1
uwsgi --socket /tmp/uwsgi_app1.sock --module app --callable app --chmod-socket=666 &
cd ..
cd app2
uwsgi --socket /tmp/uwsgi_app2.sock --module app --callable app --chmod-socket=666 &


./start.sh

で起動。