#author("2019-01-11T08:01:22+00:00","","") * Nginx+uwsgiでFlaskアプリケーション [#jfbc4dba] #setlinebreak(on) #contents -- 関連 --- [[Nginx]] --- [[Flaskの基礎]] -- 参考 --- https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html #TODO ** 概要 [#gdd7ab34] #html(<div style="padding-left:10px">) #TODO #html(</div>) ** Flask、uWSGI インストール [#occabcae] #html(<div style="padding-left:10px">) #myterm2(){{ mkdir test_flask && cd test_flask python3 -m venv .venv source .venv/bin/activate pip install flask pip install uwsgi }} #html(</div>) ** サンプルアプリケーション [#q7453491] #html(<div style="padding-left:10px">) app/app.py #mycode2(){{ from flask import Flask import datetime app = Flask(__name__) @app.route('/') def index(): now = datetime.datetime.now().strftime('%H:%M:%S.%f') return f'<h1>top page!({now})</h1>\n' @app.route('/sample') def sample(): now = datetime.datetime.now().strftime('%H:%M:%S.%f') return f'<h1>sample page!({now})</h1>\n' }} #html(</div>) ** まずは uwsgiのみで動かしてみる [#v450df85] #html(<div style="padding-left:10px">) 参考 https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html uwsgi起動 #myterm2(){{ uwsgi --http :3031 --wsgi-file app/app.py --callable app }} 確認 #myterm2(){{ curl http://localhost:3031/ top page!(13:35:03.767707) }} #html(</div>) ** nginxインストール [#r1784e69] #html(<div style="padding-left:10px">) [[Nginx]] を参照 #html(</div>) ** nginxの設定 [#zb01b5b3] #html(<div style="padding-left:10px">) default.conf #mycode2(){{ server { listen 80; server_name localhost; root /var/app; index index.html index.htm; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; } } }} #html(</div>) ** 全部入りのDockerイメージを作る [#lee978eb] #html(<div style="padding-left:10px">) Dockerfile #mycode2(){{ FROM ubuntu USER root RUN apt-get update && \ apt-get -y install software-properties-common && \ add-apt-repository -y ppa:jonathonf/python-3.6 && \ apt-get update && \ apt-get -y install nginx && \ apt-get -y install python3.6-dev && \ apt-get -y install python3-pip RUN ln -s /usr/bin/python3.6 /usr/bin/python RUN rm -rf /usr/bin/python3 && ln -s /usr/bin/python3.6 /usr/bin/python3 RUN pip3 install --upgrade pip && pip install flask && pip install uwsgi COPY app /var/app COPY default.conf /etc/nginx/conf.d/default.conf CMD ["/bin/bash", "/var/app/startup.sh"] }} app/startup.sh #mycode2(){{ #!/bin/bash echo "## startup.sh ##" # アプリケーションディレクトリに移動 cd /var/app ls -l /var/app # uwsgi起動 echo "## start uwgsi ##" uwsgi --socket 127.0.0.1:3031 --chdir /var/app/ --wsgi-file app.py --callable app --master --processes 4 --threads 2 & # nginx起動 echo "## start nginx ##" nginx -g "daemon off;" }} #html(</div>)