在生产服务器中部署django

Ben*_*Max 18 django web-deployment uwsgi gunicorn django-deployment

首先,请让我明白我是一个Windows用户,对网络世界来说是一个新手.在过去的几个月里,我一直在学习python和django,对我来说这是一次很棒的经历.现在我以某种方式创建了一个我希望在生产服务器中部署的小项目.由于django有内置的开发服务器,所以对我没有问题.但现在我必须将它部署到生产服务器上,我用Google搜索并发现Nginx + uWSGI或Nginx + Gunicorn是它的最佳选择.由于uWSGI和Gunicord与Windows不兼容,我认为我应该适应Ubuntu或其他Unix系统.

所以我的问题是:

  1. 为了清楚起见,因为我将不得不使用上述其中一个,请向我解释为什么我需要两台服务器?
  2. 如果我必须适应Ubuntu环境,我是否必须学习Ubuntu shell脚本,SSH和其他东西?或托管服务提供商会帮助我做到这一点?
  3. 请让我知道上述有关我还需要什么.

非常感谢你的时间,如果我的问题是一个蹩脚的问题,请原谅.希望得到积极回应的答案.

And*_*ter 15

  1. 典型配置涉及两个服务器进程(可以在同一个实际硬件或虚拟服务器上一起运行),以便前面的代理服务器可以缓冲慢速客户端.例如:一个慢客户端将通过请求连接到nginx.Nginx将把请求传递给Gunicorn并且Gunicorn会做出回应.Nginx将立即消耗Gunicorn响应,立即释放Gunicorn资源.此时,慢速客户端可以花费尽可能多的时间来消耗来自Nginx的响应,而不会占用很多服务器资源.双服务器进程模型的替代方法是使用与Gunicorn的异步工作者并将Gunicorn本身放在前面,或使用像Waitress这样的异步同步组合.不过,前面的Nginx还有一个额外的好处,即可以作为一个随时可用的静态服务器加倍.

    请注意,"慢客户端"可以描述:手机丢失连接并使TCP套接字挂起,直到请求超时; 移动电话只是很慢; 所有类型的不可靠联系; 故意试图使用服务器资源的恶意拒绝服务客户; 有时任何旧连接因任何原因而出现打嗝或故障.所以这是一个几乎会影响任何网站的问题.

  2. 您本身不需要shell脚本,但习惯Ubuntu需要一些时间.即使在脚本编写之外,还有很多东西需要学习,例如如何使用包管理器,如何以不会混淆未来更新的方式安装包,如何配置包等.您肯定必须学会使用SSH ; 它是*nix世界中最基本的服务器管理工​​具之一.

    学习使用Ubuntu或其他服务器平台的另一种方法是使用像Heroku这样的平台即服务选项,因为PaaS托管服务提供商真的会为您处理所有这些事情.我推荐这种方法.尽管如此,即使我认为PaaS对于那些想要专注于开发而不是服务器管理的人来说是一个很好的选择,无论他们的技术水平如何,对Linux服务器平台的一点点经验也是如此.帮助您了解代码运行的环境.因此,即使您使用PaaS,您仍然可以从一点点(或很多)修补Ubuntu中受益.

    PaaS的另一个好处是,通常他们的基础设施处理交易的Nginx部分(通过代理缓冲慢速请求).例如,Heroku就是这种情况.因此,您根本不必担心基础架构的这一部分.

  3. 问题的这一部分过于宽泛而无法回答,但如果您需要澄清,请在评论中告诉我.