关于环境搭建的具体过程,网上已经有很详尽的文章,不同版本环境搭建也有区别,这里就不再赘述。
主要分享下对环境搭建的理解以及踩过的坑点:P
不像 windows 使用 ide 一键启动环境,linux 下的部署更加地复杂,同时排错也很困难
基础知识
Django 首要的部署平台是WSGI,它是Python Web 服务器和应用的标准。
那么什么是 WSGI 呢,Web服务器网关接口(Web Server Gateway Interface),简单来说,web 服务器向外界提供文件(css,html 这些),但是它无法直接和 Django 应用通讯,WSGI 就是干这个事儿的。
Django 官方文档提供了 Apache,Gunnicorn,uWSGI三种 WSGI 服务器的入门文档。我采用的方式是 uWSGI 创建一个 Unix socket,通过 WSGI 协议提供响应到 Web 服务器,最后的层次大致如下:
1 | the web client <-> the web server <-> the socket <-> uwsgi <-> Django |
ngnix 配置
nginx 接收用户请求,选择直接从文件系统中提供文件还是转向通过 socket 和 uwsgi 进行交互:
1 | location /static { |
Django 项目中 static 里的内容可以通过命令 python manage.py collectstatic 部署。 uwsgi_pass 设置和 WSGI 服务器交互的地址和端口,sock 文件会在之后 uswgi 中配置。
完整配置文件:
1 | # nginx.conf |
uwsgi 配置
uwsgi 需要配置项目地址 chdir,socket地址,wsgi 文件地址 wsgi-file,及其他设置如 socket 权限 chmod-socket:
1 | # mysite.ini |
这里如果用 module 不行可以换用 wsgi-file
1 | uwsgi --chdir=/path/to/your/project \ |
trick
- 更新或安装提示被占用

sudo rm /var/lib/dpkg/lock
排错可以查看 ngnix 错误日志
/var/nginx/error.log更换 pip 源:User-Guide
1 | [global] |
需设置 trusted-host ,否则会报错
1 | Linux or Mac: ~/.pip/pip.conf |
参考链接: