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 applicationif __name__ == '__main__':application.run()
下面是一个典型的uwsgi.ini配置:
[uwsgi]module = wsgi --这是run.py的名字,去掉后缀名master = trueprocesses = 4socket = /web/pm/pm.sock --这里指定了一个sock与nginx交互chmod-socket = 777 --sock文件的权限,网上说的660会报权限问题,索性777die-on-term = truevacuum = truepidfile = /web/pm/pm.pid --pid文件daemonize = /web/pm/logs/uwsgi.log --如果要后台运行,得配置这个参数uwsgi运行命令 uwsgi uwsgi.ini
下面是一个典型的ngnix配置文件
server {listen 9876; --用户访问的端口server_name **.**.**.**; --服务器ipcharset 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的sockuwsgi_connect_timeout 60;uwsgi_read_timeout 60;uwsgi_send_timeout 60;}}
启动/重启/停止nginx,service nginx start/restart/stop
一个典型的重启脚本,在虚拟环境下执行
- ``
#!/bin/sh- ``
kill -9cat pm.pid``rm -f ./logs/uwsgi.loguwsgi uwsgi.ini --这里带路径会报错
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeFer!
评论
