Flask - установка web framework-а на Ubuntu 22.04 с nginx и Gunicorn: различия между версиями
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2023
Admin iph (обсуждение | вклад) |
Admin iph (обсуждение | вклад) |
||
Строка 44: | Строка 44: | ||
Создаем '''WSGI Entry Point''' чтобы - сообщит '''Gunicorn''' как взаимодействовать с приложением: | Создаем '''WSGI Entry Point''' чтобы - сообщит '''Gunicorn''' как взаимодействовать с приложением: | ||
− | $ vi ~/myproject/ | + | $ vi ~/myproject/wsgi.py |
<source lang='python'> | <source lang='python'> | ||
− | from | + | from myapp import app |
if __name__ == "__main__": | if __name__ == "__main__": | ||
app.run() | app.run() | ||
+ | </source> | ||
+ | |||
+ | Конфигурация '''Gunicorn''': | ||
+ | $ cd ~/myproject | ||
+ | $ gunicorn --bind 0.0.0.0:5000 wsgi:app | ||
+ | |||
+ | Проверяем вход через 5000 порт: | ||
+ | http://Server_IP:5000/ | ||
+ | |||
+ | Выходим CTRL+C и CTRL+D <br> | ||
+ | |||
+ | Создаем '''systemd service unit file''' для нашего приложения чтобы автоматически запускать его | ||
+ | <source lang='bash'> | ||
+ | # vi /etc/systemd/system/myproject.service | ||
+ | [Unit] | ||
+ | Description=Gunicorn instance | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | User=user1 | ||
+ | Group=www-data | ||
+ | |||
+ | WorkingDirectory=/home/user1/myproject | ||
+ | Environment="PATH=/home/user1/myproject/myenv1/bin" | ||
+ | ExecStart=/home/user1/myproject/myenv1/bin/gunicorn --workers 3 --bind unix:myapp.sock -m 007 wsgi:app | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
</source> | </source> |
Версия 19:50, 21 мая 2022
Flask - установка веб framework-а на Ubuntu 22.04 с nginx и Gunicorn
Flask framework: https://palletsprojects.com/p/flask/
Установка дополнительного ПО:
# apt update # apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y
Создаем Виртуальное Окружение Python:
# apt install python3-venv # adduser user1 # su user1 $ mkdir ~/myproject $ cd ~/myproject $ python3 -m venv myenv1 $ source myenv1/bin/activate
Ставим пакеты через pip: wheel, gunicorn, flask
$ pip install wheel gunicorn flask Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.1.2 click-8.1.3 flask-2.1.2 gunicorn-20.1.0 itsdangerous-2.1.2 wheel-0.37.1
Создаем простой проект - импортируем Flask и экземпляр обьекта Flask:
# vi ~/myproject/myapp.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "<h1 style='color:blue'>Hello IPHOSTER!</h1>" if __name__ == "__main__": app.run(host='0.0.0.0')
Запускаем и проверяем через 5000 порт:
$ python ~/myproject/myapp.py
заходим на
http://Server_IP:5000/
Создаем WSGI Entry Point чтобы - сообщит Gunicorn как взаимодействовать с приложением:
$ vi ~/myproject/wsgi.py
from myapp import app if __name__ == "__main__": app.run()
Конфигурация Gunicorn:
$ cd ~/myproject $ gunicorn --bind 0.0.0.0:5000 wsgi:app
Проверяем вход через 5000 порт:
http://Server_IP:5000/
Выходим CTRL+C и CTRL+D
Создаем systemd service unit file для нашего приложения чтобы автоматически запускать его
# vi /etc/systemd/system/myproject.service [Unit] Description=Gunicorn instance After=network.target [Service] User=user1 Group=www-data WorkingDirectory=/home/user1/myproject Environment="PATH=/home/user1/myproject/myenv1/bin" ExecStart=/home/user1/myproject/myenv1/bin/gunicorn --workers 3 --bind unix:myapp.sock -m 007 wsgi:app [Install] WantedBy=multi-user.target