Запуск Flask с интерпретатором Python удаленно через SSH

задняя часть Python внешний интерфейс SSH Программа перевода самородков Flask
Запуск Flask с интерпретатором Python удаленно через SSH

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

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

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

наше приложение

Я слишком ленив, поэтому в качестве примера воспользуюсь веб-приложением, которое сделал в прошлом году. Приложение представляет собой очень простую старомодную систему сообщений. В прошлогоднем блоге я использовал Docker Compose для описания среды, включающей службу Python и базу данных PostgreSQL.

во-первыхклонировать репозиторий, затем переключитесь на ветку «с базой данных». После открытия проекта нам нужно настроить сервер. Я использовал экземпляр AWS EC2, но вы можете использовать любую другую среду Linux (включая Raspberry Pi).

Чтобы настроить интерпретатор, откройте «Настройки»/«Настройки проекта» и используйте значок шестеренки, чтобы добавить интерпретатор:

添加解释器

Выберите SSH слева. Если вы не видите SSH, сначала убедитесь, что вы используете PyCharm Professional 2018 или более позднюю версию. Затем просто следуйте инструкциям, чтобы подключиться к ящику SSH:

连接到 SSH

В этом уроке мы в основном будем использовать значения по умолчанию. Единственным исключением является то, что в вашей среде Linux установлен только Python 3, и у вас нет /usr/bin/python, связанного с этой версией. Учитывая текущую версию AWS, Ubuntu 16.04 AMI, мы удостоверимся, что путь интерпретатора изменен:

添加 SSH 解释器 —— 第二步

Как только мы настроим наш интерпретатор, мы можем запустить наш код. Например, открыв консоль Python, вы можете запустить код на удаленной консоли:

Python 远程控制台

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

Настройте нашу среду

Docker Compose очень удобен, потому что позволяет очень лаконично указывать и настраивать сервер. Если мы хотим работать на обычном компьютере с Linux, нам нужно самостоятельно настроить эту конфигурацию. Итак, начнем со скачивания PostgreSQL.

Откройте сеанс SSH, или перейдите в Инструменты/Сеансы SSH, или используйте Ctrl+Shift+A, чтобы найти действие «Начать сеанс SSH»:

开启 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 Output

Мы можем использовать 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:

Flask Run Configuration

Если вы используете этот код на AWS или аналогичном провайдере, вам может потребоваться открыть порт 5000 в брандмауэре. В AWS вам нужно добавить новое правило в группу безопасности, чтобы разрешить входящий трафик через TCP-порт 5000, начиная с 0.0.0.0/0.

Теперь нажмите кнопку отладки, чтобы запустить Flask:

Flask Starts

Заходим на нашу страницу!

500 Error

Говоря словами Баттерса Стотча: о, гамбургеры. Если мы вернемся к 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 с отладочной конфигурацией и увидеть нашу крутую систему гостевых книг:

Results

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

Если вы заинтересованы в DevOps и хотите узнать больше:Ознакомьтесь с нашими расширенными руководствами по AWS,нашУчебник по малине Piили нашУчебное пособие по созданию Docker. Если есть что-то еще, что вы хотели бы знать, дайте нам знать в комментариях!

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.