Nginxとgunicornでアプリを公開する

gunicorn

Dockerを使った方が良いと思うが、今回は簡単にサーバー上でバックグラウンドで実行する。

gunicorn -b 127.0.0.1:8080 -k flask_sockets.worker server:app -D

-Dオプションでバックグラウンド。nginxでローカルからのアクセスになるため、127.0.0.0だけを許可する。アプリケーション名は都度考える。

停止

バックグラウンドで実行しているとctr+cでは止められない。$ps aux | grep gunicorn でプロセスidを確認して $ kill id で止める。

Nginx

# for websocket
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
	listen 80;
	listen [::]:80;

	server_name example.com;

	return 301 https://$host$request_uri;

}

server {
	listen 443 ssl;

	ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

	proxy_set_header Host $http_host;
	proxy_set_header X-Forwarded-Proto $scheme;
	proxy_http_version 1.1; # for websocket
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection $connection_upgrade;

	server_name example.com;
	charset UTF-8;

	location / {
		proxy_pass http://localhost:8080;
	}
}

proxy_pass http://localhost:8080; でローカルのアプリケーションにアクセスする。

参考

Nginx+gunicorn構成でFlaskを使う[ローカル環境編] – Qiita

Comments

タイトルとURLをコピーしました