- 原文地址:Running Flask with an SSH Remote Python Interpreter
- 原文做者:Ernst Haagsman
- 译文出自:掘金翻译计划
- 本文永久连接:github.com/xitu/gold-m…
- 译者:Starrier
- 校对者:shisaq
许多应用程序中出现 bug 的广泛缘由是开发环境和生产环境不一样。虽然在大多数状况下不可能为开发提供生产环境中的精确副本,但追求生产-开发的均衡是值得的。html
大多数应用程序会被部署到某种类型的 Linux 虚拟机中。或许你正在使用的是传统的 web 主机,即所谓的 VPS 主机。前端
若是咱们想在一个相似于咱们生产环境的环境中进行开发,那咱们如何才能作到这一点呢?最好的方法就是为了开发目的而设置第二个虚拟机。让咱们看看 PyCharm 是如何链接到 VPS 环境。python
我太懒了,因此我将使用本身去年作的一款 web-app 做为示例。该应用程序是一个很是简单的老式留言系统。在去年的博客中,我使用 Dockeer Compose 来描述了一个包含 Python 服务和 PostgreSQL 数据库的环境。android
首先克隆仓库,而后切换到 ‘with-database’ 分支。打开项目以后,咱们须要配置服务器。我使用 AWS EC2 实例,可是你也可使用任何其余的 Linux 环境(包括树莓派)。ios
想要配置解释器,请打开设置/项目设置,并使用齿轮图标添加解释器:git
在左边选择 SSH。若是你没有看到 SSH,首先要确保本身使用的是 PyCharm Professional 2018 或者更高版本。而后,按照指示连接到 SSH 框便可:github
在本教程中,咱们将主要使用默认值。惟一的例外是你的 Linux 环境只安装了 Python 3,并且并无将 /usr/bin/python 链接到该版本。考虑到 AWS 的当前版本 Ubuntu 16.04 AMI,咱们将确保会更改解释器路径:web
咱们配置好解释器后,就能够开始运行代码了。好比,打开 Python 控制台,就能够在远程控制台上运行代码了:sql
在咱们能够运行咱们 Flask 脚本以前,还有一些事情须要咱们处理。docker
Docker Compose 很是方便,由于它容许咱们以很是简洁的方式指定和配置服务器。若是咱们想要在常规 Linux 机器上工做,咱们须要本身处理这个配置。所以,咱们先开始下载 PostgreSQL。
打开 SSH 会话,也能够转到工具/SSH 会话,或者使用 Ctrl+Shift+A 查找 ‘Start SSH session’ 操做:
如今,咱们能够运行 sudo apt-get install postgresql
。若是你正在树莓派上实验,也是如此。若是咱们正在开发一个应用程序,那么记录咱们正在作的事情,能够确保咱们之后正确重现环境。
一款配置 Linux 机器的优秀软件是 Ansible。使用 Ansible,咱们能够经过 YAML 文件来描述 Linux 服务器的所需状态,而后使用 Ansible 工具来应用所需的配置。
用 Ansible 安装 PostgreSQL,以下所示:
- hosts: localhost
become: yes
tasks:
- name: Install PostgreSQL
apt:
name: postgresql-9.5
复制代码
若是咱们使用这些内容新建一个 setup.yml
文件,PyCharm 会自动将其上传到咱们在项目配置期间配置的位置。默认状况下,这是 /tmp/
的子文件夹。所以,咱们先安装 Ansible,导航到这个文件夹,运行这个文件(在 Ansible 术语中称为 playbook)。你能够经过在服务器上运行这些命令(使用你以前启动的 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 开始。
如今点击 debug 按钮来运行 Flask:
让咱们访问下咱们的页面!
用 Butters Stotch 的话来讲:oh hamburgers。若是咱们回顾一下 PyCharm,就会在调试窗口看到堆栈的跟踪信息,这代表咱们仍然须要完成数据库链接。
在 Flask 应用程序中,为了用于 Docker Compose 配置,数据库主机被设置为 ‘db’。咱们将其改成 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 用户帐户。第二个剧本会删除已存在的数据库,而后建立一个干净的数据库。在这个数据库中,运行 schema.sql
文件来建立这个应用程序所须要的表。
你还可使用 PyCharm 来运行 SQL 命令并检查数据库。 阅读咱们关于在树莓派上运行代码的文章来了解更多内容。
在设置数据库后,咱们应该可使用调试配置再次启动 Flask,并查看咱们的炫酷的留言系统:
固然,若是咱们要在代码中添加一个断点,咱们如今就能够选中它了。尝试一下,而后告诉咱们它的进展!
若是你对 DevOps 感兴趣,并且想了解更多信息:阅读咱们的 AWS 高级教程、咱们的树莓派教程或者咱们的 Docker Compose 教程。若是你还有其余想了解的内容,请在评论中告诉咱们!
若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。