概念
一个web服务器面对的是外部世界。它能直接从文件系统提供文件 (HTML, 图像, CSS等等)。然而,它无法直接与Django应用通信;它需要借助一些工具的帮助,这些东西会运行运用,接收来自web客户端(例如浏览器)的请求,然后返回响应。
一个Web服务器网关接口(Web Server Gateway Interface) - WSGI - 就是干这活的。 WSGI 是一种Python标准。
uWSGI是一种WSGI实现。在这个教程中,我们将设置uWSGI,让它创建一个Unix socket,并且通过WSGI协议提供响应到web服务器。最后,我们完整的组件栈看起来将是这样的:
the web client <-> the web server <-> the socket <-> uwsgi <-> Django
部署静态文件
在运行nginx之前,你必须收集所有的Django静态文件到静态文件夹里(不收集那么admin页面无法正确加载)。首先,必须编辑mysite/settings.py,添加:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
STATIC_URL = '/static/'
然后运行
python manage.py collectstatic
克隆dockerfile
我的github:https://github.com/xf1688/nginx-uwsgi-django
把django项目的根目录下的所有文件复制到app/文件夹下面,然后直接运行
python3
docker build -t djangoapp .
docker run -d -p 0.0.0.0:80:80 djangoapp
python2
docker build -f Dockerfile-py2 -t djangoapp .
docker run -d -p 0.0.0.0:80:80 djangoapp