Django 项目部署在 nginx + uwsgi

2017-06-27 Oliver Wang 更多博文 » 博客 » GitHub »

django nginx uwsgi

原文链接 http://ochukai.me/nginx-uwsgi-django/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


好久不写博客了,最近一直在忙一个私活,一个问卷类的项目,用 django 写的,说实话,之前除了在公司厘米用,都没有用过 python,还好我有一些好同事,有问题可以直接问,方便了很多。

为了避免长时间不写文章的尴尬,我急匆匆的新键了一个 md,开始写。

一般来说,本地运行 django 项目是很简单,

python manage.py runserver

UWSGI

总感觉这个单词全部大写的话,很别扭,使用 uwsgi 启动项目的话也不是太难,

# docon.ini
# uwsgi abc.ini
# uwsgi --reload /tmp/***.pid
# uwsgi --stop /tmp/***.pid

[uwsgi]
chdir=/home/docon
module=docon.wsgi:application
master=True
processes=2
threads=2
socket=:8000
# http=:80
daemonize=/var/log/uwsgi-docon.log
pidfile=/tmp/docon.pid
vacuum=True

有一点要注意的就是, 如果单独使用 uwsgi,需要写 http=:80, 如果配合 nginx 的话,就改成 socket=:8000, 8000 随便写。

NGINX

一般初装 ubuntu 的 nginx 之后,有一个默认的配置,在 /etc/nginx/sites-enabled/default 这个位置,需要修改成自己项目的配置。

vi /etc/nginx/sites-enabled/default

然后修改成自己的配置

server {
  listen 80;
  server_name ***.com;
  charset utf-8;

  client_max_body_size 75M;

  location / {
    include uwsgi_params;
    uwsgi_pass localhost:8000;
  }

  location /static/ {
    alias /var/www/html/docon/static/;
  }
}

重启 nginx

/etc/init.d/nginx restart  

哦,对了,在启动之前,要把静态文件,放到上面配置的 /var/www/html/docon/static 中去,这个路径是自己配置的,随便写吧,首先要在项目的 setting.py 里面设置 STATIC_ROOT,

STATIC_ROOT = /var/www/html/docon/static

然后在执行下面的命令,把所有的静态文件转移过去。

python manage.py collectstatic

如果启动的过程中报错了, 查看占用的端口, 然后 kill 就好了。

netstat -ntpl
kill -9 ***