我是靠谱客的博主 踏实月光,最近开发中收集的这篇文章主要介绍Django 部署 ubuntu uwsgi nginx 处理 静态文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在说正事之前先补充下概念:

有太多的文章告诉我们nginx uwsgi django 这些东西怎么用了,太多的人知道这些东西的怎么使用,怎么配置,怎么优化,但是还是有一部分人比如我这种水货不知道这些东西到底是啥,为啥一个项目的发布要经过这么多层级,他们每一层都做了什么,都是必须的吗

1 首先nginx 是对外的服务接口,外部浏览器通过url访问nginx,

2nginx 接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静态文件请求就直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件,

如果不是静态文件,而是一个动态的请求,那么nginx就将请求转发给uwsgi,uwsgi 接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi,wsgi 根据请求调用应用程序的某个文件,某个文件的某个函数,最后处理完将返回值再次交给wsgi,wsgi将返回值进行打包,打包成uwsgi能够接收的格式,uwsgi接收wsgi 发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器。

3要知道第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程,但是要考虑到某些情况

1 安全问题,程序不能直接被浏览器访问到,而是通过nginx,nginx只开放某个接口,uwsgi本身是内网接口,这样运维人员在nginx上加上安全性的限制,可以达到保护程序的作用。

2负载均衡问题,一个uwsgi很可能不够用,即使开了多个work也是不行,毕竟一台机器的cpu和内存都是有限的,有了nginx做代理,一个nginx可以代理多台uwsgi完成uwsgi的负载均衡。

3静态文件问题,用django或是uwsgi这种东西来负责静态文件的处理是很浪费的行为,而且他们本身对文件的处理也不如nginx好,所以整个静态文件的处理都直接由nginx完成,静态文件的访问完全不去经过uwsgi以及其后面的东西。

这就是这几者之间的关系。from:http://blog.csdn.net/u014761344/article/details/40146597

正文

累死宝宝了,从下午搞到现在终于搞定了,记下来这个大坑,以防其他同学踩到!

settings.py中的debug改为False
python-dev是系统级的软件包,包含了用于构建Python模块的开发工具。

python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
sudo apt-get install python-dev

用sudo apt-get install nginx 安装nginx
用sudo pip install uwsgi –upgrade 来安装uwsgi

seeting.py 里面ALLOWED_HOSTS = [‘*’]
设置超级用户
python manage.py createsuperuser

我的项目名devnav,结构如图,我只说干货
这里写图片描述

1.把项目放在home/ubuntukylin/下,再在项目目录下,创建 devnav_uwsgi.ini,再sudo uwsgi –ini devnav_uwsgi.ini来启动

# Django-related settings
[uwsgi]
socket = :8001
# the base directory (full path)
chdir
= /home/ubuntukylin/devnav
# Django s wsgi file
module
= devnav.wsgi
# process-related settings
# master
master
= true
# maximum number of worker processes
processes
= 4
# ... with appropriate permissions - may be needed
# chmod-socket
= 664
# clear environment on exit
vacuum
= true

2.新建nginx配置devnav_nginx.conf,再在/etc/nginx/sites-enabled里面创建软链接

server {
listen
8088;
server_name 127.0.0.1;
charset
utf-8;
client_max_body_size 75M;
location /upload_picture {
alias /home/ubuntukylin/devnav/upload_picture;
}
location /static {
alias /home/ubuntukylin/devnav/static;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
}
}

uwsgi_pass 127.0.0.1:8001这么设置是和uwsgi沟通的,可以用soket代替的

3.修改项目文件夹的权限,让nginx能读到静态文件,返回403就是权限问题,要是返回404就是路径配置问题,sudo service nginx restart重启服务即可

坑太深,其他宝宝想深入了解还可以看下这几篇文章,有参考意义:
http://code.ziqiangxuetang.com/django/django-nginx-deploy.html
http://www.cnblogs.com/jhao/p/6071790.html
http://www.cnblogs.com/fnng/p/5268633.html
https://yq.aliyun.com/articles/36339
http://blog.csdn.net/sinat_21302587/article/details/74059078
http://m.blog.csdn.net/wenxuansoft/article/details/8580508
http://www.cnblogs.com/qwj-sysu/p/4264206.html

有问题的留言

最后

以上就是踏实月光为你收集整理的Django 部署 ubuntu uwsgi nginx 处理 静态文件的全部内容,希望文章能够帮你解决Django 部署 ubuntu uwsgi nginx 处理 静态文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部