ngnix+uwsgi+flask
Flask开发应用不难,部署不容易。网上的资料很多,但坑也很多。我纪录一下要点,以及那些坑。
安装uwsgi,最好采用 pip install flask-uwsgi,在对应的虚拟环境里安装
nginx新版本,我用的是
nginx/1.0.15
中,配置文件是在/etc/nginx/conf.d中一个典型的run.py如下:
应用的名字要as成application。否则uwsgi出现找不到app的异常,即使你在uwsgi的配置文件里指定了callable=xxx。
run里不要带任何参数
from pm import app as application
if __name__ == '__main__':
application.run()
下面是一个典型的uwsgi.ini配置:
[uwsgi]
module = wsgi --这是run.py的名字,去掉后缀名
master = true
processes = 4
socket = /web/pm/pm.sock --这里指定了一个sock与nginx交互
chmod-socket = 777 --sock文件的权限,网上说的660会报权限问题,索性777
die-on-term = true
vacuum = true
pidfile = /web/pm/pm.pid --pid文件
daemonize = /web/pm/logs/uwsgi.log --如果要后台运行,得配置这个参数
uwsgi运行命令 uwsgi uwsgi.ini
下面是一个典型的ngnix配置文件
server {
listen 9876; --用户访问的端口
server_name **.**.**.**; --服务器ip
charset utf-8;
access_log /web/pm/logs/access.log;
error_log /web/pm/logs/error.log;
location / {
include uwsgi_params;
uwsgi_pass unix:/web/pm/pm.sock; --与uwsgi的sock
uwsgi_connect_timeout 60;
uwsgi_read_timeout 60;
uwsgi_send_timeout 60;
}
}
启动/重启/停止nginx,service nginx start/restart/stop
一个典型的重启脚本,在虚拟环境下执行
- ``
#!/bin/sh
- ``
kill -9
cat pm.pid``rm -f ./logs/uwsgi.log
uwsgi uwsgi.ini --这里带路径会报错
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeFer!
评论