先说明一下本人的环境:
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