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/