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

Настройте Python 3, Flask и Gunicorn в Ubuntu 18.04 LTS

Инструкции по настройке Ubuntu 18.04 Bionic Beaver с Python 3, Flask и Green Unicorn (Gunicorn).

Автор оригинала: Matt Makai.

Последняя версия долгосрочной поддержки Ubuntu Linux (LTS) версия операционной системы 18.04 и был выпущен в апреле 2018 года. Обновление 18.04 носит кодовое название “Bionic Beaver” и включает Python 3 по умолчанию. Однако есть множество зависимости, которые вам нужно будет установить, чтобы настроить этот выпуск как среда разработки.

В этом руководстве мы настроим Python 3.6 с системой разработки. пакеты для запуска нового проекта веб-приложения Flask и запустите его с помощью Зеленого Единорога (Gunicorn).

Наши инструменты

Наш проект будет использовать выпуск Ubuntu 18.04 вместе с несколькими другими библиотеки. Обратите внимание: если вы используете старую версию 16.04 LTS, там это также руководство, которое проведет вас через настройку этой версии в качестве среды разработки.

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

Если вы работаете в Mac OS X или Windows, используйте программное обеспечение для виртуализации, например как Parallels или VirtualBox с Файл .iso Ubuntu . Либо amd64, либо Версия i386 для 18.04 будет работать. Я использую amd64 для разработки и тестирования в этом руководстве.

Когда вы загружаетесь на рабочий стол Ubuntu, вы должны увидеть такой экран.

Мы готовы настроить нашу среду разработки.

Системные пакеты

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

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

python3 --version
which python3

Версия Python должна быть 3.6.5, а расположение – /usr/bin/python3 .

Наша установка Ubuntu требует нескольких системных пакетов для разработки а не просто запускать сценарии Python. Выполните следующую команду apt-get и введите свой пароль sudo , чтобы разрешить ограниченный доступ к системе.

sudo apt-get install python3-dev python3-pip python3-virtualenv

Мы должны увидеть следующее приглашение с запросом доступа sudo . Введите y , чтобы позвольте системному менеджеру пакетов завершить установку.

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-4.15.0-20 linux-headers-4.15.0-20-generic
  linux-image-4.15.0-20-generic linux-modules-4.15.0-20-generic
  linux-modules-extra-4.15.0-20-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  dh-python libexpat1-dev libpython3-dev libpython3.6-dev python3-setuptools
  python3-wheel python3.6-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  dh-python libexpat1-dev libpython3-dev libpython3.6-dev python3-dev
  python3-pip python3-setuptools python3-virtualenv python3-wheel
  python3.6-dev
0 upgraded, 10 newly installed, 0 to remove and 11 not upgraded.
Need to get 3,617 kB/3,661 kB of archives.
After this operation, 20.2 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Менеджер пакетов сделает всю грязную работу и должен сообщать, когда установка успешно завершена.

(...clipped a bunch of installation lines for brevity...)
Unpacking python3-wheel (0.30.0-0.2) ...
Setting up python3-wheel (0.30.0-0.2) ...
Setting up python3-virtualenv (15.1.0+ds-1.1) ...
Setting up python3-pip (9.0.1-2.3~ubuntu1) ...
Setting up libexpat1-dev:amd64 (2.2.5-3) ...
Processing triggers for man-db (2.8.3-2) ...
Setting up python3-setuptools (39.0.1-2) ...
Setting up dh-python (3.20180325ubuntu2) ...
Setting up libpython3.6-dev:amd64 (3.6.5-3) ...
Setting up python3.6-dev (3.6.5-3) ...
Setting up libpython3-dev:amd64 (3.6.5-3) ...
Setting up python3-dev (3.6.5-3) ...

Необходимые нам пакеты теперь установлены. Мы можем продолжить установку нашего Зависимости, специфичные для Python.

Виртуальная среда

Мы установили virtualenv и pip для обработки наших зависимости приложений. Теперь мы можем использовать их для загрузки и установки Flask и Gunicorn.

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

# make sure pip and setuptools are the latest version
pip3 install --upgrade pip setuptools
# the tilde ("~") specifies the user's home directory, such as "/home/matt"
cd ~
mkdir venvs
# specify the system python3 installation
python3 -m venv venvs/flask1804

Активируйте virtualenv.

source ~/venvs/flask1804/bin/activate

Наш запрос изменится, когда будет активирован virutalenv.

Теперь наш virtualenv активирован с Python 3. Мы можем установить любой необходимые нам зависимости, такие как Flask и Gunicorn.

Настой и Gunicorn

Мы собираемся использовать pip в нашем новом virtualenv, но это хороший идея обновить его до последней версии. Мы также должны установить Пакет wheel для удаления предупреждений об установке, когда pip пытается используйте колеса Python , которые являются новейшими стандарт в довольно длинной строке дистрибутива Python модели.

pip install --upgrade pip
pip install wheel

Теперь мы можем установить Flask и Green Unicorn с помощью команды pip .

pip install flask gunicorn

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

(flask1804) [email protected]:~$ pip install flask gunicorn
Collecting flask
  Using cached https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl
Collecting gunicorn
  Using cached https://files.pythonhosted.org/packages/55/cb/09fe80bddf30be86abfc06ccb1154f97d6c64bb87111de066a5fc9ccb937/gunicorn-19.8.1-py2.py3-none-any.whl
Collecting click>=5.1 (from flask)
  Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl
Collecting Werkzeug>=0.14 (from flask)
  Using cached https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl
Collecting itsdangerous>=0.24 (from flask)
  Using cached https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz
Collecting Jinja2>=2.10 (from flask)
  Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask)
  Using cached https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz
Building wheels for collected packages: itsdangerous, MarkupSafe
  Running setup.py bdist_wheel for itsdangerous ... done
  Stored in directory: /home/matt/.cache/pip/wheels/2c/4a/61/5599631c1554768c6290b08c02c72d7317910374ca602ff1e5
  Running setup.py bdist_wheel for MarkupSafe ... done
  Stored in directory: /home/matt/.cache/pip/wheels/33/56/20/ebe49a5c612fffe1c5a632146b16596f9e64676768661e4e46
Successfully built itsdangerous MarkupSafe
Installing collected packages: click, Werkzeug, itsdangerous, MarkupSafe, Jinja2, flask, gunicorn
Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7 flask-1.0.2 gunicorn-19.8.1 itsdangerous-0.24

Создайте новый каталог с именем flask1804 в своем домашнем каталоге (не в подкаталоге venvs ), в котором будет храниться наш тестовый проект Flask. Измените каталог в новую папку.

mkdir ~/flask1804
cd ~/flask1804

Создайте новый файл с именем __init__.py в нашем каталоге flaskproj , чтобы мы можем протестировать, чтобы убедиться, что Flask работает правильно. Я обычно использую Vim, но Emacs и другие среды разработки отлично работают как хорошо.

В __init__.py напишите следующий код.

from flask import Flask, Response


app = Flask(__name__)

@app.route("/")
def index():
    return Response("It works!"), 200

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

Мы могли бы запустить наше приложение с сервером разработки Flask, используя python __init__.py команда. Вместо этого запустите приложение Flask с Gunicorn. Перейдите в каталог над папкой flask1804 в нашем если мы можем ввести cd ~ , а затем использовать команду gunicorn :

gunicorn flask1804.app:app

Мы должны увидеть:

[2018-06-15 15:54:31 -0400] [5174] [INFO] Starting gunicorn 19.8.1
[2018-06-15 15:54:31 -0400] [5174] [INFO] Listening at: http://127.0.0.1:8000 (5174)
[2018-06-15 15:54:31 -0400] [5174] [INFO] Using worker: sync
[2018-06-15 15:54:31 -0400] [5177] [INFO] Booting worker with pid: 5177

Отлично, теперь мы можем вызвать наше приложение оболочки Flask в веб-браузере по адресу адрес localhost: 8000 или 127.0.0.1:8000 .

Теперь вы готовы к настоящей разработке Flask!

Готов к кодированию

Это обеспечивает быструю настройку для начала работы с 18.04 LTS. разработка приложений Flask с Сервер Gunicorn WSGI.

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

  • Ответ на текстовые SMS-сообщения с помощью Python и Flask
  • Как добавить размещенный мониторинг в веб-приложения Flask)

В качестве альтернативы вы также можете определить, что кодировать дальше в вашем Python проект, прочитав Страница полного содержания Python.

Вопросов? Свяжитесь со мной через Twitter @fullstackpython или @mattmakai . Я также на GitHub с имя пользователя mattmakai .

Что-то не так с этим сообщением? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос.