ubuntu18でFlaskのアプリ外部公開

まず

sudo apt install -y nginx ufw
pip3 install flask uwsgi
sudo ufw allow 80
sudo ufw allo 443

つぎ

cd /etc/nginx/sites-available/
sudo vim hogehoge.com.conf
server {
    listen 80;
    server_name hogehoge.com;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }
}
cd ../sites-enabled
sudo ln -s ../sites-available/hogehoge.com.comf

そして

cd ~
mkdir flask
cd flask
vim app.py
from flask import *
app = Flask(__name__)
@app.route("/")
def hello():
    return "neko_ni_naritai"

if __name__ == "__main__":
    app.run(debug=True)

とりあえず

python3 app.py

最終確認

vim myapp.ini

[uwsgi]
module = app
callable = app
master = true
processes = 1
socket = /tmp/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true
#venv = /home/syaro/.pyenv/versions/3.7.0/ #venv使う人は使おうね
logto = log_%n.log
user = syaro

これで一応うごく

$ uwsgi --ini=myapp.ini

これでscreenとかsupervisorとか使うのもあり /usr/bin/pythonが2.xの人は、

cd /usr/bin/
sudo unlink python
sudo ln -s python3 python

にしたほうがうまくうごく

これをsystemdに登録 sudo vim /etc/systemd/system/uwsgi.service

[Unit]
Description = uwsgi

[Service]
Restart = always
WorkingDirectory=/home/syaro/flask
ExecStart = uwsgi --ini /home/syaro/flask/myapp.ini
ExecReload = /bin/kill -s HUP ${MAINPID}
KillSignal = kill -QUIT
User = syaro
Group = syaro

[Install]
WantedBy = multi-user.target
sudo systemctl restart uwsgi
sudo service nginx restart

できたああああああああああああああああああああああああああああああああああああああ