Настройка flask debian nginx

Обновлено: 04.07.2024

В этом обучающем модуле вы создадите приложение Python с использованием микроструктуры Flask в Ubuntu 18.04. Основная часть этой статьи посвящена настройке сервера приложений uWSGI, запуску приложения и настройке Nginx для работы в режиме обратного прокси-сервера фронтенда.

Предварительные требования

Перед началом прохождения этого обучающего модуля вам потребуется следующее:

  • Сервер с установленной операционной системой Ubuntu 18.04 и пользователь без привилегий root и с привилегиями sudo. Следуйте указаниям нашего руководства по начальной настройке сервера.
  • Веб-сервер Nginx, установленный в соответствии с шагами 1 и 2 модуля Установка Nginx в Ubuntu 18.04.

Доменное имя, настроенное так, чтобы указывать на ваш сервер. Вы можете приобрести его на Namecheap или получить бесплатно на Freenom. Вы можете узнать, как указывать домены на DigitalOcean, из соответствующей документации по доменам и DNS. Обязательно создайте следующие записи DNS:

Знакомство с нашим сервером приложений uWSGI и спецификацией WSGI. В этом обсуждении определений и концепций о них рассказывается более подробно.

Шаг 1 — Установка компонентов из хранилищ Ubuntu

Первым шагом будет установка всех необходимых нам элементов из хранилищ Ubuntu. Для управления нашими компонентами Python мы установим pip , диспетчер пакетов Python. Также мы получим файлы разработки Python, необходимые для создания uWSGI.

Вначале обновим локальный индекс пакетов и установим пакеты, которые позволят нам создать нашу среду Python. Мы установим пакет python3-pip , а также еще несколько пакетов и средств разработки, необходимых для создания надежной среды программирования:

С этими пакетами мы перейдем к созданию виртуальной среды для нашего проекта.

Шаг 2 — Создание виртуальной среды Python

Теперь мы настроим виртуальную среду, чтобы изолировать наше приложение Flask от других файлов Python в системе.

Для начала установим пакет python3-venv , который установит модуль venv :

Затем создадим родительский каталог для нашего проекта Flask. Перейдите в каталог после его создания:

Создайте виртуальную среду для хранения требований Python для вашего проекта Flask, введя следующую команду:

Локальные копии Python и pip будут установлены в каталог myprojectenv в каталоге вашего проекта.

Прежде чем устанавливать приложения в виртуальной среде, ее нужно активировать. Для этого нужно ввести следующую команду:

Командная строка изменится, показывая, что теперь вы работаете в виртуальной среде. Она будет выглядеть примерно так: ( myprojectenv ) user @ host :

Шаг 3 — Настройка приложения Flask

Находясь в виртуальной среде, вы можете установить Flask и uWSGI и начать работу над созданием вашего приложения.

Вначале мы установим wheel с локальным экземпляром pip , чтобы убедиться, что наши пакеты будут устанавливаться даже при отсутствии архивов wheel:

Примечание. Если виртуальная среда активна, то вне зависимости от того, какую версию Python вы используете, вы должны использовать команду pip (а не pip3 ).

Затем установим Flask и uWSGI:

Создание образца приложения

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

Хотя ваше приложение может быть более сложным, мы создадим наше приложение Flask в одном файле с именем myproject.py :

Код приложения будет находиться в этом файле. Он импортирует Flask и создаст экземпляр объекта Flask. Вы можете использовать его для определения функций, которые запускаться при запросе конкретного маршрута:

Здесь определяется, какой контент должен выводиться при доступе к корневому домену. Сохраните файл и закройте его после завершения.

Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Чтобы протестировать приложение, вам нужно разрешить доступ к порту 5000 :

Теперь вы можете протестировать приложение Flask с помощью следующей команды:

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

Откройте в браузере IP-адрес вашего сервера с суффиксом :5000 :

Вы увидите примерно следующее:

Образец приложения Flask

Когда вы закончите, нажмите CTRL+C в окне терминала, чтобы остановить сервер разработки Flask.

Создание точки входа WSGI

Теперь создадим файл, который будет служить точкой входа в наше приложение. Это покажет серверу uWSGI, как с ним взаимодействовать.

Мы назовем этот файл wsgi.py :

Сейчас мы импортируем экземпляр Flask из нашего приложения в этот файл и запустим его:

Сохраните файл и закройте его после завершения.

Шаг 4 — Настройка uWSGI

Ваше приложение написано, и для него создана точка входа. Теперь мы можем перейти к настройке uWSGI.

Тестирование обслуживания uWSGI

Проверим способность uWSGI обслуживать наше приложение.

Для этого нужно просто передать имя нашей точки входа. Оно составляется из имени модуля (без расширения .py ) и имени вызываемого элемента приложения. В нашем случае это wsgi:app .

Откройте в браузере IP-адрес вашего сервера с суффиксом :5000 .

Теперь вы снова увидите результат выполнения вашего приложения:

Образец приложения Flask

Убедившись в его нормальной работе, нажмите CTRL+C в окне терминала.

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

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

Создание файла конфигурации uWSGI

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

Поместим этот файл в каталоге нашего проекта и назовем его myproject.ini :

Затем мы укажем uWSGI начать работу в режиме мастера и создать пять рабочих процессов для обслуживания фактических запросов:

По время тестирования вы разместили uWSGI на сетевом порту. Однако для обработки фактических клиентских подключений вы будете использовать веб-сервер Nginx, который будет передавать запросы uWSGI. Поскольку эти компоненты работают на одном компьютере, предпочтительно будет использовать сокет Unix, так как он быстрее и безопаснее. Назовем этот сокет myproject .sock и разместим его в этом каталоге.

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

В заключение мы установим опцию die-on-term . Благодаря этому система инициализации и uWSGI будут одинаково интерпретировать каждый сигнал процесса. Эта настройка обеспечивает соответствие двух системных компонентов и позволяет добиться ожидаемого поведения:

После завершения редактирования сохраните и закройте файл.

Шаг 5 — Создание файла элементов systemd

Далее мы созадим файл служебных элементов systemd. Создание файла элементов systemd позволит системе инициализации Ubuntu автоматически запускать uWSGI и обслуживать приложение Flask при загрузке сервера.

Для начала создайте файл элементов с расширением .service в каталоге /etc/systemd/system :

Мы начнем с раздела [Unit] этого файла, где указываются метаданные и зависимости. Здесь мы разместим описание службы и предпишем системе инициализации запускать ее только после достижения сетевой цели:

Теперь откроем раздел [Service] . Здесь указывается пользователь и группа, от имени которых мы хотим запустить данный процесс. Сделаем владельем процесса учетную запись обычного пользователя, поскольку этот пользователь является владельцем всех соответствующих файлов. Также назначим владельцем группу www-data , чтобы упростить коммуникацию Nginx с процессами uWSGI. Не забудьте заменить приведенное имя пользователя своим именем пользователя:

Теперь составим карту рабочего каталога и зададим переменную среды PATH , чтобы система инициализации знала, что исполняемые файлы этого процесса находятся в нашей виртуальной среде. Также укажем команду для запуска службы. Systemd требует, чтобы мы указывали полный путь исполняемого файла uWSGI, установленного в нашей виртуальной среде. Мы передадим имя файла конфигурации .ini , который создали в каталоге нашего проекта.

Не забудьте заменить имя пользователя и пути проекта собственными данными:

Наконец, добавим раздел [Install] . Это покажет systemd, куда привязывать эту службу, если мы активируем ее запуск при загрузке. Нам нужно, чтобы эта служба запускалась во время работы обычной многопользовательской системы:

Теперь служебный файл systemd готов. Сохраните и закройте его.

Теперь мы запустим созданную службу uWSGI и активируем ее запуск при загрузке системы:

Теперь проверим состояние:

Результат должен выглядеть следующим образом:

Если вы увидите какие-либо ошибки, устраните их, прежде чем продолжить выполнение этого обучающего модуля.

Шаг 6 — Настройка Nginx для работы с запросами прокси-сервера

Сервер приложений uWSGI должен быть запущен и ожидать запросы файла сокета в каталоге проекта. Настроим Nginx для передачи веб-запросов на этот сокет с помощью протокола uwsgi .

Вначале мы создадим новый файл конфигурации серверных блоков в каталоге Nginx sites-available . Назовем его myproject для соответствия остальным именам в этом модуле:

Откройте серверный блок и укажите Nginx прослушивать порт по умолчанию 80 . Также укажите использовать этот блок для запросов доменного имени нашего сервера:

Затем добавим блок расположения, соответствующий каждому запросу. В этот блок мы добавим файл uwsgi_params , определяющий некоторые общие параметры uWSGI, которые необходимо настроить. После этого запросы будут переданы на сокет, который мы определили с помощью директивы uwsgi_pass :

Сохраните файл и закройте его после завершения.

Чтобы активировать созданную конфигурацию серверных блоков Nginx, необходимо привязать файл к каталогу sites-enabled :

Когда этот файл будет в данном каталоге, мы сможем провести проверку на ошибки синтаксиса с помощью следующей команды:

Если ошибок обнаружено не будет, перезапустите процесс Nginx для чтения новой конфигурации:

В заключение снова изменим настройки брандмауэра. Нам больше не потребуется доступ через порт 5000 , и мы можем удалить это правило. Затем мы сможем разрешить доступ к серверу Nginx:

Теперь у вас должна быть возможность открыть доменное имя вашего сервера в браузере:

Вы должны увидеть результат выполнения вашего приложения:

Образец приложения Flask

Если будут обнаружены любые ошибки, проверьте следующее:

  • sudo less /var/log/nginx/error.log : проверяет журналы ошибок Nginx.
  • sudo less /var/log/nginx/access.log : проверяет журналы доступа Nginx.
  • sudo journalctl -u nginx : проверяет журналы процессов Nginx.
  • sudo journalctl -u myproject : проверяет журналы uWSGI вашего приложения Flask.

Шаг 7 — Защита приложения

Чтобы обеспечить защиту трафика вашего сервера, необходимо получить сертификат SSL для вашего домена. Этого можно добиться несколькими способами, в том числе получить бесплатный сертификат от Let’s Encrypt, сгенерировать сертификат с собственной подпись ю или приобрести сертификат у другого поставщика и настроить Nginx для его использования, для чего потребуется выполнить шаги с 2 по 6 обучающего модуля Создание сертификата SSL с собственной подписью для Nginx в Ubuntu 18.04. Для удобства мы выберем первый вариант.

Вначале добавьте хранилище Certbot Ubuntu:

Вам нужно будет нажать ENTER для подтверждения.

Затем установите пакет Certbot Nginx с apt :

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

Эта команда запускает certbot с плагином --nginx , используя опцию -d to для указания имен, для которых должен действовать сертификат.

Если это первый запуск certbot , вам будет предложено указать адрес эл. почты и принять условия обслуживания. После этого certbot свяжется с сервером Let’s Encrypt и отправит запрос с целью подтвердить, что вы контролируете домен, для которого запрашиваете сертификат.

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

Заключение

В этом обучающем модуле вы научились создавать и защищать простое приложение Flask в виртуальной среде Python. Вы создали точку входа WSGI, с которой может взаимодействовать любой сервер приложений с поддержкой WSGI, а затем настроили сервер приложения uWSGI для обеспечения этой функции. После этого вы создали служебный файл systemd, который автоматически запускает сервер приложений при загрузке. Также вы создали серверный блок Nginx, который передает трафик веб-клиента на сервер приложений, перенаправляет внешние запросы и защищает трафик вашего сервера с помощью сертификата Let’s Encrypt.

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

В мире python существует довольно много различных приложений "супервизоров" предназначенных для запуска веб-приложений: uWSGI, gunicorn, gevent, twisted web и т.д. Однако, пожалуй, наиболее производительным и гибким супервизором является uWSGI. В этом посте я расскажу как запустить ваше Flask приложение под uWSGI. Конечно же, настроим nginx для проксирования запросов и отдачи статического контента.

Предисловие

Мы создадим простейшее web-приложение на Flask. Само приложение будет запускать uWSGI, запросы на который будет проксировать nginx. Приложение будет называться flask-uwsgi . Запомните это название, мы далее будем его часто использовать для имени пользователя и директорий.

Есть два основных способа запуска приложения под uWSGI: используя версию uWSGI из репозиториев дистрибутива, и второй - это установка uWSGI в виртуальное окружение. Лично я предпочитаю устанавливать uWSGI в виртуальное окружение - есть возможность контролировать версию uWSGI, хранить его конфигурацию в системе контроля версий да, и, как правило, в pip версии более "свежие". Первый вариант проще, и в целом подойдёт большинству людей. В этом посте я опишу оба варианта.

Подготовка

Для начала установим пакеты, которые нам понадобятся вне зависимости, от выбранного способа. В Ubuntu:

Создадим директорию для приложения. Эта же директория будет "домашней" для пользователя которого мы далее создадим:

Запускать любое веб-приложение лучше под отдельным пользователем. Создадим его:

Обратите внимание, что мы установили командную оболочку пользователя в /bin/false - то есть по сути отключили ему возможность как либо войти в систему. Сделано это опять же из соображений безопасности. Используя su и имея права супер-пользователя в системе мы сможем войти под этим пользователем и настроить всё для запуска приложения.

Дадим права на директорию /srv/flask-uwsgi созданному пользователю:

Командами выше мы:

  • владельцем директории назначили созданного ранее пользователя. Этот пользователь имеет все права на директорию (читать/создавать/удалять);
  • группой-владельцем директории назначили www-data - это группа создается при установке nginx, и с правами этой группы он запускается. Таким образом nginx сможет получить доступ к директории и корректно отдавать статику;
  • группе www-data и всем остальным пользователям дали возможность исключительно читать файлы из директории;

Создаем приложение и его виртуальное окружение

Войдём под пользователем flask-uwsgi которого ранее создали:

Обратите внимание, что мы сразу окажемся в директории /srv/flask-uwsgi так как задали её в качестве домашней директории для пользователя.

Создадим виртуальное окружение для нашего flask приложения:

Активируем виртуальное окружение и установим в нём Flask:

Теперь создадим файл app.py в котором будет наше наипростейшее приложение:

Обратите внимание, что мы не указываем каких либо параметров в вызове метода run() : запущенный веб-сервер будет "слушать" на стандарном порту и локальном хосте ( 127.0.0.1:5000 ).

Так же нам необходимо создать директорию для статики - несмотря на то, что мы не используем никакой статики в нашем простом приложении, в конфигурации nginx мы её указываем, и если директорию не создать, то nginx не запустится:

И выходим из под пользователя:

Настройка nginx

Создадим файл конфигурации nginx. В большинстве дистрибутивов принятно, что файлы с конфигурацией виртуальных хостов помещаются в /etc/nginx/site-available , и создаются символические ссылки на них в директории /etc/nginx/site-enabled . Это позволяет отключать виртуальные хосты не удаляя их конфигурацию. Мы поступим так же (в других ваших проектах тоже стоит так делать, если вы до этого делали как-то иначе).

Создадим файл /etc/nginx/sites-available/flask-uwsgi.conf :

С таким содержимым:

Nginx так же будет раздавать статические файлы вашего веб-приложения. Пожалуй, лучше чем nginx с этим не справится ни один другой веб-сервер. :)

Вся коммуникация между nginx и uWSGI будет происходит по протоколу uWSGI через unix-сокет - это наиболее производительный способ коммуникации приложений в Linux.

Активируем наш виртуальный хост:

Проверим, что наш конфигурационный файл в порядке:

Результат выполнения команды должен быть примерно такой:

Если всё в порядке, то скажем nginx перечитать конфигурацию:

uWSGI

uWSGI из репозитория дистрибутива

Установим uWSGI из репозитория. Для этого под обычным пользователем выполним:

Мейнтейнеры ubuntu собрали и настроили uWSGI аналогично nginx: конфигурации приложений хранятся в директории /etc/uwsgi/apps-available . Для активации конфигурации необходимо создать символическую ссылку в директории /etc/uwsgi/apps-enabled .

Создадим файл конфигурации нашего приложения. Создадаём файл /etc/uwsgi/apps-available/flask-uwsgi.ini с таким содержимым:

Часть настроек представленные в файле, уже определены в /etc/init.d/uwsgi . В частности gid , master и socket . Это означает, что их можно не добавлять в файл, но лично я предпочитаю видеть сразу все настройки, чем держать в голове что они ещё где-то определены.

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

И перезапускаем uWSGI:

После этого проверьте работоспособность приложения. Если всё в порядке, то включаем автоматическую загрузку uWSGI вместе с загрузкой системы:

uWSGI в виртуальном окружении

При установке uWSGI в виртуальном окружении, понадобятся утилиты для компиляции ряда его модулей. Установим пакеты которые содержат компилятор и нужные заголовочные файлы:

Снова войдём под пользователем которого мы создали для запуска приложения:

Установим uWSGI в виртуальном окружении:

Создадим файл uwsgi.ini , но уже в директории с проектом:

Выходим из под пользователя flask-uwsgi :

Под обычным пользователем создадим файл /etc/systemd/system/flask-uwsgi.service с таким содержимым:

Таким образом мы создадим сервис systemd которым можно управлять - запускать, останавливать, перезапускать и смотреть его статус. Так же он автоматически будет запущен вместе с системой при загрузке. Запустим сервис:

Проверим, что всё запустилось:

И если всё в порядке, то разрешаем сервису запускаться вместе с системой при загрузке:

Заключение

В этой статье мы рассмотрели два самых распространенных варианта запуска веб-приложения написанного на Flask под uWSGI. Конечно же, конфигурация uWSGI представленная в посте является довольно простой, но подойдёт для старта особенно тем, кто не знаком с uWSGI. Для нагруженных крупных проектов я настоятельно рекомендую ознакомиться с документацией uwsgi и подстроить под свои нужды.

Данная статья описывает настройку связки uwsgi и nginx для обслуживания сайта созданного с применением фреймворка Flask. При этом статья писалась для вполне конкретной ситуации: Установка Flask и Python 3.3 в Debian 7. То есть в Debian 7.2 мы имеем вручную установленный из исходников python 3.3, на основе которого создано виртуальное окружение.

Приложение на Flask

В качестве тестового приложения будем использовать код из руководства по Flask:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!'

Установка и настройка Nginx

Начнем с nginx, так как его настройка оказалась тривиальной. Устанавливаем:

Со следующим содержимым:

server listen 80;
server_name domain.tld;

location / < try_files $uri @app; >
location @app uwsgi_pass 127.0.0.1:4242;
include uwsgi_params;
>
>

Где domain.tld - доменное имя сайта, app - имя вашего приложения в файле с кодом на Flask, 127.0.0.1:4242 - адрес и порт на котором слушает uwsgi. Можно также настроить на общение через сокет, но в интернете есть информация, что с данным способом могут быть некоторые проблемы.

Затем линкуем его в директорию /etc/nginx/sites-enabled:

И перезапускаем nginx:

Установка и настройка uwsgi

Устанавливаем uwsgi в уже настроенное виртуальное окружение:

После этого долго не удавалось запустить uwsgi так, чтобы он увидел приложение. Путем нескольких часов экспериментов был подобран конфиг. Создаем конфигурационный файл:

В который пишем:

[uwsgi]
gid = www-data
uid = www-data
socket=127.0.0.1:4242
pidfile=/var/run/uwsgi
virtualenv=/var/www/dev/venv/
chdir=/var/www/dev/
module=site
callable=app
pythonpath=/var/www/dev/venv/lib/python3.3/site-packages/
no-site=True
touch-reload=/var/www/dev/site.py
master = true
processes = 1
threads = 10
enable-threads = True
log-syslog = uwsgi-ligo

Где uid и gid задают пользователя и группу от которых будет работать uwsgi. В socket задаем адрес и порт, в virtualenv путь до директории в которой содержится виртуальное окружение, с помощью pidfile задаем путь до файла с номером процесса, параметр chdir указывает путь до директории с кодом сайта, module - название модуля, то есть имя файла в котором содержится приложение без .py. Далее в callable указываем вызываемое приложение взятое из строки app = Flask(__name__).

pythonpath позволяет задать набор директорий в которых искать модули python. Таких строк может быть до 64. Определить данный путь удалось экспериментальным путем, он ведет в директорию, в которой установлен Flask. Путь начинается с пути до виртуального окружения, так как Flask был установлен конкретно в этом окружении.

no-site - данный параметр мешал нормальной работе в данной ситуации, как написано в официальной справке: если сомневаетесь, то лучше выключить. touch-reload - сообщает uwsgi перезапускаться в случае изменения указанного файла. Если задать значение master, то будет запущен один главный процесс, под которым будут запущены остальные, в количестве указанном в параметре processes. Параметр threads задает количество процессов, которые может запустить процесс. enable-threads - просто включаем поддержку процессов. log-syslog - здесь задаем имя под которым будут писаться логи в syslog.

Теперь запускаем uwsgi:

И получаем ошибки в виде traceback о том, что не хватает такого-то модуля python. Проблема связана с тем, что при создании виртуального окружения не все модули линкуются в виртуальное окружение. То есть модули в виртуальном окружении являются символическими ссылками на модули в основной директории python. Останавливаем uwsgi с помощью Ctrl+C и линкуем все модули в виртуальное окружение:

Вторая и третья строки - одна строка. Проверьте, что символические ссылки создались нормально.

Теперь можно запустить uwsgi в фоне:

На экране информацию о запуске вы не увидите, ее можно почерпнуть из лога /var/log/syslog. Нормальный вывод выглядит примерно так:

Чтобы перезапустить uwsgi достаточно изменить файл /var/www/dev/site.py или "прикоснуться" к нему:

Напрямую можно перезапустить послав сигнал HUP в master-процесс:

Теперь остается сделать так, чтобы uwsgi мог запускаться вместе со стартом системы. Для этого используем supervisord.

Установка и настройка supervisord

Установка, как обычно:

Теперь создаем конфигурационный файл:

со следующим содержимым:

[program:dev]
directory=/var/www/dev
command=/var/www/dev/venv/bin/uwsgi --ini /var/www/dev/site.ini
user=root
autostart=true
autorestart=true
stdout_logfile=/var/log/uwsgi.log
stderr_logfile = /var/log/uwsgi_err.log
redirect_stderr=true
stopsignal=INT

Dev в первой строке - это просто идентификатор, с помощью которого можно будет производить действия над заданной командой. directory - путь до директории в которой работает проект, command - собственно команда для запуска uwsgi.

user - в этой директиве пришлось указать root, иначе uwsgi не запускался.

Теперь запускать, останавливать или перезапускать uwsgi можно с помощью команд для supervisord. К примеру:

Также отдельными командами можно управлять с помощью supervisorctl:

default commands (type help <topic>):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version

При использовании команды supervisorctl откроется отдельная консоль с ограниченным набором команд. Справку по команде можно получить с помощью help, к примеру, help update.

Favorite

Добавить в избранное

Главное меню » Ubuntu » Как использовать Nginx с Flask

Как использовать Nginx с Flask

В этой статье обсуждается, как разместить ваше веб-приложение на сервере под управлением Nginx с помощью Gunicorn.

Прежде чем мы начнем с Flask и Gunicorn, убедитесь, что вы соответствуете следующим требованиям:

  • Сервер с доступом по SSH
  • Веб-сервер Nginx, работающий на сервере (установка описана)
  • Python
  • Вы пользователь sudo.

Настройка сервера

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

Начните с обновления репозиториев и установки Python3 и Pip.

Далее нам нужно создать каталог для хранения проекта.

Измените владельца каталога и разрешения:

Затем установите пакеты с помощью apt (flask и Gunicorn)

Отредактируйте файл wsgi.py и добавьте код для импорта приложения и запустите его как:

Наконец, проверьте, работает ли он, вызвав flask как:

Настройка Gunicorn

Как только наше приложение будет успешно запущено, мы можем использовать Gunicorn для тестирования приложения с помощью команд:

Приведенные выше команды запускают приложение flask с использованием Gunicorn с указанным количеством рабочих. Затем мы вызываем файл wsgi: app, который является файлом и экземпляром приложения для запуска.

После запуска приложения с использованием Gunicorn нажмите CTRL + C, чтобы остановить сервер и настроить Nginx.

Используйте приведенные ниже команды для установки и запуска Nginx.

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

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

Теперь перезапустите службу Nginx как:

Затем нам нужно создать файл модуля systemd для обслуживания приложения.

Наконец, сохраните файл модуля, затем включите и перезагрузите демон.

Теперь вы можете получить доступ к приложению, используя IP-адрес или адрес, указанный в файле конфигурации nginx. Возможно, вам потребуется добавить его в файл хоста.

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: