Поиск по сайту:

Как установить Flask с Nginx и Gunicorn на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

На этой странице

  1. Предпосылки
  2. Настройка нового пользователя
  3. Установка зависимостей пакетов
  4. Настройка среды разработки
  5. Установка Python Flask в виртуальной среде
  6. Создание первого проекта приложения с помощью Flask
  7. Настройка Gunicorn
  8. Запуск приложения Flask с помощью Gunicorn и Supervisor
  9. Настройка Nginx в качестве обратного прокси-сервера для приложения Flask
  10. Заключение

Flask — это написанный на Python микрофреймворк для разработки современных веб-приложений и API (интерфейс прикладного программирования). Он основан на наборе инструментов Werkzeug и шаблоне Jinja2. Вместо сложной архитектуры Flask представляет собой небольшой веб-фреймворк, ядро которого легко расширяется, и его легко освоить, потому что Flask имеет меньше кода. Flask не включает ORM, но по-прежнему имеет классные функции, такие как маршрутизация URL-адресов и механизм шаблонов.

Gunicorn или «Зеленый единорог» — это HTTP-сервер WSGI с рабочим режимом pre-fork. Он портирован из проекта Rubys Unicorn. Gunicorn может работать в паре с несколькими веб-фреймворками из-за его легкого использования серверных ресурсов и высокой скорости. Gunicorn находится между вашим приложением и веб-сервером, поэтому вы можете связать Gunicorn с веб-сервером, таким как Nginx и Apache2.

В этом посте мы покажем вам, как установить и настроить Python Flask Web Framework с помощью Gunicorn и Nginx в системе Ubuntu 22.04. В этом руководстве также рассказывается, как настроить Python Flask с помощью Gunicorn и Supervisord.

Предпосылки

Для этого руководства вам потребуются следующие предварительные условия:

  • Система Ubuntu 22.04. Вы можете использовать настольную или серверную версию Ubuntu 22.04.
  • Пользователь root или пользователь без полномочий root.

Настройка нового пользователя

На первом этапе вы настроите нового пользователя для веб-фреймворка среды разработки Python Flask. Вы можете пропустить этот шаг, если у вас уже есть пользователь без полномочий root с привилегиями root/sudo. Этот пользователь будет использоваться для запуска приложения Python Flask.

В этом примере вы будете создавать нового пользователя с именем «james». Запустите следующую команду, чтобы создать нового пользователя «james» и установить пароль для пользователя «james». Обязательно используйте надежный пароль.

sudo useradd -m -s /bin/bash james
sudo passwd james

Затем добавьте пользователя «james» в группу «sudo», используя приведенную ниже команду. Это позволит новому пользователю \james\ запустить команду \sudo su\ и получить привилегии администратора root. который необходим для установки пакетов и настройки системных конфигураций.

sudo usermod -aG sudo james

Наконец, проверьте и подтвердите нового пользователя, войдя в систему как пользователь «james» и выполнив команду «sudo su», чтобы получить привилегии root. Введите пароль пользователя \james\, и вы получите корневую оболочку. Текущая оболочка будет изменена с \[email \.

su - james
sudo su

Теперь нажмите \Ctrl+d\ или введите \exit\, чтобы вернуться к пользователю без полномочий root \james\.

Установка зависимостей пакетов

Теперь вы будете устанавливать некоторые зависимости пакета для установки Python Flask, в том числе \python3-pip\ и \python3-venv\. В конце концов, вы также будете устанавливать веб-сервер Nginx и супервизор.

Прежде чем начать установку пакетов, выполните приведенную ниже команду apt, чтобы обновить репозиторий пакетов.

sudo apt update

Теперь установите python3-pip и python3-venv, используя следующую команду. python3-pip будет использоваться в качестве диспетчера пакетов Python, а python3-venv — для создания виртуальной среды для разработки приложений Flask.

sudo apt install python3-pip python3-venv

Введите Y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить. Начнется установка.

После завершения установки выполните следующую команду, чтобы настроить Python по умолчанию в вашей системе Ubuntu.

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Теперь проверьте версию Python и Pip, а также проверьте модуль Python venv, выполнив следующие команды. В следующем примере вы будете устанавливать веб-фреймворк Python Flask с Python 3.10.

python --version
pip --version
python -m venv -h

Затем выполните следующую команду apt, чтобы установить веб-сервер Nginx и пакет супервизора. Веб-сервер Nginx будет использоваться в качестве веб-сервера по умолчанию для веб-инфраструктуры Python Flask, а супервизор будет использоваться для управления приложением Flask, например для запуска и остановки процесса Flask.

sudo apt install nginx supervisor

Введите Y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить. Дождитесь завершения установки пакета.

Настройка среды разработки

В этом разделе вы создадите новую виртуальную среду Python, которая будет использоваться в качестве среды разработки веб-фреймворка Python Flask.

Выполните следующую команду, чтобы создать новый каталог проекта \/var/www/myapp\. Этот каталог будет использоваться в качестве основного каталога проекта для вашего приложения FLAS.

sudo mkdir -p /var/www/myapp

Измените владельца нового каталога на пользователя «james» и измените разрешение на «755», используя приведенную ниже команду.

sudo chown -R james:james /var/www/myapp
sudo chmod 755 /var/www/myapp

Перейдите в каталог проекта \/var/www/myapp\ и создайте новую виртуальную среду Python с именем \myenv\, используя следующую команду.

cd /var/www/myapp
python -m venv myenv

Наконец, активируйте виртуальную среду \myenv\ с помощью следующей команды. При активации приглашение вашей оболочки примет вид \(myenv) [email \.

source myenv/bin/activate

Установка Python Flask в виртуальной среде

После настройки виртуальной среды вы можете запустить приведенную ниже команду pip, чтобы установить Python Flask и Gunicorn в вашей виртуальной среде. Все эти пакеты будут установлены из репозитория PyPi Python.

pip install flask gunicorn

Теперь начнется установка.

Создайте первый проект приложения с помощью Flask

Теперь вы установили веб-фреймворк Python Flask. Теперь вы будете создавать первое приложение с помощью Flask.

Перед созданием проекта Flask убедитесь, что вы находитесь в главном каталоге проекта \/var/www/myapp\ и активирована виртуальная среда \myenv\. .

Создайте новый файл \myapp.py\ с помощью редактора nano.

nano myapp.py

Теперь добавьте в файл следующий скрипт Python.

# myapp.py
from flask import Flask, render_template  # importing the render_template function

app = Flask(__name__)
# route to index page
@app.route("/")
def hello():
    return render_template('index.html')

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

Сохраните и закройте файл, когда закончите.

Затем создайте новый каталог \templates\ и создайте новый файл \index.html\ внутри \шаблона\. каталог.

mkdir -p templates/
nano templates/index.html

Добавьте к нему следующий HTML-скрипт.

<html>
    <body>
        <h1><center>Hello World!</center></h1>
    </body>
</html>

Сохраните и закройте файл, когда закончите.

Наконец, запустите скрипт \myapp.py\, чтобы запустить ваше первое приложение Flask.

python myapp.py

Вы увидите, что ваш проект Flask работает на локальном хосте по умолчанию с портом 5000.

Откройте новую терминальную оболочку вашего компьютера с Ubuntu и выполните приведенную ниже команду curl.

curl http://127.0.0.1:5000/

Теперь вы можете увидеть вывод страницы index.html на следующем снимке экрана.

Чтобы завершить процесс приложения Flask, вы можете нажать кнопку «Ctrl + c».

Настройка Гуникорна

Gunicorn или «Зеленый единорог» — это интерфейс шлюза веб-сервера Python для HTTP-сервера. Это позволяет вам запускать приложение Python как процесс HTTP или с помощью файла sock. Теперь вы добавите Gunicorn в свой проект Flask.

В каталоге проекта Flask создайте новый файл \wsgi.py\ с помощью редактора nano.

nano wsgi.py

Добавьте в него следующий скрипт.

# import myapp Flask application
from myapp import app

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

Сохраните и закройте файл, когда закончите.

Затем выполните следующую команду, чтобы запустить проект Flask с помощью Gunicorn. В этом примере ваш проект Flask будет работать на общедоступном IP-адресе с портом 8000.

gunicorn -w 4 --bind 0.0.0.0:8000 wsgi:app

Откройте веб-браузер и введите IP-адрес вашей системы Ubuntu с портом 8000 (например, http://192.168.5.28:8000/). И вы должны увидеть индексную страницу вашего проекта Flask.

Теперь нажмите \Ctrl+c\, чтобы завершить процесс Guncorn.

Запуск приложения Flask с помощью Gunicorn и Supervisor

Теперь вы настроили Gunicorn для проекта FLask. И пришло время настроить Supervisor для веб-фреймворка Flask.

Супервизор — это управление процессами, которое позволяет вам контролировать процессы в одном месте. Таким образом, вместо того, чтобы запускать приложение Flask в качестве системной службы, вы будете использовать Supervisor.

Создайте новый файл конфигурации \/etc/supervisor/conf.d/myapp.conf\ с помощью редактора nano.

sudo nano /etc/supervisor/conf.d/myapp.conf

Добавьте следующую конфигурацию в файл. И обязательно измените путь к деталям конфигурации и пользователя.

Используя эту конфигурацию, вы будете запускать свой проект Flask с помощью Gunicorn, и вместо использования IP-адреса для своего приложения вы будете запускать проект Flask как файл sock.

[program:myapp] 
command=/bin/bash -c 'source /var/www/myapp/myenv/bin/activate; gunicorn -w 3 --bind unix:/var/www/myapp/ipc.sock wsgi:app'
directory=/var/www/myapp
user=james
group=www-data
autostart=true
autorestart=true
stdout_logfile=/var/www/myapp/myapp.log
stderr_logfile=/var/www/myapp/error.log

Сохраните и закройте файл, когда закончите.

Теперь перезапустите службу супервизора, используя приведенную ниже команду, чтобы применить новые изменения.

sudo systemctl restart supervisor

Наконец, проверьте и проверьте список процессов под супервизором, используя следующую команду. Вы должны увидеть запущенный процесс \myapp\.

sudo supervisorctl status

И если вы проверите службу супервизора, вы увидите, что служба супервизора активна и работает.

sudo systemctl status supervisor

Настройте Nginx в качестве обратного прокси для приложения Flask

Создайте новую конфигурацию виртуального хоста \/etc/nginx/sites-available/myapp.conf\ с помощью редактора nano.

sudo nano /etc/nginx/sites-available/myapp.conf

Добавьте следующую конфигурацию в файл. В этом примере проект Flask будет работать в локальном домене \www.myapp.local\. Кроме того, вы можете видеть, что параметр \proxy_pass\ указывает на sock-файл UNIX, который работает под управлением Gunicorn и Supervisor.

server {
    listen 80;
    server_name www.myapp.local;

    location / {
        include proxy_params;
        proxy_pass http://unix:/var/www/myapp/ipc.sock;
    }
}

Сохраните и закройте файл, когда закончите.

Затем выполните следующую команду, чтобы активировать конфигурацию блока сервера \myapp.conf\, затем проверьте конфигурацию Nginx. Если вы не получите никакой ошибки, вы увидите выходное сообщение, такое как «Синтаксис в порядке - тест прошел успешно».

sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/
sudo nginx -t

После этого вы можете перезапустить службу Nginx, используя следующую команду, чтобы применить новые изменения в конфигурации Nginx.

sudo systemctl restart nginx

Теперь на локальном компьютере отредактируйте файл /etc/hosts с помощью редактора nano.

sudo nano /etc/hosts

Определите IP-адрес компьютера Ubuntu с доменным именем \www.myapp.local\, как показано ниже.

192.168.5.28 www.myapp.local

Сохраните и закройте файл.

Теперь откройте веб-браузер и введите доменное имя проекта Flask (например, http://www.myapp.local) в адресной строке. И вы должны получить индексную страницу вашего проекта Python Flask.

Заключение

Поздравляем! Вы успешно установили веб-фреймворк Python Flask с Gunicorn и Nginx на компьютер с Ubuntu 22.04. Вы также узнали, как создать первый проект Python Flask, настроить виртуальную среду Python и настроить управление процессами Supervisor для проекта Flask.