一直用python manage.py方式跑项目代码,因涉及到http api接口,现需要用nginx+uwsgi代理访问......  这个东西不弄不知道,一弄吓一跳;;崩溃的心都有啊........


版本:

nginx: 1.2.1

uwsgi: 1.9.20

django: 1.6.4


工程目录:/var/www/oms

工程APP目录:  /var/www/oms/asset

uwsgi配置文件目录: /var/www/oms/uwsgi


1.工程目录放置正确,不然就无厘头事件各种有

/var/www/oms

      //因采用ini配置文件,在配置文件中有一项chdir配置,在刚开始设置报错提示chdir权限拒绝,查了下,说没有执行权限,需要chmo -R +x,但是有那么点不好,就有人推荐放在/var/www、/home/xxx目录,那我就选择了放在/var/www,之前是放在/opt/www


2.配置uwsgi,采用ini配置文件

cat /var/www/oms/uwsgi/uwsgi.ini

[uwsgi]

chdir=/var/www/oms                          //工程目录

module=oms.wsgi:application           //加载的wsgi模块,使用默认的

master=True                                        //开启master process

pidfile=/var/run/oms.pid                   //pid文件位置

vacuum=True                                     //服务器退出时自动清除通用文件和socket

max-requests=5000                           //最大请求

daemonize=/opt/log/uwsgi/oms.log   //后台运行日志输出位置

socket = :9090                                   //监听于全局9090端口,可以改为socket运行,比较快!~


上述配置好,就剩下nginx vhost配置文件了


3.配置nginx,代理uwsgi

cat /usr/local/nginx/conf/vhost/oms.conf

server

     {

        listen 10086;

        server_name X.X.X.X;

        location /static/ {

          root /var/www/oms;

        }

        location / {

          root /var/www/oms;

          include uwsgi_params;

          uwsgi_pass 127.0.0.1:9090;

        }

        access_log /opt/log/nginx/oms.log;

     }

启动nginx:  /etc/init.d/nginx start ;  确保nginx无误


4. 启动uwsgi

cat /etc/init.d/uwsgi

#!/bin/bash

PID=/var/run/oms.pid

LOG=/opt/log/uwsgi

CONF=/var/www/oms/uwsgi/uwsgi.ini

 

case "$1" in

  start)

    echo "Starting uwsgi"

    uwsgi --ini $CONF --uid 501 &> /dev/null

    ;;

  stop)

    echo "Stopping uwsgi"

    killall -QUIT uwsgi &> /dev/null

    ;;

  restart)

    $0 stop

    sleep 1

    $0 start

    ;;

  *)

    echo "usage: $0 {start|stop|restart}"

esac

exit 0 

/etc/init.d/uwsgi start

cat /opt/log/uwsgi/oms.log,查看是否有错误

ps -ef | grep uwsgi, 是否启动成功

最后直接可以访问了,http://X.X.X.X:10086