Ubuntu 16.04 搭建 Python Flask 运行环境

悠扬的幻想天空 - 博客

December 3, 2018 日常 • 作者:悠扬

原本是想用docker来搭建环境的,但是经过多次失败和时间比较赶,无奈选择放弃。

安装 Python

Ubuntu 16.04 的默认环境已经预装 python2.7.12 和 python3.5.2 。

可以输入 python 查看当前版本:

root@iZmlhjuzmr14cqZ:~# python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

CTRL+D 退出 Python 命令行终端。

安装 pip

pip 用于安装一些基于python 应用的软件工具

sudo apt-get install pip

安装 VirtualEnv

不同的项目可能会引用各种不同的依赖包,VirtualEnv 可以为每个Python应用创建独立的开发环境,使他们互不影响,Virtualenv 能够做到:

  • 在没有权限的情况下安装新套件
  • 不同应用可以使用不同的套件版本
  • 套件升级不影响其他应用
sudo pip install virtualenv

假定我的项目目录叫 /home/www/my_flask,首先安装虚拟环境

cd /home/www/my_flask
virtualenv venv

在项目目录下就会建立一个新的 venv 目录,里面就是运行python 的基本环境的工具与指令,和包。 然后启用该环境,使用当前命令行状态进入虚拟环境,进入虚拟环境后,一切安装python的操作都会将包和引用装在虚拟环境内,而不会影响到全局的python 环境。

source venv/bin/activate 

调用 activate 指令后命令符前就会出现 (venv) 字样。 可通过 deactivate 退出虚拟环境。

安装 Flask

当前依然在 home/www/my_flask 目录下,创建一个 requirements.txt 文件,我这里选择的是 vi 命令。

vi requirements.txt

然后填写以下内容并保存:

Flask==0.10.1
Flask-Login==0.2.11
Flask-Mail==0.9.1
Flask-Moment==0.4.0
Flask-PageDown==0.1.5
Flask-SQLAlchemy==2.0
Flask-Script==2.0.5
Flask-WTF==0.10.2
Flask-Cache==0.13.1
Flask-Restless==0.15.0
Flask-Uploads==0.1.3
Jinja2==2.7.3
Mako==1.0.0
Markdown==2.5.1
MarkupSafe==0.23
SQLAlchemy==0.9.8
WTForms==2.0.1
Werkzeug==0.9.6
html5lib==1.0b3
itsdangerous==0.24
six==1.8.0
awesome-slugify==1.6

安装清单文件:

pip install -r requirements.txt

启动项目

接下来就是上传你的 Flask 的项目文件,我写了单个文件的demo上去跑结果发现打不开,最后上传整个项目才行。

Python 启动!

python app.py runserver

然后在本地电脑上输入服务器IP:端口,就能看到运行成功了。

好了,可以关掉 SSH,再刷新下网页,结果发现端口不运行了。

Screen

在使用ssh或者telnet登录远程主机后,执行一些耗时的命令,如果此时ssh或者telnet中断,那么远程主机上正在执行的程序或者说命令也会被迫终止。比如你远程登录之后需要执行一个耗时的指令如svn checkout,这时马上又要下班了,你要关闭你的电脑走人了,怎么办?

screen能够很好地解决这个问题。screen也叫虚拟终端,可以在一个物理终端上实现多个虚拟终端的效果。

新建一个screen并运行python

apt install screen

screen
python /home/www/my_flaskapp.py runserver

CTRL+A+D可以切换出来,刚才新建的程序还会在后台跑。

完事了


参考:

阿里云部署 Flask + WSGI + Nginx 详解

Linux虚拟终端命令Screen用法详解


添加新评论