阿里云 Flask + WSGI + Nginx Linux部署

我采用的部署方案是:

  • Web 服务器采用 uwsgi host Flask
  • 用 Supervisor 引用 uwsgi 作常规启动服务
  • 基于 Nginx 作反向代理

阿里云服务器可以通过 SSH 指令在本机的终端进行远程连接

ssh root@云服务器地址

输入密码进入后所有的操作与本地终端完全一至。

安装 Python 环境

接下来是python , Ubuntu 的默认环境已经预装 python 2.7 所以只需要安装 python 的 pip 安装工具即可。pip 用于安装一些基于python 应用的软件工具,在下文中将会频繁使用。

PIP

如果用python 而不懂 [pip|http://pypi.python.org/] 那最好就快点脑补吧, 指令如下:

sudo apt-get install pip

VirtualEnv

不同的项目可能会引用各种不同的依赖包,为了避免版本与应用之间的冲突而造成的“依赖地狱”,Virtualenv 就是我们python 项目的必须品了。VirtualEnv 可以为每个Python应用创建独立的开发环境,使他们互不影响,Virtualenv 能够做到:

Linux环境下python虚拟环境virtualenv安装和使用

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

安装:

sudo pip install virtualenv

安装VirtualEnv 后只需要在项目目录内运行 virtualenv 目录名就可以建立一个虚拟环境文件夹,然后启用 activate 指令即可启用该python虚拟环境,具体操作如下:

假定项目目录叫 /home/www/my_flask,首先安装虚拟环境 (假设虚拟环境目录叫 venv )

my_flask root$ virtualenv venv

>> New python executable in venv/bin/python
>> Installing setuptools, pip...done.

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

my_flask root$ source venv/bin/activate 

(venv)my_flask root$ 

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

安装 uWSGI

Flask 的实际生产运行环境选择并不多,比较成熟的是 Gunicorn 和 uWSGI ,本例采用的是 uWSGI,安装uWSGI。

(venv)my_flask root$ pip install uwsgi

在虚拟环境下不需要使用 sudo ,因为virtualenv 是没有权限要求的。安装完成后我们可以先放下 uWSGI 不表,首先要将关键的 Flask环境和我们的项目文件传到服务器目录内。

 

wsgi server 与 wsgi 应用之间的调用关系
wsgi server 与 wsgi 应用之间的调用关系

 

web sever 与 wsgi server 与 web browser之间的调用流程

WSGI 分为两个部分:

  • Server/Gateway: 即是HTTP Server, 负责从客户端(Nnginx、apache、IIS)接收请求,将 request 转发给 application, 并将 application(可能是个Flask应用) 返回的response 返回给客户端
  • Application/Framework:一个python web 应用或 web 框架接收由 server 转发的request,处理请求,并将处理结果返回给 server

安装 Flask

用清单文件一次性安装Flask和相关依赖,这样会更快。清单是这样的:
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
h
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值