как развернуть flask приложение на сервере

Краткая история о том, как развернуть веб-сервер Flask в docker контейнере

как развернуть flask приложение на сервере. Смотреть фото как развернуть flask приложение на сервере. Смотреть картинку как развернуть flask приложение на сервере. Картинка про как развернуть flask приложение на сервере. Фото как развернуть flask приложение на сервере

Для начала необходимо установить Docker Engine по одной из этих инструкций

Поздравляю! Вы проделали треть работы

Давайте создадим структуру нашего проекта.

В файле requirements.txt у нас будут прописаны, скачиваемые для проекта библиотеки.

В main.py содержится простенький сервер для проверки работоспособности контейнера.

Всё готово, осталось только запустить командой docker-compose up из директории с файлом docker-compose.yml.

Сервер на ПРОКАЧКУ

Круто! Теперь у нас есть веб-сервер, который развёрнут при помощи контейнеров, но этого всё ещё мало. Нам нужна более серьёзная архитектура, как у крутых проггеров. Давайте её прокачаем!

Добавим к нашему проекту gunicorn для будущего распределения нагрузки.

requirements.txt

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

Как вы наверняка заметили, в структуру добавились файл settings.ini, папка для инициализации нашего приложения и страничка modules/hello_world.py.

Обо всём по порядку.

Инициализация приложения

В файл app/__init__.py импортируем библиотеки. Заранее импортируем наши компоненты, которые опишем чуть ниже.

Создадим функцию, которая будет создавать наше приложение.

В функции инициализируем пути к модулям(routes), подключим файл с конфигом и обновим конфигурацию приложения.

В конечном итоге, файл app/__init__.py выглядит так.

Теперь можно и переписать app/main.py.

После всех изменений с инициализацией приложения нужно поменять в docker-compose.yml команду запуска приложения.

Конфигурационный файл

Во время разработки в приложении частенько, могут встречаться, данные вроде паролей, адресов, портов, токенов и прочих секретных вещей, которые нельзя оставлять в коде. Для этого всё выносится в отдельный файл (который, конечно же, никуда не выкладывается :))

За инициализацию конфига будет отвечать config.py.

Прорубаем путь до вашей странички

Для начала, создадим страничку в файле modules/hello_world.py.

После того, как создали новый модуль приложения, необходимо сказать Flask`у, где он располагается (зарегистрировать модуль). Здесь и нужен файл routes.py.

Источник

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

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

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

Что такое VPS?

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

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

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

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

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

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

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

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

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

Таким образом, 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, будут иметь несколько серверов, работающих на разных операционных системах, как показано на рисунке

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

Источник

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

Flask – это микрофреймворк для быстрой разработки веб-приложений, написанный в Python и основанный на библиотеке Werkzeug and шаблонизаторе Jinja2.

Требования

Для выполнения руководства нужно предварительно установить Apache. Подробнее об этом можно прочесть здесь.

1: Установка и включение mod_wsgi

WSGI (или Web Server Gateway Interface) – это интерфейс взаимодействия веб-серверов и веб-приложений Python. Mod_wsgi – это модуль Apache для обслуживания приложений Flask.

Откройте терминал и введите команду для установки mod_wsgi:

sudo apt-get install libapache2-mod-wsgi python-dev

Чтобы включить mod_wsgi, запустите:

2: Создание приложения Flask

Теперь нужно создать приложение Flask и поместить его в каталог /var/www.

Перейдите в каталог /var/www:

Создайте структуру каталогов для приложения при помощи команды mkdir.

Примечание: замените условное имя приложения FlaskApp именем своего приложения.

Создайте исходный каталог при помощи следующей команды:

sudo mkdir FlaskApp

Откройте этот каталог:

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

sudo mkdir FlaskApp

Откройте этот каталог и создайте в нём два подкаталога по имени static и templates:

cd FlaskApp
sudo mkdir static templates

Теперь структура каталога имеет такой вид:

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

sudo nano __init__.py

Внесите в этот файл следующий код:

from flask import Flask
app = Flask(__name__)
@app.route(«/»)
def hello():
return «Hello, I love Digital Ocean!»
if __name__ == «__main__»:
app.run()

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

3: Установка Flask

Теперь нужно создать виртуальное окружение (virtualenv, или virtual environment), чтобы изолировать приложение и его зависимости от основной системы. Изменения в виртуальном окружении не будут влиять на настройки системы облачного сервера.

Итак, чтобы создать виртуальное окружение для приложения Flask, нужно сначала установить virtualenv и Flask при помощи pip.

Примечание: Если менеджер пакетов pip еще не установлен, установите его при помощи команды:

sudo apt-get install python-pip

Чтобы установить инструмент virtualenv, введите:

sudo pip install virtualenv

При помощи следующей команды можно создать виртуальную среду для приложения (замените условное имя venv именем своей виртуальной среды):

sudo virtualenv venv

Теперь нужно включить виртуальное окружение и установить в него Flask:

source venv /bin/activate
sudo pip install Flask

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

sudo python __init__.py

Если всё настроено правильно, на экране должно появиться сообщение:

Running on http://localhost:5000/

Running on http://127.0.0.1:5000/

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

4: Настройка виртуального хоста

Введите в терминал:

sudo nano /etc/apache2/sites-available/ FlaskApp

В этот файл внесите следующий код. В строке ServerName укажите доменное имя или IP-адрес сервера.

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

Включите виртуальный хост:

sudo a2ensite FlaskApp

Внесите в файл следующий код:

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,»/var/www/ FlaskApp /»)
from FlaskApp import app as application
application.secret_key = ‘Add your secret key’

На данном этапе структура каталогов имеет такой вид:

6: Перезапуск Apache

Перезапустите Apache при помощи следующей команды:

sudo service apache2 restart

На экране может появиться сообщение:

Could not reliably determine the VPS’s fully qualified domain name, using 127.0.0.1 for ServerName

Это просто предупреждение, получить доступ к виртуальной машине можно без каких-либо дальнейших проблем. Для просмотра приложения откройте в браузере домен или IP-адрес, указанный в настройках виртуального хоста.

Источник

Мега-Учебник Flask, Часть XVII: Развертывание под Linux

(издание 2018)

Miguel Grinberg

как развернуть flask приложение на сервере. Смотреть фото как развернуть flask приложение на сервере. Смотреть картинку как развернуть flask приложение на сервере. Картинка про как развернуть flask приложение на сервере. Фото как развернуть flask приложение на сервереТуда Сюда как развернуть flask приложение на сервере. Смотреть фото как развернуть flask приложение на сервере. Смотреть картинку как развернуть flask приложение на сервере. Картинка про как развернуть flask приложение на сервере. Фото как развернуть flask приложение на сервере

Это семнадцатая часть серии Мега-учебников Flask, в которой я собираюсь развернуть микроблог на сервере Linux.

Под спойлером приведен список всех статей этой серии 2018 года.

Примечание 1: Если вы ищете старые версии данного курса, это здесь.

Примечание 2: Если вдруг Вы захотели бы выступить в поддержку моей(Мигеля) работы, или просто не имеете терпения дожидаться статьи неделю, я (Мигель Гринберг)предлагаю полную версию данного руководства(на английском языке) в виде электронной книги или видео. Для получения более подробной информации посетите learn.miguelgrinberg.com.

Эта глава — важная веха в жизни моего приложения Microblog, поскольку пришла пора обсудить, как оно может быть развернуто на рабочем сервере для доступа реальным пользователям.

Тема развертывания обширна, и по этой причине в рамках одной главы невозможно охватить все возможные варианты. Эта глава посвящена изучению традиционных вариантов хостинга, и в качестве объектов исследования я собираюсь использовать выделенный Linux-сервер под управлением Ubuntu, а также широко распространенный mini-computer Raspberry Pi. О других вариантах, таких как развертывание облаков и контейнеров, я расскажу в последующих главах.

Традиционный хостинг

Когда я говорю о «традиционном хостинге», я имею в виду, что приложение устанавливается вручную или через скриптовый установщик на штатный сервер. Процесс включает установку приложения, его зависимостей и production scale web server плюс настройку системы безопасности.

Первый вопрос, который нужно задать при развертывании собственного проекта — где найти сервер. В наши дни существует множество недорогих услуг хостинга. Например, за 5$ в месяц Digital Ocean, Linode или Amazon Lightsail сдадут вам в аренду виртуальный Linux-сервер (VPS) для проведения экспериментов по развертыванию. (Linode и Digital Ocean предоставляют своим серверам начального уровня 1 ГБ оперативной памяти, в то время как Amazon предоставляет только 512 МБ). Если вы предпочитаете попрактиковаться, не тратя денег, то Vagrant и VirtualBox-это два инструмента, которые в сочетании позволяют создать виртуальный сервер, подобный платному, на вашем собственном компьютере.

Что касается выбора операционной системы, то с технической точки зрения, это приложение может быть развернуто в любой из основных операционных систем, список, который включает в себя большое количество дистрибутивов Linux и BSD с открытым исходным кодом, а также коммерческую ОС X и Microsoft Windows (хотя OS X — гибридный вариант open-source/commercial, поскольку он основан на Darwin, производной BSD с открытым исходным кодом).

Поскольку ОС X и Windows являются настольными операционными системами, которые не оптимизированы для работы в качестве серверов, я собираюсь сразу отказаться от таких кандидатов. Выбор между операционной системой Linux или BSD во многом основывается на предпочтениях, поэтому я собираюсь выбрать самый популярный из двух, которой является Linux. Что касается дистрибутивов Linux, я думаю будет справедливо совершить выбор по популярности и продолжить с Ubuntu.

Сервер Ubuntu

Если вы заинтересовлись в этом развертывании вместе со мной, то вам, очевидно, понадобится сервер для работы. Я порекомендую вам два варианта приобретения сервера, один платный и один бесплатный. Если вы готовы потратить немного денег, вы можете получить учетную запись в Digital Ocean, Linode или Amazon Lightsail и создать виртуальный сервер Ubuntu 16.04. Вам будет достаточно использовать самый маленький серверный вариант, который на сегодняшний день, когда я пишу эту фразу, стоит 5 долларов США в месяц для всех трех поставщиков из приведенного выше перечня. Оплата почасовая, поэтому, если вы создадите сервер, поиграйте с ним в течение нескольких часов, а затем удалите его, вы заплатите только центами.

Бесплатная альтернатива основана на виртуальной машине, которую вы можете запускать на своем собственном компьютере. Чтобы использовать эту опцию, установите Vagrant и VirtualBox на свой компьютер, а затем создайте файл с именем Vagrantfile для описания спецификаций вашей виртуальной машины со следующим содержимым:

Vagrantfile: Vagrant configuration.

Этот файл настраивает сервер Ubuntu 16.04 с 1 ГБ ОЗУ, с которого вы сможете получить доступ с хост-компьютера по IP-адресу 192.168.33.10. Чтобы создать сервер, выполните следующую команду:

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

Использование SSH-клиента

Ваш сервер консольный, поэтому у вас не будет рабочего стола, как на вашем собственном компьютере. Вы должны будете подключиться к своему серверу через SSH-клиент и работать с ним через командную строку. Если вы используете Linux или Mac OS X, скорее всего, OpenSSH уже установлен. Если вы используете Microsoft Windows, Cygwin, Git и Windows Subsystem for Linux, то они то же предоставляют возможность использования OpenSSH, так что вы можете установить любой из этих вариантов.

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

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

Если вы используете Vagrant VM, вы можете открыть сеанс терминала с помощью команды:

Если вы используете Windows и Vagrant VM, обратите внимание, что вам нужно будет запустить указанную выше команду из оболочки, которая может вызывать команду ssh из OpenSSH.

Логин без пароля (password-less)

Вы можете пропустить этот раздел если используете Vagrant VM, поскольку ваша виртуальная машина настроена правильно, чтобы использовать учетную запись, отличную от root, с именем ubuntu без автоматического пароля от Vagrant.

Если вы используете виртуальный сервер, рекомендуется создать обычную учетную запись пользователя для выполнения своей работы по развертыванию и настроить эту учетную запись для входа в систему без использования пароля (password-less), что поначалу может показаться неудачным решением, но вы, увидите, что это не только более удобно, но и более безопасно.

Я собираюсь создать учетную запись пользователя с именем ubuntu (вы можете использовать другое имя, если хотите). Чтобы создать эту учетную запись, войдите в корневую учетную запись своего сервера с помощью инструкций ssh ​​из предыдущего раздела, а затем введите следующие команды, чтобы создать пользователя, дать ему sudo полномочия и, наконец, переключиться на него:

Теперь я собираюсь настроить эту новую учетную запись ubuntu на использование аутентификации public key, чтобы вы могли войти в систему без ввода пароля.

Если в списке каталогов есть файлы с именем id_rsa и id_rsa.pub, как указано выше, значит у вас уже есть ключ. Если у вас нет этих двух файлов или вообще нет каталога

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

Это приложение предложит вам ввести несколько значений, для которых я рекомендую вам принять значения по умолчанию, нажав Enter на всех приглашениях. Если вы знаете, что вы делаете, и хотите сделать иначе, то, как говориться, флаг вам в руки.

После выполнения этой команды у вас должны быть два файла, перечисленные выше. Файл id_rsa.pub-это ваш public key-открытый ключ, файл, который вы предоставляете третьим лицам для идентификации. Файл id_rsa-это ваш private key-приватный ключ, которым ни с кем делится не надо.

Теперь необходимо настроить открытый ключ в качестве authorized host на сервере. Распечатайте свой открытый ключ на экране терминала, который вы открыли на своем компьютере:

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

Теперь password-less должен работать. Идея состоит в том, что ssh на вашем компьютере идентифицирует себя на сервере, выполняя криптографическую операцию, требующую секретного ключа. Затем сервер проверяет, что операция действительна с использованием открытого ключа.

На этот раз вам не нужно вводить пароль!

Защита сервера

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

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

Третье изменение, которое надо сделать — установить брандмауэр. Это программное обеспечение, которое блокирует доступ к серверу на порты, которые не разрешены явно:

Эти команды устанавливают UFW, простенький брандмауэр и настраивают его на разрешение только внешнего трафика на портах 22 (SSH), 80 (http) и 443 (HTTPS). Любые другие порты будут закрыты.

Установка Базовых Зависимостей

Если вы следовали моим советам и установили сервер на Ubuntu 16.04, то у вас уже есть система с полной поддержкой Python 3.5, который я собираюсь использовать для развертывания.

Итак, считаем, что базовый интерпретатор Python предварительно установлен на вашем сервере, но есть некоторые дополнительные пакеты, которые, скорее всего, отсутствуют, а также есть несколько других пакетов за пределами Python, которые будут полезны при создании надежного, готового работе развертыванию. Для сервера базы данных я собираюсь переключиться с SQLite на MySQL. postfix — это агент передачи почты, который я буду использовать для отправки электронной почты. Инструмент supervisor будет следить за процессом сервера Flask и автоматически перезапускать его, если он когда-либо упадет, или если сервер перезагрузится. Сервер nginx будет принимать все запросы, поступающие из вне, и перенаправлять их в приложение. Наконец, я собираюсь использовать git в качестве инструмента для загрузки приложения непосредственно из своего репозитория git.

Эти установки запускаются в основном без присмотра, но в какой-то момент, на третьем оператор установки, вам будет предложено выбрать пароль root для службы MySQL, и ещё будет задано несколько вопросов относительно установки пакета postfix, в ответах на которые вы можете принять значения по умолчанию.

Следует также отметить, что установки postfix по умолчанию, вероятно, недостаточно для отправки электронной почты в рабочей среде. Чтобы избежать спама и вредоносных писем, многим серверам требуется, чтобы сервер отправителя идентифицировал себя с помощью расширений безопасности, что означает, по крайней мере, вы должны иметь доменное имя, связанное с вашим сервером. Если вы хотите узнать, как полностью настроить почтовый сервер, чтобы он прошел стандартные тесты безопасности, см. Следующие руководства по Digital Ocean:

Установка приложения

Теперь я собираюсь использовать git для загрузки исходного кода Microblog из моего репозитория GitHub. Я бы поорекомендовал вам почитать git for beginners, если Вы не знакомы с системой управления версиями git.

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

Теперь мне нужно создать виртуальную среду и заполнить ее всеми зависимостями пакета, которые я для удобства сохранил в файле requirements.txt в главе 15:

Мне нужно создать файл .env со всеми необходимыми переменными среды:

Этот файл .env слегка похож на пример, который я показал в главе 15, но я использовал случайную строку для SECRET_KEY. Для генерации случайной строки, я использовал следующую команду:

Для переменной DATABASE_URL я определил URL MySQL. Я покажу вам, как настроить базу данных в следующем разделе.

Мне нужно установить переменную среды FLASK_APP в точку входа приложения, чтобы команда flask работала, но эта переменная должна быть определена до анализа файла .env, поэтому её необходимо установить вручную. Чтобы избежать необходимости проделывать это каждый раз, я собираюсь добавить её в нижнюю часть

И теперь, когда команда flask функциональна, я могу скомпилировать языковые переводы:

Настройка MySQL

Обратите внимание, что вам нужно будет ввести root-пароль MySQL, который вы выбрали при установке MySQL, чтобы получить доступ к командной строке MySQL.

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

Если конфигурация базы данных правильная, можно запускать миграции базы данных, создающие все таблицы:

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

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

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

Аргумент microblog:app сообщает gunicorn, как загрузить экземпляр приложения. Имя перед двоеточием-это модуль, содержащий приложение, А имя после двоеточия-это имя этого приложения.

Хотя gunicorn очень прост в настройке, запуск из командной строки на самом деле не является хорошим решением для рабочего сервера. Я хочу, чтобы он работал в фоновом режиме и находился под постоянным контролем, потому что если по какой-либо причине сервер падает и выходит, хотелось бы убедиться, что новый сервер автоматически запустится, чтобы занять его место. Кроме того, при перезагрузке компьютера, сервер должен запускаться автоматически, без необходимости входить в систему и запускать все самостоятельно. Я собираюсь использовать пакет supervisor, который я установил выше для этих целей.

Утилита supervisor использует файлы конфигурации, которые сообщают ей, какие программы отслеживать и как перезапускать их при необходимости. Файлы конфигурации должны храниться в /etc/supervisor/conf.d. Вот файл конфигурации для Микроблога, который я собираюсь назвать microblog.conf:

/etc/supervisor/conf.d/microblog.conf: Supervisor configuration.

После записи этого файла конфигурации необходимо перезагрузить службу супервизора для его импорта:

И точно так же, веб-сервер gunicorn должен быть запущен и проверен!

Настройка Nginx

Сервер приложений microblog на базе gunicorn теперь работает на частном порту 8000. То, что мне нужно сделать сейчас, чтобы предоставить приложение внешнему миру, — это включить мой общедоступный веб-сервер на портах 80 и 443, два порта, которые я открыл на брандмауэре для обработки веб-трафика приложения.

Я хочу, чтобы это было безопасное развертывание, поэтому я собираюсь настроить порт 80 для пересылки всего трафика на порт 443, который будет зашифрован. Итак, я собираюсь начать с создания SSL-сертификата. Сейчас я собираюсь создать self-signed SSL certificate, который подходит для тестирования всего, но не подходит для реального развертывания, потому что веб-браузеры будут предупреждать пользователей, что сертификат не был выдан доверенным центром сертификации. Команда для создания сертификата SSL для микроблога:

Чтобы веб-сайт обслуживался nginx, необходимо написать для него файл конфигурации. В большинстве установок nginx этот файл должен находиться в каталоге /etc/nginx/sites-enabled directory. Nginx устанавливает тестовый сайт в этом месте, который мне не нужен, поэтому я собираюсь начать с его удаления:

Ниже вы можете увидеть конфигурационный файл nginx для Microblog, который входит в /etc/nginx/sites-enabled/microblog:

/etc/nginx/sites-enabled/microblog: Nginx configuration.

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

После добавления этого файла вам нужно передать nginx инструкцию по перезагрузке конфигурации, для его активации:

Теперь приложение должно быть развернуто. В веб-браузере можно ввести IP-адрес сервера (или 192.168.33.10, если вы используете виртуальную машину Vagrant), который будет подключаться к приложению. Поскольку вы используете самозаверяющий сертификат, вы получите предупреждение от веб-браузера, которое вам придется отклонить.

После завершения развертывания с приведенными выше инструкциями для собственных проектов настоятельно рекомендуется заменить самозаверяющий сертификат реальным, чтобы браузер не предупреждал пользователей о вашем сайте. Для этого вам сначала нужно купить доменное имя и настроить его на IP-адрес вашего сервера. После того, как у вас появится домен, вы можете запросить бесплатный Let’s Encrypt сертификат SSL. Я написал подробную статью в своем блоге о том, как запустить Приложение Flask через HTTPS.

Развертывание обновлений приложений

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

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

Raspberry Pi Хостинг

Raspberry Pi-это недорогой революционный маленький компьютер Linux, который имеет очень низкое энергопотребление, поэтому это идеальное устройство для размещения домашнего веб-сервера, который может быть ОНЛАЙН 24/7, не связывая ваш настольный компьютер или ноутбук. Есть несколько дистрибутивов Linux, которые работают на Raspberry Pi. Мой выбор Raspbian, который является официальным дистрибутивом от Raspberry Pi Foundation.

Чтобы подготовить Raspberry Pi, я собираюсь установить свежий выпуск Raspbian. Я буду использовать версию raspbian Stretch Lite в сентябре 2017 года, но к тому времени, когда вы прочтете это, скорее всего, появятся новые версии, поэтому проверьте официальную страницу загрузки, чтобы получить самый последний релиз.

Образ Raspbian должен быть установлен на SD-карту, которую вы затем подключаете к Raspberry Pi, чтобы он мог загружаться с ним. Инструкции по копированию образа Raspbian на SD-карту из Windows, Mac OS X и Linux доступны на сайте Raspberry Pi.

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

Как и Ubuntu, Raspbian является производной Debian, поэтому приведенные выше инструкции для Ubuntu Linux по большей части работают так же, как и для Raspberry Pi. Однако вы можете пропустить некоторые шаги, если планируете запускать небольшое приложение в домашней сети без внешнего доступа. Например, вам может не понадобиться брандмауэр или логины без пароля. И вы можете использовать SQLite вместо MySQL на таком маленьком компьютере. Вы можете отказаться от использования nginx и просто заставить сервер gunicorn слушать запросы клиентов напрямую. Вам, вероятно, понадобится только один процесс gunicorn. Служба супервизора полезна для обеспечения того, чтобы приложение всегда было в порядке, поэтому я советовал бы использовать его и на Raspberry Pi.

как развернуть flask приложение на сервере. Смотреть фото как развернуть flask приложение на сервере. Смотреть картинку как развернуть flask приложение на сервере. Картинка про как развернуть flask приложение на сервере. Фото как развернуть flask приложение на сервереТуда Сюда как развернуть flask приложение на сервере. Смотреть фото как развернуть flask приложение на сервере. Смотреть картинку как развернуть flask приложение на сервере. Картинка про как развернуть flask приложение на сервере. Фото как развернуть flask приложение на сервере

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *