之前对于django的部署写过一个csdn,但是有人说太过笼统,不够细致,这一篇关于django部署在uwsgi和nginx的详细介绍,希望可以帮助大家,
使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署
准备条件:
1.确保有一个能够用runserver正常启动的django项目,即命令:python manage.py runserver
2.项目已上传到linux,并且已部署好python环境,且已安装好项目所需的模块
Uwsgi的安装:
1.安装命令:pip3(因为我用的是python3.5.2) install uwsgi
2.在django项目的同一级目录下创建一个uwsgi.ini文件,创建命令:sudo vi uwsgi.ini
3.在uwsgi.ini中编辑配置信息如下:
chdir = /home/python/Desktop/django_test/fang # 指向了项目目录,我这里的fang是项目
module = fang.wsgi # 项目名称.wsgi
master = true
processes = 10
chmod-socket = 664
vacuum = true
socket = 127.0.0.1:8001 # 这个是被访问地址,十分重要,因为后续的nginx访问后端链接地址就是 这个地址,而不是http地址,必须注意,否则nignx的log就会显示以下错误:
upstream prematurely closed connection while reading response header from upstre am, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:8080", host: "127.0.0.1"
http = 127.0.0.1:8080
max_execution_time = 300s
uwsgi_connect_timeout = 300s
plugin=python
proxy_http_version 1.1
proxy_set_header Connection ""
pythonpath = ~/.virtualenvs/django_py3/lib/python3.5.2/site-packages/
4.配置完成后进行这个uwsgi所在的目录下,通过命令:uwsgi --ini uwsgi.ini进行项目启动,成功后如下显示:
5.访问http地址(127.0.0.1:8080,根据自己的实际地址)可以访问到项目页面就是成功配置uwsgi和django了
如下图,我的测试项目返回了预先写好的hello1
Nginx的安装:
1.通过命令sudo apt-get install nginx来安装nginx
2.进行nginx的安装成功与否的测试,默认是80端口,本机IP是127.0.0.1
/etc/init.d/nginx start --启动
/etc/init.d/nginx stop --关闭
/etc/init.d/nginx restart --重新启动
3.配置 *.conf文件,这个文件的名字随意,我习惯于使用项目名称,也有人喜欢使用nginx.conf,我是用fang.conf这样的好处是进行项目区别,和默认的nginx的区别
(1):进行项目目录下,通过命令sudo vi fang.conf创建fang.conf文件
(2):进行fang.conf文件的配置如下:
注意:①以下的路径,大家按照项目的实际绝对路径写就可以了
②以下的upstream django的配置中的地址要和刚才在uwsgi.ini中的socket配置一致,否则就会出现我说过的那种错误,好多人出了那个错误,却不知道问题的根源在这里,尤其是初学者
4.通过命令sudo ln -s /home/python/Desktop/django_test/fang/fang.conf /etc/nginx/conf.d 进行软连接,
5,通过命令:/etc/init.d/nginx restart 重启nginx服务器,然后通过80端口访问,可以得到对应的数据信息,说明配置成功了,如下图的80端口的显示:
注意::
以上配置成功了,如果你的nginx开启时出现了如下错误:
那说明fang.conf配置文件有错误,具体错误可以查看log,先进入到/var/log/nginx/目录下,然后打开log,sudo vi error.log文件产看错误原因,当然也有可以能是/etc/nginx/sites-enabled文件中进行软连接,可以进行删除里边的*.conf文件,或者con.d文件夹下的default文件没有删除,具体还需要查看log,还有其他问题,欢迎留言!
————————————————
版权声明:本文为CSDN博主「fsj818077」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fsj818077/article/details/85243145
来源:https://www.cnblogs.com/flintlovesam/p/12250229.html