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

Как установить Flask с Nginx и Gunicorn на Rocky Linux


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

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

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

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

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

Предпосылки

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

  • Сервер Rocky Linux. Вы можете использовать как Rocky Linux v8, так и v9 — рабочий стол или сервер.
  • Пользователь без полномочий root с правами администратора sudo root.
  • Фиктивное доменное имя для локальной разработки.

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

На первом этапе вы установите некоторые зависимости пакетов, которые будут использоваться для установки и развертывания Flask Web Framework. Сюда входят, например, Python Pip, Nginx и Supervisord.

Все эти зависимости пакетов доступны в репозитории Rocky Linux, вы можете легко установить их с помощью команды DNF.

Во-первых, убедитесь, что репозиторий EPEL установлен в вашей системе. или вы можете просто установить и включить его с помощью команды dnf ниже.

sudo dnf install epel-release

Теперь установите несколько пакетов Python python3-pip и python3-devel, а также компилятор GCC с помощью приведенной ниже команды dnf. Эти пакеты будут использоваться для установки пакетов Python.

sudo dnf install python3-pip python3-devel gcc

Когда будет предложено подтвердить установку, введите y и нажмите ENTER, чтобы продолжить.

Затем запустите еще одну команду dnf ниже, чтобы установить веб-сервер Nginx и пакеты supervisord. Здесь Nginx будет использоваться в качестве обратного прокси-сервера для вашего проекта Flask, а supervisord будет использоваться для управления процессом вашего приложения Flask.

sudo dnf install nginx supervisor

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

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

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Вы увидите вывод, подобный следующему: Служба Nginx включена и будет запускаться автоматически при загрузке системы. И статус службы Nginx работает.

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

sudo systemctl start supervisord
sudo systemctl enable supervisord
sudo systemctl status supervisord

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

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

После установки зависимостей пакета вы настроите нового пользователя, который будет использоваться для запуска проекта Flask.

Выполните следующую команду, чтобы создать нового пользователя и установить пароль. В этом примере вы создадите нового пользователя alice.

Когда будет предложено создать новый пароль, введите свой пароль и повторите.

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

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

sudo usermod -aG wheel alice

Наконец, войдите в систему под новым пользователем и запустите команду sudo, чтобы проверить привилегии root. Введите свой пароль, когда будет предложено.

su - alice
sudo su

Вы должны увидеть корневую оболочку вашей машины Rocky Linux.

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

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

Войдите в систему как ваш пользователь, используя следующую команду.

su - alice

Создайте новый каталог установки Flask /var/www/myflask, используя следующую команду mkdir.

sudo mkdir -p /var/www/myflask

Измените владельца и права доступа к каталогу установки Flask, используя приведенную ниже команду. Право собственности должно принадлежать пользователю alice с разрешением 755.

sudo chown -R alice:alice /var/www/myflask
sudo chmod 755 /var/www/myflask

Теперь переместите свой рабочий каталог в каталог установки Flask /var/www/myflask и создайте новую виртуальную среду Python с помощью приведенной ниже команды python.

cd /var/www/myflask
python3 -m venv myenv

Вы увидите, что новый каталог myenv создан.

Затем активируйте виртуальную среду Python с помощью следующей команды. Если эта функция активирована, вы увидите, что формат приглашения изменился, например, на (myenv [email .

source myenv/bin/activate

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

deactivate

Установка Flask и Gunicorn

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

su - alice
cd /var/www/myflask
source myenv/bin/activate

Теперь установите Flask и Gunicorn с помощью команды pip ниже. Это установит Flask и Gunicorn в виртуальной среде, а не в системе.

pip3 install flask gunicorn

После установки Flask и Gunciron вы готовы создать первое приложение с помощью Flask Web Framework.

Создание первого приложения Flask

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

Создайте новый файл Python myflask.py с помощью предпочитаемого вами редактора. В этом примере мы будем использовать редактор nano.

nano myflask.py

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

# myflask.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(host='0.0.0.0')

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

Затем создайте новый каталог templates для своих статических файлов и создайте поверх него новый файл index.html.

mkdir -p templates
nano templates/index.html

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

<html>
    <body>
        <h1><center>Hello Flask - Rocky Linux!</center></h1>
    </body>
</html>

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

Теперь выполните скрипт Python Flask myflask.py, используя приведенную ниже команду. Это запустит ваше приложение Flask в режиме разработки, используя IP-адрес сервера с портом по умолчанию 5000.

python3 myflask.py

Ниже приведен аналогичный вывод, который вы получите.

Затем откройте другой терминал и запустите приведенную ниже команду curl, чтобы получить доступ к приложению Flask. Вы увидите сценарий файла index.html, который вы создали.

curl localhost:5000

Теперь нажмите Ctrl+c, чтобы закрыть приложение Flask.

Настройка Gunicorn и Supervisord

На этом этапе вы будете настраивать приложение Flask с помощью Gunicorn и Supervisord. Это позволяет вам запускать и управлять вашим приложением Python, управляемым и контролируемым с помощью процесса Supervisord.

Создайте новый файл Python uwsgi.py в том же каталоге вашего приложения Flask. В этом примере каталог должен быть /var/www/myflask.

nano wsgi.py

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

# import myflask Flask application
from myflask import app

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

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

Теперь запустите следующую команду gunicorn, чтобы запустить приложение Flask и проверить настройки Gunicorn. Теперь приложение должно работать под Gunicron с портом 8000.

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

Ниже приведен вывод команды gunicorn.

Затем откройте веб-браузер и посетите IP-адрес сервера, за которым следует порт 8000 (например, http://192.168.5.100:8000/). Вы должны увидеть страницу index.html вашего приложения Flask.

На данный момент ваше приложение Flask работает с Gunicorn без каких-либо ошибок. Теперь вы можете вернуться к своему терминалу и нажать Ctrl+c, чтобы завершить процесс пушки и начать настройку диспетчера процессов Supervisord.

Создайте новую конфигурацию INI-файла Supervisord для приложения Flask /etc/supervisord.d/flaskapp.ini с помощью следующей команды nano. Конфигурация должна храниться в каталоге /etc/supervisord.d.

sudo nano /etc/supervisord.d/flaskapp.ini

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

С этой конфигурацией ваше приложение Flask будет работать под сокетом UNIX, который будет создан Gunicorn. Этот сокет unix также будет использоваться для взаимодействия с обратным прокси-сервером Nginx.

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

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

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

sudo systemctl restart supervisord
sudo systemctl status supervisord

На приведенном ниже снимке экрана видно, что Supervisord работает с новой дополнительной конфигурацией для приложения Flask.

Наконец, теперь вы можете проверить процесс своего приложения Flask с помощью приведенной ниже команды supervisorctl. Вы должны увидеть, что есть один процесс с именем myflask со статусом OK.

sudo supervisorctl status

Настройка обратного прокси Nginx

На этом шаге вы узнаете, как настроить Nginx в качестве обратного прокси-сервера для приложения Flask, работающего под управлением диспетчера процессов Supervisord. Вы создадите новый серверный блок Nginx для обратного прокси-сервера и используете локальное доменное имя для приложения Flask.

Создайте новую конфигурацию блока сервера Nginx /etc/nginx/conf.d/flaskapp.conf, используя следующий редактор nano.

sudo nano /etc/nginx/conf.d/flaskapp.conf

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

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

    location / {
        include uwsgi_params;
        proxy_pass http://unix:/var/www/myflask/ipc.sock;
    }
}

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

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

sudo nginx -t
sudo systemctl restart nginx

На данный момент ваше приложение Flask теперь доступно через обратный прокси-сервер Nginx, который работает на порту HTTP по умолчанию.

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

sudo nano /etc/hosts

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

192.168.5.28 www.myflask.local

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

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

Заключение

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