Flask - установка web framework-а на Ubuntu 22.04 с nginx и Gunicorn: различия между версиями

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2023
Перейти к:навигация, поиск
Строка 44: Строка 44:
  
 
Создаем '''WSGI Entry Point''' чтобы - сообщит '''Gunicorn'''  как взаимодействовать с приложением:
 
Создаем '''WSGI Entry Point''' чтобы - сообщит '''Gunicorn'''  как взаимодействовать с приложением:
  $ vi ~/myproject/wsgy.py
+
  $ vi ~/myproject/wsgi.py
 
<source lang='python'>
 
<source lang='python'>
from myproject import app
+
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