如何部署中型Django App

时间:2014-07-20 21:23:29

标签: django apache amazon-ec2 web-hosting django-wsgi

我刚刚完成了我的Django App。这几个月,我一直在使用

在本地服务器上运行应用程序
python manage.py runserver

它在127.0.0.1上运行,只能在我的电脑上访问。现在我已经完成了我的应用程序,我希望它可供全世界访问。我尝试研究如何部署我的django应用程序,并且可能像我情况下的大多数人一样,我现在完全迷失了。 “WSGI,AWS,WebFaction,域名,Web托管,共享托管,服务器,VPS供应商,RackSpace,Apache2等”等字样'都飞来飞去。

我看到的第一篇文章就是这篇文章: How to setup Django website in Amazon EC2 hosting?

该帖子称Amazon EC2服务器很好,但建议使用WebFaction / Dreamhost。我决定选择Amazon EC2而不是WebFaction / DreamHost。我谷歌关于亚马逊EC2,然后我发现自己阅读有关AWS和VPS供应商如RackSpace的比较。然后我同意使用Amazon EC2而不是RackSpace。然后我心想,我从哪里购买域名?我知道goDaddy非常适合托管多米安人,所以我调查了一下,我发现godaddy并不支持Django。我谷歌的网络托管公司支持Django,我再次遇到了WebFaction。等等,我使用WebFaction注册域名和亚马逊来托管网站?我看看WebFaction的价格,他们给出了带宽,磁盘空间,服务器位置等的价格。我谷歌谷歌的价格,他们谈论完全相同的事情:服务器的位置,空间等。此时,我没有&#39甚至知道WebFaction和AWS是否完成相同的事情,如果我应该选择其中一个,或者WebFaction是否只是为服务器托管域和AWS?然后我决定研究服务器,希望能找到一个关于亚马逊服务器如何工作以及它们与域托管站点的关系的帖子。相反,我发现自己在阅读有关Apache的内容。嗯,所以Apache现在是另一种选择吗?我谷歌了解Apache服务器和AWS之间的关系,发现我可以在AWS上设置Apache?那么我需要WebFaction,AWS和Apache来部署我的Django应用吗?

我尝试了更多有关部署Django应用程序的研究,并发现了一篇关于WSGI的帖子。似乎我做的研究越多,我就越困惑。所以我需要你的帮助:

Django应用程序基本上是一个博客'网站,允许用户创建帐户,上传图像,评论和类似图像,关注其他用户,发布帖子(仅包含文字和图片),评论帖子和类似帖子。

Django应用程序面向约1500名用户(我估计前两个月内约有1500名用户)。该应用程序也将被安装在Android和iPhone应用商店中(通过WebView)。我的hostOS是Windows 8,但我下载了一个VM(运行Lubuntu)并使用Django 1.5,Python 2.7在Lubuntu中完成了我所有的Django,并且还必须安装PIL和Pillow。我使用了PostgreSQL数据库。有了所有这些细节,我应该如何托管我的网站?

我不想说'我应该使用哪些服务器'因为有些人会说“亚马逊”,有些人会说“DreamHost”,有些人可能会说“购买域名然后用户亚马逊”。有些人甚至可能开始谈论WSGI和Apache让我真的很困惑。

我需要采取哪些步骤来托管我的1500用户应用程序?一旦应用程序遇到1500个用户并开始高于此用户,那么我会考虑切换到更大的服务器,但对于前1500个用户,我应该在哪里购买域名并托管该站点?该网站需要在接下来的3周内上线(因此,如果强烈推荐VPS供应商或Amazon EC2,我可以花一整周的时间来了解它们)。我只想知道是否有更推荐,更简单的解决方案,而不是直接进入VPS供应商或购买域并使用Amazon EC2服务器。

编辑:这应该改为ServerFault吗?

1 个答案:

答案 0 :(得分:1)

这里有几个层次,你们都需要,但最初可能会令人困惑。要在生产环境中设置Django站点,您将需要:

  • 服务器硬件。
  • 网络服务器软件。
  • Python连接器(WSGI)。
  • 已注册的域名与DNS记录。

托管服务可让您访问服务器硬件。您在物理服务器上租用物理服务器或虚拟环境。大多数托管平台包括域名注册和管理DNS记录,但有些可能要求您在其他地方寻求这些服务。

为了使服务器在收到请求时实际提供http响应,它必须运行Web服务器进程。 Apache和Nginx就是这样的网络服务器。 WSGI是允许Web服务器与Python应用程序通信的标准。您需要实现此功能才能连接到Django应用程序。一些选择是gunicorn,uWSGI和Apache的mod_wsgi。

有了这些信息,您应该能够理解大多数解释如何部署Django应用程序的文章。除了关于WSGI的部分之外的所有内容也适用于任何其他网站,而不仅仅是Django。