centos7下搭建nginx+uwsgi+flask环境

Centos7 环境下进行基于flask的开发环境配置

我采用的部署方案是:

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

 

1、        安装pip 、virtualenv

Yum install python-pip 如果提示NO package

安装依赖包  yum install –y epel-release

之后再安装pip

安装virtualenv 直接pip install virtualenv

 

2、        创建项目目录 /www/app/flask

再目录下 执行virtualenv venv

Source venv/bin/activate 进行虚拟环境

虚拟环境时,会显示(venv)

3、        安装uwgsi

在虚拟环境下执行:

Pip install uwgsi

安装flask及依赖文件:

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

可以将清单放进文件,然后

Pip install –r  文件名

虚拟环境下执行

整体结构:

www/app/flask

 

 

其中manage文件 后面配置出现了点儿问题,就没用到

4、        配置uwsgi

创建config.ini,进行编辑

如下图所示:

 

 

 

[uwsgi]

 

# uwsgi 启动时所使用的地址与端口

socket = 127.0.0.1:5001

 

# 指向网站目录

chdir = /www/app/flask/app

 

# python 启动程序文件

wsgi-file = cc.py

 

# python 程序内用以启动的 application 变量名

callable = app

# 处理器数

processes = 4

 

# 线程数

threads = 2

 

#状态检测地址

stats = 127.0.0.1:9191

具体配置文件参数需要怎么配置   参考文章3

 

配置好,可以使用uwsgi config.ini进行验证是否可用

 

5、        安装supervisor

Yum install supervisor

安装完成进行/etc/ 下,将supervisor.conf备份后,

编辑新的supervisor.conf

内容如下:

 

 

 

 

[program:flask]

# 启动命令入口

command=/www/app/flask/venv/bin/uwsgi /www/app/flask/config.ini

# 命令程序所在目录

directory=/www/app/flask

#运行命令的用户名

user=root

 

autostart=true

autorestart=true

#日志地址

stdout_logfile=/www/app/flask/logs/uwsgi_supervisor.log

 

[supervisord]

logfile = /tmp/supervisord.log

logfile_maxbytes = 50MB

logfile_backups=10

loglevel = info

pidfile = /tmp/supervisord.pid

nodaemon = false

minfds = 1024

minprocs = 200

umask = 022

user = root

identifier = supervisor

directory = /tmp

nocleanup = true

childlogdir = /tmp

strip_ansi = false

environment = KEY1="value1",KEY2="value2

由于其中没有添加supervisord section部分 导致一直启动不了

配置参考文章2

Systemctl start supervisor.service  启动

 

6、        安装nginx

Nginx.conf配置

参考之前的文档  http://www.cnblogs.com/playboysnow/p/6347128.html 

配置内容:

 

 

 

配置完成后,启动服务

 

注意部分:

1、        supervisor启动不成功,查看状态,确认问题在哪

 

 

2、        uwsgi配置与flask绑定主机端口的问题

uwsgi中的socket绑定的端口需要与flask开启端口一致

另外uwsgi参数路径及执行文件需要正确

  • callable:表示Flask项目的实例名称,上例代码中app = Flask(__name__),所以这里为app
  • socket:表示和Nginx通信的地址和端口,和Nginx配置里的uwsgi_pass一致。

另附cc.py

 

 

 

 

 

总体需要启动的服务有以下两个:

systemctl start  supervisord.service

systemctl start  nginx.service

 

最后上图:

 

参考文章

1、博客http://www.tuicool.com/articles/zUvqMr

2、supervisor报错 配置supervisord section

  http://supervisord.org/configuration.html

3、uwgsi 配置错误参考 http://www.pyworm.com/blog/47/

posted @ 2017-03-14 18:59  踏雪无痕何处是  阅读(241)  评论(0编辑  收藏  举报