ngnix+uwsgi+flask

Flask开发应用不难,部署不容易。网上的资料很多,但坑也很多。我纪录一下要点,以及那些坑。

  1. 安装uwsgi,最好采用 pip install flask-uwsgi,在对应的虚拟环境里安装

  2. nginx新版本,我用的是nginx/1.0.15中,配置文件是在/etc/nginx/conf.d中

  3. 一个典型的run.py如下:

    • 应用的名字要as成application。否则uwsgi出现找不到app的异常,即使你在uwsgi的配置文件里指定了callable=xxx。

    • run里不要带任何参数

      1. from pm import app as application
      2. if __name__ == '__main__':
      3. application.run()
  4. 下面是一个典型的uwsgi.ini配置:

  1. [uwsgi]
  2. module = wsgi --这是run.py的名字,去掉后缀名
  3. master = true
  4. processes = 4
  5. socket = /web/pm/pm.sock --这里指定了一个sock与nginx交互
  6. chmod-socket = 777 --sock文件的权限,网上说的660会报权限问题,索性777
  7. die-on-term = true
  8. vacuum = true
  9. pidfile = /web/pm/pm.pid --pid文件
  10. daemonize = /web/pm/logs/uwsgi.log --如果要后台运行,得配置这个参数
  1. uwsgi运行命令 uwsgi uwsgi.ini

  2. 下面是一个典型的ngnix配置文件

    1. server {
    2. listen 9876; --用户访问的端口
    3. server_name **.**.**.**; --服务器ip
    4. charset utf-8;
    5. access_log /web/pm/logs/access.log;
    6. error_log /web/pm/logs/error.log;
    7. location / {
    8. include uwsgi_params;
    9. uwsgi_pass unix:/web/pm/pm.sock; --与uwsgi的sock
    10. uwsgi_connect_timeout 60;
    11. uwsgi_read_timeout 60;
    12. uwsgi_send_timeout 60;
    13. }
    14. }
  3. 启动/重启/停止nginx,service nginx start/restart/stop

  4. 一个典型的重启脚本,在虚拟环境下执行

    1. ``
    2. #!/bin/sh
    3. ``
    4. kill -9cat pm.pid``
    5. rm -f ./logs/uwsgi.log
    6. uwsgi uwsgi.ini --这里带路径会报错