Развертывание в производство

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

Сборка и установка

Когда вы хотите развернуть свое приложение в другом месте, вы создаете дистрибутивный файл. Текущим стандартом для дистрибутивов Python является формат wheel с расширением .whl. Убедитесь, что библиотека wheel установлена первой:

$ pip install wheel

Запуск setup.py с Python дает вам инструмент командной строки для выполнения команд, связанных со сборкой. Команда bdist_wheel выполнит сборку дистрибутивного файла wheel.

$ python setup.py bdist_wheel

Вы можете найти файл в папке dist/flaskr-1.0.0-py3-none-any.whl. Имя файла имеет формат {имя проекта}-{версия}-{python tag} -{abi tag}-{platform tag}.

Скопируйте этот файл на другую машину, set up a new virtualenv, затем установите файл с помощью pip.

$ pip install flaskr-1.0.0-py3-none-any.whl

Pip установит ваш проект вместе с его зависимостями.

Поскольку это другая машина, необходимо снова запустить init-db для создания базы данных в папке экземпляра.

$ flask --app flaskr init-db

Когда Flask обнаруживает, что он установлен (не в режиме редактирования), он использует другой каталог для папки экземпляра. Вместо этого вы можете найти ее по адресу venv/var/flaskr-instance.

Настройка секретного ключа

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

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

$ python -c 'import secrets; print(secrets.token_hex())'

'192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

Создайте в папке экземпляра файл config.py, из которого фабрика будет считывать данные, если он существует. Скопируйте в него сгенерированное значение.

venv/var/flaskr-instance/config.py
SECRET_KEY = '192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

Здесь вы также можете задать любую другую необходимую конфигурацию, хотя SECRET_KEY является единственной, необходимой для Flaskr.

Запуск с производственным сервером

При публичном запуске, а не при разработке, не следует использовать встроенный сервер разработки (flask run). Сервер разработки предоставляется Werkzeug для удобства, но не предназначен для обеспечения особой эффективности, стабильности или безопасности.

Вместо этого используйте рабочий WSGI-сервер. Например, чтобы использовать Waitress, сначала установите его в виртуальной среде:

$ pip install waitress

Вам нужно сообщить Waitress о вашем приложении, но он не использует --app, как это делает flask run. Вам нужно сказать ему импортировать и вызвать фабрику приложений, чтобы получить объект приложения.

$ waitress-serve --call 'flaskr:create_app'

Serving on http://0.0.0.0:8080

Список различных способов размещения вашего приложения приведен в Развертывание в производство. Waitress - это всего лишь пример, выбранный для учебного пособия, поскольку он поддерживает как Windows, так и Linux. Существует множество других серверов WSGI и вариантов развертывания, которые вы можете выбрать для своего проекта.

Продолжить Продолжайте развиваться!.

Вернуться на верх