Рубрики
Без рубрики

Развертывание приложения Flask на VPS

В этой статье мы развернем приложение Flask на виртуальном частном сервере (VPS) с помощью программного обеспечения Apache Webserver и mod_wsgi WSGI.

Автор оригинала: Pankaj Kumar.

В этой статье мы развернем приложение Flask на виртуальном частном сервере (VPS) с помощью программного обеспечения Apache Webserver и mod_wsgi WSGI.

Что такое VPS?

VPS, что означает Виртуальный частный сервер, – это виртуальная машина, продаваемая в качестве услуги различными хостинговыми компаниями. Вы можете думать об этом аналогично аппаратному обеспечению процессора ноутбука, но в сыром виде, т. Е. Без экрана, клавиатуры и т. Д.

Различные компании, такие как Google, Amazon, предоставляют услуги облачных серверов (GCP, AWS и т. Д.). В рамках этой услуги вы можете предоставить в аренду различные серверы, расположенные в разных частях мира. Они взимают с вас плату в зависимости от различных стандартов, таких как используемые часы, загрузка процессора и т. Д.

Использование облачного сервера дает вам несколько преимуществ, таких как:

  • Серверы, работающие 24 часа – С облачными серверами ваше приложение, развернутое на них, будет работать 24 часа. В случае локального хоста(вашего ноутбука) вам нужно поддерживать его в рабочем состоянии в течение 24 часов, что непрактично.
  • Масштабируемость – В случае, если ваше хранилище заполнено, вы можете быстро масштабировать свои сервисы(хранилище, оперативную память и т. Д.) В облаке.
  • Более безопасный – Поскольку все оборудование присутствует в облачном центре, оно более безопасно.
  • Доступность – Вы можете получить доступ к облачному серверу с любого ноутбука или компьютера.

В этом уроке мы будем использовать веб – сервисы AWS- Amazon для развертывания. Вы можете обратиться к любому из поставщиков VPS.

Программное обеспечение, необходимое для запуска приложения в Интернете

Теперь приложение Flask, развернутое на VPS, должно выполнить следующие действия:

  • Размещайте статические файлы, такие как HTML/CSS/JS
  • Обработка Http-запросов
  • Восстановление после сбоев
  • Масштабирование при необходимости

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

  1. Программное обеспечение веб – сервера – Apache, Nginx и т. Д
  2. Сервер приложений интерфейса шлюза веб-сервера (WSGI) – Mod_WSGI, Gunicorn и т. Д
  3. Ваше фактическое веб – приложение – Написано с использованием Flask, Django и т. Д

Здесь требуется веб-сервер | программное обеспечение , подобное Apache, для обработки логики домена, а также для приема HTTP-запросов. Соответствующие запросы затем отправляются в основное веб-приложение(Flask) через сервер приложений WSGI (например, mod_wsgi, Gunicorn и т. Д)

Сервер приложений WSGI обеспечивает интерфейс шлюза между программным обеспечением Apache и приложением Flask. WSGI предназначен для фреймворков, написанных на python (Django/Flask)

Основное использование WSGI заключается в преобразовании запросов в формат , читаемый на python, и отправке их в код приложения (написанный на Flask-python) , который затем выполняет необходимые функции и возвращает веб-страницу ответа.

Таким образом, WSGI работает как шлюз между Apache и приложением Flask.

Давайте рассмотрим их по отдельности

Что такое программное обеспечение веб-сервера?

Основная роль программного обеспечения веб-сервера заключается в размещении веб-сайтов в Интернете. Он действует как посредник между сервером и клиентскими машинами .

Эти программные приложения обрабатывают запросы клиентов, а затем возвращают физические файлы(шаблоны/данные), присутствующие на сервере, и отображают их клиентам.

Примерами программного обеспечения веб-сервера являются Apache, NGINX и т. Д.

В этой статье мы будем использовать хороший старый Apache сервер, на котором размещается почти 47% веб-приложений в Интернете

Что такое сервер приложений mod_wsgi WSGI?

Mod_wsgi – это модуль HTTP-сервера Apache, который предоставляет WSGI совместимый интерфейс для размещения веб-приложений на основе Python в Apache. он поддерживает версии Python 2 и 3.

Он действует как интерфейс между программным обеспечением Apache и нашим приложением Flask, расположенным на облачном сервере.

Развертывание проекта Flask на VPS

Первым шагом является выбор сервера у поставщика VPS. Любые компании, предоставляющие VPS, будут иметь несколько серверов, работающих на разных операционных системах, как показано на рисунке

Серверы AWS

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

Обратите внимание, что на вашем облачном сервере включен HTTP-порт (80) . Порт 80-это порт , который программное обеспечение веб-сервера(Apache и т. Д.) “прослушивает” или получает запросы от веб-клиента.

HTTP-порт AWS

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

Aws

1. Подключение к Облачному серверу с локального компьютера

Мы используем команду ssh для подключения к серверу. Чтобы подключиться к облачному серверу с нашего локального компьютера, выполните следующие команды:

  • Использование Mac или Linux :

В оболочке просто запустите код:

ssh username@

В случае, если вы используете сервер Ubuntu, имя пользователя – ubuntu .

  • Использование Windows

Для Windows мы используем программное обеспечение под названием PuTTY , которое вы можете скачать непосредственно из Интернета. После загрузки введите cloud_IP и нажмите открыть .

шпатлевка

Мой cloud_IP/Public DNS , который я буду использовать для доступа к своему серверу,:

Общедоступный DNS

Для AWS нам также необходимо использовать дополнительный закрытый ключ безопасности. Следовательно, в зависимости от поставщика VPS вам также может потребоваться добавить ключ security_key

Как только это будет сделано, вы войдете в ОС облачного сервера.

Ubuntu

2. Установка необходимых пакетов

Как только сервер будет подключен, он будет похож на новый компьютер ubuntu. Сначала нам нужно установить в него все важные пакеты.

Поэтому выполните следующие команды:

Установка обновлений

sudo apt update
sudo apt upgrade

Всегда обновляйте систему после запуска сервера.

Установка apache2 и mod_wsgi на сервере

Теперь давайте сначала установим Apache2 и пакеты mod_wsgi в системе

sudo apt install apache2
sudo apt install libapache2-mod-wsgi

Чтобы проверить, работает Apache2 или нет, перейдите на общедоступный DNS/IP-адрес вашего облачного сервера. Вы увидите страницу Apache по умолчанию.

Установка python3-pip

Теперь установите python3 и трубу в систему с помощью:

sudo apt install python-pip

Установка колбы и ее расширений

Теперь установите Flask Framework и все другие необходимые Расширения Flask , такие как Flask_SQLAlchemy , Flask_login, | Flask_wtf, и т. Д

sudo pip install flask
sudo pip install flask_sqlalchemy
....
....

Просто установите все расширения колбы, которые вам нужны для вашего проекта колбы.

3. Перенос проекта Flask с локальной машины на облачный сервер

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

mkdir flask_project
cd flask_project

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

Для передачи файла мы используем код

scp -i  -r  ubuntu@:
Передача файлов

В AWS нам также необходимо вставить ключ безопасности. Если у вашего провайдера VPS нет ключа security_key, затем удалите key_path из команды

Свяжите Каталог проекта приложения Flask flask_project , присутствующий в домашнем каталоге, с конфигурациями Apache (присутствующими в каталоге /var/www/html ). Мы делаем это с помощью кода:

sudo ln -sT ~/flask_project /var/www/html/flask_project

4. Кодирование приложения колбы

Внутри папки Flask_project у вас должны быть все файлы Flask – app.py , models.py , Шаблоны и т.д.

Давайте закодируем простое приложение Flask, поэтому в каталоге flask_project создайте файл app.py

sudo nano app.py

и добавьте код:

from flask import Flask

app = Flask(__name__)

@app.route('/blogs')
def blogs():
  return 'Welcome to The Blog App'

@app.route('/blog/')
def blog(id):
  return "The Blog id is {}".format(id)

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

После этого нам теперь нужно создать файл WSGI . Для этого создайте файл .wsgi с тем же именем, что и основной файл приложения Flask. В моем случае это app.wsgi

используя nano app.wsgi , добавьте код:

#flaskapp.wsgi
import sys
sys.path.insert(0, '/var/www/html/flask_project')

from app import app as application

Отлично!! Теперь нам нужно включить mod_wsgi для взаимодействия Apache с приложением Flask.

Для этого перейдите в /etc/apache2/сайты с поддержкой/ :

cd /etc/apache2/sites-enabled/

Откройте файл conf 000-default.conf с помощью текстового редактора nano и ниже DocumentRoot/var/www/html строка, добавьте код:

WSGIDaemonProcess flask_project threads=5
WSGIScriptAlias / /var/www/html/flask_project/app.wsgi


    WSGIProcessGroup flask_project
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all

Файл Conf

Запуск приложения Flask

Вот и все теперь перезагрузите сервер apache:

sudo service apache2 restart

И зайдите в общедоступный DNS, сайт будет запущен и запущен !!

Блоги

Аналогично другому URL-адресу

Блоги1

Идеально!

Вывод

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