首先,安装uwsgi,命令pip3 install uwsgi;

在nginx.conf配置文件中,http{}的最后加上一行:

include vhost/*.conf;

目的是引入vhost文件夹下的配置文件; 在nginx.conf同目录下创建vhost文件夹,用来专门存放你的各种项目应用的配置文件。


假设你已经创建好了Django应用,名字叫‘djangoceshi’;在vhost文件夹下新建djangoceshi.conf文件,内容:

upstream djangoceshi {
  server unix:///tmp/djangoceshi.sock;
}
server {
    listen 80;
    server_name djangoceshi.xzwphp.com;
    access_log /data/wwwlogs/djangoceshi.xzwphp.com_nginx.log combined;
    index index.html index.htm index.py;
    #include /usr/local/nginx/conf/rewrite/djangoceshi.conf;
    charset utf-8;
    client_max_body_size 75M;


  location /media {
      alias /data/wwwroot/djangoceshi/media;
  }

  location /static {
      alias /data/wwwroot/djangoceshi/static;
  }

  location / {
    uwsgi_pass djangoceshi;
    include uwsgi_params;
  }
}
  • #include /usr/local/nginx/conf/rewrite/djangoceshi.conf;这一行引入的是你的dangoceshi的路由规则,我在这里注释掉了。
  • server_name djangoceshi.xzwphp.com;这一行是你解析到服务器ip的域名。
  • charset utf-8;指定编码。
  • client_max_body_size 75M;指定最大上传尺寸。
  • alias /data/wwwroot/djangoceshi/media;指定你的媒体文件目录。
  • alias /data/wwwroot/djangoceshi/static;指定你的项目的静态资源文件目录,css,js等。

运行命令nginx -t,查看配置是否有语法错误;然后再输入命令‘nginx -s reload’使修改的配置生效。


在你的项目所在文件夹,和manage.py同目录,创建djangoceshi.ini文件,内容:

[uwsgi]

chdir = /data/wwwroot/djangoceshi
module = djangoceshi.wsgi

master = true
processes = 10

socket = /tmp/djangoceshi.sock
chmod-socket = 664

vacuum = true

daemonize=/data/nginx/wsgilogs/djangoceshi.log
  • module = djangoceshi.wsgi引入你项目的wsgi.py文件。
  • chdir = /data/wwwroot/djangoceshi这里写上你项目的所在目录。
  • daemonize=/data/nginx/wsgilogs/djangoceshi.log记录你项目的uwsgi的运行记录,需要先建好文件夹,不然会报错,找不到目录,我的文件夹是/data/nginx/wsgilogs/

启动uwsgi:

/usr/local/python3/bin/uwsgi --ini /data/wwwroot/djangoceshi/djangoceshi.ini

然后访问域名djangoceshi.xzwphp.com,发现不成功,查看记录文件djangoceshi.log发现,报了一个错误:

Sun Dec  4 12:57:43 2016 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***

解决办法: 创建www用户组和www用户;

/usr/sbin/groupadd www
/usr/sbin/useradd -g www www

编辑Nginx的配置文件nginx.conf,将第一行修改为user www www; 去掉下面两行注释:

#error_log  logs/error.log;
#pid        logs/nginx.pid;

djangoceshi.ini文件中添加两行:

uid = www
gid = www

如:

[uwsgi]
uid = www
gid = www

chdir = /data/wwwroot/djangoceshi

......

再输入命令nginx -s reload使修改nginx.conf的配置生效; 启动uwsgi,uwsgi --ini /data/wwwroot/djangoceshi/djangoceshi.ini.