- Оригинальный адрес:Running Flask with an SSH Remote Python Interpreter
- Оригинальный автор:Ernst Haagsman
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:Starrier
- Корректор:shisaq
Распространенной причиной ошибок во многих приложениях является то, что среда разработки и рабочая среда различны. Хотя в большинстве случаев невозможно предоставить точную копию в производстве для разработки,Соблюдение баланса между производством и развитиемстоит того.
Большинство приложений развертываются на виртуальной машине Linux того или иного типа. Возможно, вы используете традиционный веб-хостинг, так называемый VPS-хостинг.
Если мы хотим разрабатывать в среде, похожей на нашу производственную среду, как мы можем это сделать? Лучший способ — настроить вторую виртуальную машину для целей разработки. Давайте посмотрим, как PyCharm подключается к среде VPS.
наше приложение
Я слишком ленив, поэтому в качестве примера воспользуюсь веб-приложением, которое сделал в прошлом году. Приложение представляет собой очень простую старомодную систему сообщений. В прошлогоднем блоге я использовал Docker Compose для описания среды, включающей службу Python и базу данных PostgreSQL.
во-первыхклонировать репозиторий, затем переключитесь на ветку «с базой данных». После открытия проекта нам нужно настроить сервер. Я использовал экземпляр AWS EC2, но вы можете использовать любую другую среду Linux (включая Raspberry Pi).
Чтобы настроить интерпретатор, откройте «Настройки»/«Настройки проекта» и используйте значок шестеренки, чтобы добавить интерпретатор:
Выберите SSH слева. Если вы не видите SSH, сначала убедитесь, что вы используете PyCharm Professional 2018 или более позднюю версию. Затем просто следуйте инструкциям, чтобы подключиться к ящику SSH:
В этом уроке мы в основном будем использовать значения по умолчанию. Единственным исключением является то, что в вашей среде Linux установлен только Python 3, и у вас нет /usr/bin/python, связанного с этой версией. Учитывая текущую версию AWS, Ubuntu 16.04 AMI, мы удостоверимся, что путь интерпретатора изменен:
Как только мы настроим наш интерпретатор, мы можем запустить наш код. Например, открыв консоль Python, вы можете запустить код на удаленной консоли:
Прежде чем мы сможем запустить наш скрипт Flask, нам нужно сделать еще несколько вещей.
Настройте нашу среду
Docker Compose очень удобен, потому что позволяет очень лаконично указывать и настраивать сервер. Если мы хотим работать на обычном компьютере с Linux, нам нужно самостоятельно настроить эту конфигурацию. Итак, начнем со скачивания PostgreSQL.
Откройте сеанс SSH, или перейдите в Инструменты/Сеансы SSH, или используйте Ctrl+Shift+A, чтобы найти действие «Начать сеанс SSH»:
Теперь мы можем бежатьsudo apt-get install postgresql
. То же самое верно, если вы экспериментируете с Raspberry Pi. Если мы разрабатываем приложение, документирование того, что мы делаем, гарантирует, что мы сможем правильно воспроизвести среду позже.
Хорошая программа для настройки Linux-машиныAnsible. Используя Ansible, мы можем описать желаемое состояние сервера Linux через файл YAML, а затем использовать инструмент Ansible для применения желаемой конфигурации.
Установите PostgreSQL с Ansible следующим образом:
- hosts: localhost
become: yes
tasks:
- name: Install PostgreSQL
apt:
name: postgresql-9.5
Если мы создадим новый с этимиsetup.yml
файл, PyCharm автоматически загрузит его в место, которое мы настроили во время настройки проекта. По умолчанию это/tmp/
Подпапка. Поэтому сначала мы установим ANSIBLE, перейдем в эту папку, запустим этот файл (называемый Playbook в терминах Ansible). Вы можете реализовать это, выполнив эти команды на сервере (используя сеанс SSH, который вы начали):
sudo apt update && sudo apt install -y ansible
cd /tmp/pycharm*
ansible-playbook ./setup.yml
Взгляните на это, PostgreSQL уже установлен:
Мы можем использовать Ansible, чтобы делать классные вещи, например, настраивать виртуальные среды:
- name: Install pip
apt:
name: python3-pip
- name: Copy requirements
copy:
src: requirements.txt
dest: /tmp/requirements.txt
- name: Install virtualenv
pip:
name: virtualenv
executable: pip3
- name: Set up virtualenv
become: false
pip:
requirements: /tmp/requirements.txt
virtualenv: /home/ubuntu/venv
virtualenv_python: python3
Как только мы добавим эти задачи в playbook (setup.yml) и повторно запустим его, мы сможем перенастроить PyCharm для использования удаленного venv вместо системного интерпретатора нашей среды. Для этого вернитесь в интерфейс настройки интерпретатора. Используйте значок шестеренки, чтобы выбрать «Показать все», затем щелкните карандаш, чтобы отредактировать интерпретатор. Измените виртуальную среду (/home/ubuntu/venv/bin/python
) в пути к исполняемому файлу Python:
Теперь, когда все готово, мы можем запустить Flask для запуска конфигурации. Давайте сначала отредактируем его, чтобы он был доступен из внешнего мира. нам нужно предоставитьhost=0.0.0.0
В качестве дополнительной опции к Flask:
Если вы используете этот код на AWS или аналогичном провайдере, вам может потребоваться открыть порт 5000 в брандмауэре. В AWS вам нужно добавить новое правило в группу безопасности, чтобы разрешить входящий трафик через TCP-порт 5000, начиная с 0.0.0.0/0.
Теперь нажмите кнопку отладки, чтобы запустить Flask:
Заходим на нашу страницу!
Говоря словами Баттерса Стотча: о, гамбургеры. Если мы вернемся к PyCharm, мы увидим трассировку стека в окне отладки, которая показывает, что нам все еще нужно завершить подключение к базе данных.
В приложении Flask для хоста базы данных установлено значение «db» для использования в конфигурации Docker Compose. мы меняем его на127.0.0.1
:
g.db = psycopg2.connect(dbname='flaskapp',
user='flaskapp',
password='hunter2',
host='127.0.0.1')
На самом деле нам также нужно создать базу данных и таблицы. спасибо нашим друзьямAnsible может нам помочь! Чтобы этот блог был кратким, я опущу некоторые подробности. Переключитесь на ветку ansible. Затем выполните следующие SSH-команды:
cd /tmp/pycharm*
ansible-playbook setup.yml
ansible-playbook clean-db.yml
Первый плейбук настраивает учетную запись пользователя PostgreSQL. Второй playbook удалит существующую базу данных и создаст чистую базу данных. В этой базе данных запуститеschema.sql
файл для создания таблиц, необходимых для этого приложения.
Вы также можете использовать PyCharm для запуска команд SQL и проверки базы данных.Прочтите нашу статью о запуске кода на Raspberry Pi, чтобы узнать больше..
The Finish Line
После настройки базы данных мы сможем снова запустить Flask с отладочной конфигурацией и увидеть нашу крутую систему гостевых книг:
Конечно, если бы мы добавили точку останова в код, мы могли бы выбрать ее сейчас. Попробуйте и дайте нам знать, как это работает!
Если вы заинтересованы в DevOps и хотите узнать больше:Ознакомьтесь с нашими расширенными руководствами по AWS,нашУчебник по малине Piили нашУчебное пособие по созданию Docker. Если есть что-то еще, что вы хотели бы знать, дайте нам знать в комментариях!
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.