Linux 上利用Nginx代理uWSGI处理Flask Web应用

  最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask 的一个结构。下面是一些记录,在CentOS 系统上使用Flask 架构部署一个简单的Python应用。然后使用Nginx作为前端反向代理,设置uWSGI应用网关处理web应用程序。

二、条件

1)        环境要求

Server OS:最小化安装 Centos 6.8

Nginx :反向代理

Python2.6~2.7:开发语言

Flask/uWSGI:框架

Pip:python包管理工具

iptables&selinux:开放用到的端口,关闭selinux。

Linux 上利用Nginx代理uWSGI处理Flask Web应用

2)        安装必备的开发工具以及环境

更新系统:

[root@linuxidc ~]# yum update -y [root@linuxidc ~]# yum groupinstall "Development tools" -y

更新完成后,记得重启系统,然后安装工具:

[root@linuxidc ~]# yum install wget vim telnet python-devel zlib-devel openssl-devel bzip-devel -y [root@linuxidc ~]# yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel python-devel libxml2 libxml2-devel python-setuptools zlib-devel wget openssl-devel pcre pcre-devel sudo gcc make autoconf automake -y

3)        安装python 包管理工具-pip

[root@linuxidc ~]# wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py

或者参考此

4)        安装uWSGI与Flask

下载软件

[root@linuxidc ~]# mkdir soft [root@linuxidc ~]# cd soft [root@linuxidc soft]# wget https://pypi.python.org/packages/0c/1c/44849e293e367a157f1ad863cee02b4b865840543254d8fae3ecdebdbdb9/uwsgi-2.0.12.tar.gz [root@linuxidc soft]# wget https://pypi.python.org/packages/db/9c/149ba60c47d107f85fe52564133348458f093dd5e6b57a5b60ab9ac517bb/Flask-0.10.1.tar.gz

如果下载该软件比较慢,可以在/etc/reslov.conf dns中添加一个8.8.8.8 ,很快的哦。

安装软件(开发要求固定版本,如果不介意版本的话,可以直接使用pip install packge 即可安装,相当于linux中的yum)

[root@linuxidc soft]# tar -xf Flask-0.10.1.tar.gz [root@linuxidc ~]# cd Flask-0.10.1 [root@linuxidc Flask-0.10.1]# python setup.py install [root@linuxidc soft]# tar -xf uwsgi-2.0.12.tar.gz [root@linuxidc soft]# cd uwsgi-2.0.12 [root@linuxidc uwsgi-2.0.12]# python setup.py install

5)        创建一个测试应用

创建一个Web应用程序存放的文件夹

[root@linuxidc ~]# mkdir -pv /usr/local/webtest [root@linuxidc ~]# cd /usr/local/webtest

创建一个python 脚本,内容如下:

[root@linuxidc webtest]# cat myproject.py from flask import Flask application = Flask(__name__) @application.route("/") def hello(): return "<h1>Hello Flask!</h1>" if __name__ == "__main__": application.run(host='0.0.0.0')

创建WSGI入口点文件,名字为:wsgi.py,内容如下

[root@linuxidc webtest]# cat wsgi.py from myproject import application if __name__ == "__main__": application.run()

6)         配置uWSGI服务器网关服务运行方式,运行端口等。

上述两个python脚本文件创建完成后,uwsgi命令启动,运行在8000端口上,指定协议http,运行时会出现一些警告,暂时可以忽略,是因为当前是root账户运行的uwsgi,后面从配置文件启动时会配置普通用户nginx即可。

[root@linuxidc webtest]# uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi 验证下,看下监听端口 [root@linuxidc webtest]# netstat -aultnp | grep 8000 tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 7181/uwsgi tcp 0 0 192.168.30.58:8000 192.168.30.65:48164 TIME_WAIT -

可以打开浏览器访问测试一下::8000

Linux 上利用Nginx代理uWSGI处理Flask Web应用

7)        创建uWSGI配置文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/34ca8a682fafc0d0ab14cf064ae6a941.html