在杜赛的博客中,对Django+Nginx+Gunicorn这三兄弟的描述是这样的:
如果用餐馆来做比喻的话,Nginx 就是迎宾,客人如果点了酒水,迎宾自己就帮忙拿了;而 Gunicorn 是传菜员,Django 是厨师,他两一起满足客人对现炒美食的需求。
这个比喻具体是在说什么呢?
首先,我们要分清楚 Web应用 和 Web服务器 这两个概念。Django开发出来的程序是Web应用,它本身不能起到监听用户请求并响应这种 “收发员” 的功能。监听用户请求并响应是 Web服务器 的职责。
Nginx就是一个 Web服务器 。即使没有web应用运行,只有一大堆 html 静态页面,我们也可以通过配置路由和返回的页面来使用Nginx搞出一个静态网站。
Django开发的Web应用本身是没有和客户端(浏览器)交互的功能的。我们在本地能够运行它是只是因为Django其内置了一个小型Web服务器而已,不过它性能受限,不能用于生产环境。
那么将Nginx和Django组合是不是就大功告吉了呢?没那么简单。Python官方定义了WSGI(Web Server Gateway Interface)作为Web服务器与Python Web应用程序或框架之间的建议标准接口。这样可以提高Web应用程序和服务器之间的可移植性。显然Django需要一个实现WSGI的服务器来和它配合。然而Nginx作为一个普通的>
前几天老师让我把一个Django项目(爬虫网页)放到校园内网上,但是我想先用自己的服务器来尝试一下。之前刚好有在Digital Ocean上买过服务器用来运行ss脚本,平时服务器一直放着没啥用,所以就拿它来试验一下。
废话不多说,第一步通过WinSCP软件把Django文件传到服务器上。
在服务器中安装Django需要的环境和我所需要的Python第三方库。
以上所有步骤完成后,还需要进行一步 *** 作,这是我经历的一个 坑 。 打开Django文件目录中的 settingspy ,把 ALLOWED_HOSTS=[] 改为 ALLOWED_HOSTS=[""] 。
在服务器中打开到 managepy 所在的目录,输入命令:
python3 managepy runserver 0000:8000
然后按下回车,在浏览器中输入: 该服务器IP地址:8000 ,大功告成!
Attention:
1 python3 不是特定的,是根据你的Django项目所需要的环境指定的。
2 8000 是端口号,可以修改。
如果想要Django项目一直运行,关闭终端后还在运行,即需要运行如下命令, nohup command & , command 即位上文所说的 python3 managepy runserver 0000:8000 。
后端用的drf,使用的是uwsgi+nginx进入服务器项目文件目录下,我的django项目放在了“/usr/myProjects/”目录下了。在managepy同级目录下创建uwsgiini文件,配置如下:
测试效果命令:
如果访问:xxxxxxxxxxx:8000 成功, 则uwsgiini配置成功
我的nginxconf所在位置是“/etc/nginx/nginxconf”
配置文件如下:
1、第一行
主要就是给nginx加权限,vue部署后使用history路由时会去掉地址后面的‘#’号,打包部署后不加权限会有bug。
2、如配置所示,有两个Server,分别部署了前端服务,和后端服务,值得注意的是两个Server用的是同一个服务器,监听的端口不同。
3、vue部署需要注意的是反向代理地址:
以及后面的端口问题
4、后端的Server需要注意location中的uwsgi_pass 后面的端口号要和uwsgiini中配的相同,否则监听不到
5、后端跨域问题。如果遇到跨域需要自己网上找配置,我的没遇到,可能是因为我在django的settings中配置了跨域。
6、django-suit后台管理样式崩了,需要改,但是api可以正常访问,这个有空再说
7、我开始后台监听的是8008端口,vue前端监听的是80端口,这样前端显示好看。然而问题出现了,虽然后台api可以正常访问,vue的本地开发环境也能正常运行且文字、资源均显示正常,但是前端vue打包线上部署后,文字信息显示正常,信息缺失8008端口,导致显示不出来。为图方便我选择了前端监听8008端口,后端监听80,部署后显示正常。原因不太清楚///////有空再说吧。
8、不要问我为啥都前后端分离了还部署到一个服务器上?穷,而且只是测试,没必要
9、此文仅适合入门
关于django后台admin(suit)缺失的修改(参考:django中文网: >
搭建环境,就是需要编程用的语言和用什么进行编程,用什么进行调试的这几个条件的总和。
搭建框架,一般不是搭建,都是尽量选择现有的,自己设计构造框架,在编程中总会遇见很多类似的问题和需求,为了避免重复编写,于是就有人设计了框架,用来简化重复需求的编写。
拿python来说,你要使用python来编写程序,那么必须得安装python,要编代码必须得有个编辑器,如果是要进行WEB的开发,总得有个web服务器用来测试,这些个就是编程环境。
而你准备编写的web程序,并不希望全部一点点都自己来开发,于是就有了django 框架。它已经帮你做了很多web开发的基础工作。利用这个框架你可以更加将注意力集中在你所要实现的功能上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)