先说明一下本人的环境:

Uwsgi版本:2.0.14(yum install安装)

django版本:1.10.6(pip install安装)

python版本:2.7.5(阿里云 centos 7自带)

nginx版本:1.10.2(yum install安装)

django目录:/django/logan (project就叫logan,这个目录不是mkdir!而是django-admin生成的)

本文阅读之前,我们已经实现了uwsgi的成功安装和uwsgi可以启动django,有需要看细节的朋友请查看一下: 和  

现在我们通过yum下载了nginx,然后直接启动nginx,在浏览器输入外网网址就能看到nginx启动成功的界面,如下:

然后我们#cp /etc/nginx/uwsgi_params /django/logan,这样目的是把uwsgi_params复制到我们的project文件夹里。然后在project里,我们创建一个nginx的配置文件,起名叫:mysite_nginx.conf,同时给这个conf文件755的权限,整个mysite_nginx.conf的内容如下:

events {  worker_connections  1024;  ## Default: 1024}http{upstream django {    server 127.0.0.1:8001;    #用uwsgi启动的django是在8001端口}server {    listen      8000;    server_name 这里填写你的外网地址或者域名;    charset     utf-8;    client_max_body_size 75M;    location /media  {        alias /django/logan/media;    #设定mrdia的资源路径    }    location /static {        alias /django/logan/static;    #设定static的资源路径    }    location / {        uwsgi_pass  django;        include     /django/logan/uwsgi_params;    #我们刚写的uwsgi_params的地址    }}}

在/etc/nginx/sites-enabled目录下创建该文件的符号连接,使nginx能够使用它:#ln -s /home/www-data/www/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

这个时候,我们下载一个图片,我们选择的图片就是金刚狼3的宣传海报,但是我们加上一点自己的记号,于是这个图片就是这样,我们在右上角加上了红色小字(如有侵权,我会删除图片):

然后返回到服务器,在/django/logan下面mkdir 一个文件夹叫media,把这个加工过的电影海报上传到这个media文件夹里,起名叫logan.jpg。

然后我们#vim /django/logan/logan/settings.py,在这个py文件末尾加上这么一句话:

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

然后运行一下#python manage.py collectstatic,就会出现

You have requested to collect static files at the destinationlocation as specified in your settings:    /home/www-data/www/mysite/staticThis will overwrite existing files!Are you sure you want to do this?Type 'yes' to continue, or 'no' to cancel:

这里我们输入yes,就会出现很多copying,这个过程的意思是:Django框架在创建项目时,默认提供了admin等接口,这会将Django框架中这些接口用到的一些静态文件,js,css等文件,拷贝到项目的static目录下。

然后我们就要测试一下nginx是否与django+uwsgi勾搭成功,首先我们先测试一下我们的mysite_nginx.conf的语法问题,使用命令:#nginx -c -t /etc/nginx/sites-enabled/mysite_nginx.conf,得到效果如下:

那么我们就#nginx -c /etc/nginx/sites-enabled/mysite_nginx.conf,通过ps -ef查看nginx进程已经启动了。然后我们#uwsgi --plugin python --http-socket :8001 --chdir /django/logan/ --wsgi-file /django/logan/logan/wsgi.py 启动django。

确定nginx和django都进程存在了之后,在浏览器的地址栏里,输入“http://外网地址:8000/media/logan.jpg”,看一下效果吧!

OK!!!至此确定media文件已经可以正常访问。

参考资料:http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html