ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

Python – отличный, простой в освоении и всемогущий язык программирования, и с такими фреймворками, как Django и Flask, мы можем использовать его для создания полноценных веб-приложений. После того, как мы создадим веб-приложение с использованием библиотек и фреймворков, таких как Flask, нам нужно разместить его на сервере и предоставить публике.

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

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

 

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

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

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

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install python3 python3-pip -y

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

sudo mkdir /var/www/application
cd /var/www/application

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

sudo chown -R www-data:www-data /var/www/application/

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

sudo apt-get install python3-flask python3-gunicorn

Теперь приступим к инициализации приложения фляги. Начните с создания main.py – содержит приложение – и wsgi.py, который запустит приложение.

sudo touch main.py wsgi.py

Отредактируйте файл main.py и настройте приложение Flask и все маршруты. Поскольку эта статья не является руководством по Flask, мы настроим базовый маршрут и сообщение hello world.

from flask import Flask

app = Flask(__name__)
@app.route("/")
def home():
return "<h1>Nginx & Gunicorn</h1>"

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

from main import app

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

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

$ flask run
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Попробуйте получить доступ к приложению по адресу http: // localhost: 5000.

 

Настройка Gunicorn

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

$ sudo gunicorn --workers 5 wsgi:app
[2021-03-19 09:19:34 +0000] [14047] [INFO] Starting gunicorn 20.0.4
[2021-03-19 09:19:34 +0000] [14047] [INFO] Listening at: http://127.0.0.1:8000 (14047)
[2021-03-19 09:19:34 +0000] [14047] [INFO] Using worker: sync
[2021-03-19 09:19:34 +0000] [14049] [INFO] Booting worker with pid: 14049
[2021-03-19 09:19:34 +0000] [14050] [INFO] Booting worker with pid: 14050
[2021-03-19 09:19:34 +0000] [14051] [INFO] Booting worker with pid: 14051
[2021-03-19 09:19:34 +0000] [14052] [INFO] Booting worker with pid: 14052
[2021-03-19 09:19:35 +0000] [14053] [INFO] Booting worker with pid: 14053

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

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

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

sudo apt-get install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

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

sudo nano /etc/nginx/sites-available/application.conf
server {
listen 80;
server_name application;

access_log /var/log/nginx/application.access.log;
error_log /var/log/nginx/appliation.error.log;

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

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

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

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

sudo systemctl restart nginx

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

sudo nano /etc/systemd/system/application.service
[Unit]
Description=application.service - A Flask application run with Gunicorn.
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/application/
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:/var/www/application.sock wsgi:app

[Install]
WantedBy=multi-user.target

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

sudo systemctl restart application.service
sudo systemctl daemon-reload

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

curl http://application
HTTP/1.1 200 OK
Server: Werkzeug/0.16.1 Python/3.8.5)
Date: Fri, 19 Mar 2021 10:00:39 GMT
Content-Type: text/html
Content-Length: 25
Last-Modified: Fri, 19 Mar 2021 09:22:47 GMT

Заключение

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

Exit mobile version