1. nginx
启动、停止和重启
|
|
2. uWSGI安装
用python的pip安装最简单:
3. 基于uWSGI和nginx部署Django
1. 原理
|
|
2.基本测试
测试uWSGI是否正常
在django项目的根目录下创建test.py文件,添加源码如下:
|
|
Django项目的创建方法,可参考Django教程。
然后,运行uWSGI:
|
|
参数含义:
http :8000
: 使用http协议,8000端口wsgi-file test.py
: 加载指定文件 test.py
用浏览器打开下面url,应该显示hello world
字符串:
如果部署服务器的主机和运行浏览器的主机不是同一台,[example.com]
要替换为部署服务器的主机实际的域名,若是同一台,[example.com]
可以替换为localhost,如:
如果显示正确,说明下面3个环节是通畅的:
|
|
测试Django项目是否正常
首先确保 项目 本身是正常的:
如果没问题,使用uWSGI把Project拉起来:
module mysite.wsgi
: 加载wsgi module。mysite.wsgi
指向一个python模块,即mysite
目录下名为wsgi.py
的文件。新建出来的Django项目,它的这个文件的内容大体如下:
|
|
如果Project能够被正常拉起,说明以下环节是通的:
|
|
3.配置nginx
安装nginx完成后,如果能正常打开http://hostname,说明下面环节是通畅的:
|
|
增加nginx配置
将
uwsgi_params
文件拷贝到项目文件夹下。uwsgi_params
文件在/etc/nginx/目录下,也可以从这个页面下载在项目文件夹下创建文件mysite_nginx.conf,填入并修改下面内容:
|
|
这个配置文件的写法就像常规的nginx配置文件/usr/local/nginx/conf/nginx.conf
一样。这个配置文件告诉nginx,请求的资源的路径模式满足/media/*
和/static/*
的,要在文件系统中找。
在/etc/nginx/sites-enabled
目录下创建该文件的符号连接,使nginx能够使用它:
|
|
部署static文件
在Django项目的mysite/settings.py
文件中文件末尾,添加下面一行内容:
|
|
然后运行:
|
|
Django框架在创建项目时,默认提供了admin等接口,这会将Django框架中这些接口用到的一些静态文件,js,css等文件,拷贝到项目的static目录下,如:
|
|
测试nginx
首先重启nginx服务:
|
|
然后检查media文件是否已经可以正常访问:
在目录/path/to/your/project/project/media directory下添加文件meida.png,然后访问http://example.com:8000/media/media.png ,成功后进行下一步测试。
4.nginx、uWSGI和test.py
执行下面代码测试能否让nginx在页面上显示hello, world
|
|
访问http://example.com:8000,如果显示`hello world`,则说明下面环节是通畅的:
|
|
用UNIX socket取代TCP port
对mysite_nginx.conf做如下修改:
|
|
重启nginx,并再次运行uWSGI:
|
|
打开 http://example.com:8000/ ,看看是否成功。
如果没有成功
检查 nginx error log (/var/log/nginx/error.log)。如果错误如下:
|
|
访问Django应用的接口,报出502 Bad Gateway错误:
则添加socket权限再次运行:
|
|
or
5. 基于uWSGI和nginx运行Django应用
如果上面一切都显示正常,则下面命令可以拉起D
jango应用:
|
|
这里的权限同样要注意,就如同上面测试的那样。
用.ini文件配置uWSGI
每次都运行上面命令拉起Django应用实在麻烦,使用.ini文件能简化工作,方法如下:
在应用目录下创建文件mysite_uwsgi.ini
,填入并修改下面内容:
|
|
现在,只要执行以下命令,就能够拉起django应用:
|
|
检查配置
最后,通过访问Django提供的接口接口服务,检查上面的所有配置,如在浏览器中输入http://www.wolfcstech.com:8000/admin
,应该可以看到如下的页面:
uWSGI后台运行
前面介绍的uWSGI运行方式是在终端前台运行,终端关闭的话,uWSGI进程也都会跟着结束掉。可我们也不能总是为uWSGI开一个终端啊。我们可以配置uWSGI后台运行。需要在mysite_uwsgi.ini配置文件中添加:
|
|
这样就会把日志打印到uwsgi.log中。
使uWSGI在系统启动时启动
编辑文件/etc/rc.local, 添加下面内容到这行代码之前exit 0:
|
|
uWSGI的更多配置
|
|
7. Django文件上传接口
这部分展示一个示例的Django接口。该接口主要用于验证前面的配置。而接口的功能则主要是处理文件上传。
配置url模式
在mysite/urls.py中为文件上传接口配置url模式:
|
|
实现上传接口
文件上传接口的实现如:
|
|
这个接口将文件保存在由dir_path定义的文件夹下,同时计算文件的md5,返回给客户端。