使用uwsgi部署django,静态文件的简单处理

1 吐槽

Django本身不提供文件服务,它把这个任务留给你选择的Web服务器。这是Django帮助文档的原话:

Django doesn’t serve files itself; it leaves that job to whichever Web server you choose.

Django很贴心的提供了一个“静态文件收集”的功能,把所有的静态文件收集到一处,由Web服务器提供,通常是Nginx或者Apache。

我认为,这跟Django的“模块化”的设计理念是相悖的,难道静态文件不是“模块”的一部分?这让模块的复用徒增烦恼。

2019年5月21日修订:现在我知道了django这么做的智慧所在,由于it工业前端、后端的分工,这样做可以把两者的工作隔离开。

2 思路

Django官方推荐的方法,是使用Nginx或者Apache提供静态文件。百度、谷歌搜索来的方案也多是这两种。

实际上,我的网站并没有使用任何静态文件,我的静态文件是由unpkg.com提供的,需要本地提供的,仅仅是Django自己的admin的静态文件。

总共119个css、js之类的文件,用户仅限管理员。动用Nginx或者Apache,四八四太劳师动众了?

反正,看着Django给出的Nginx或者Apache的配置文档,就觉得头疼。主要还是懒。

虽然说,uwsgi“不擅长处理静态文件”,但我决定试一试。

3 操作

3.1 设置setting.py

STATIC_ROOT =os.path.join( BASE_DIR, 'static/' )

3.2 创建文件夹

在项目路径下创建。

$ mkdir static

3.3 收集静态文件

$ python manage.py collectstatic

3.4 修改uwsgi.ini

static-map = /static=<项目路径>/static

3.5 启动

$ uwsgi --ini uwsgi.ini

4 后记

使用uwsgi提供静态文件,有两种方法。

本文使用的叫“路径映射”。

还有一种叫“高级路由”,我没有实验成功。

你可能感兴趣的:(uwsgi)