在继续开发的同时在本地网络中部署Django

时间:2017-12-20 17:20:43

标签: django django-models django-views django-database django-deployment

问题出在标题中。

我需要在本地网络中部署Django应用程序(我仍然不知道该怎么做但我认为这很容易)但我仍然需要开发它。我的问题是如何让用户在我开发它的同时使用该应用程序?

这是一个保持应用程序版本的解决方案,一个已部署,一个正在开发中?通过这种方式,我可以在完成编码后替换新开发的应用程序。

另一个问题涉及数据库,如果我只是在不触及现有模型的情况下添加新模型,我还可以修改数据库吗?

提前谢谢你,

1 个答案:

答案 0 :(得分:4)

这是一个很好的blog entry,涵盖了使用Heroku部署Django。我将简要介绍一下使所有不同技术变得重要的原因:

GIT中

当然不需要Git或任何其他版本控制系统。为什么它适合部署Django项目是因为您通常按来源分发您的应用程序,即您不编译它或将其打包为鸡蛋。通常,您将组织您的Git存储库,以便在服务器上更新您的应用程序只需要您检查最新的源 - 没有别的。

virtualenv和pip

这再一次,并不是一个严格的要求,但我强烈建议你花点时间熟悉virtualenv和pip,如果你还没有这样做,因为它已经去了在本地或远程的不同运行时环境中部署Python应用程序,轻而易举。

基本上,你的项目至少需要在Python路径上提供Django和Gunicorn,甚至可能是数据库驱动程序。这意味着,每当您尝试在某个地方部署应用程序时,您都必须安装Python并进行easy_install全程舞蹈。

virtualenv将重新分发Python安装,这反过来意味着默认情况下,新的Python实例将具有相对于安装的自己的Python路径配置。 pip与类固醇上的easy_install类似,因为它支持直接从代码库中检出Python依赖项,并支持需求文件格式,您可以使用它来一次性安装和配置所有依赖项。

使用virtualenv和pip,您需要做的就是拥有一个简单的文本文件,其中包含所有依赖关系,可以使用pip解析并在计算机上安装Python发行版。从那里你只需git checkout repo /app/path; easy_install virtualenv; virtualenv /app/path; ./app/path/scripts/activate; pip install -r /app/path/requirements.txt。然后安装并立即提供Voila,Gunicorn,Django和所有其他依赖项。当您使用/app/path/scripts中的Python实例运行Gunicorn Django脚本时,脚本将立即访问Gunicorn源,并且它将能够找到您的Django项目,该项目还可以访问Django和其他依赖项。

Gunicorn

这是实际的Python应用程序,它将管理您的Django实例并提供将其公开给HTTP客户端的HTTP接口。它将启动几个工作进程,这些进程将是加载了应用程序源及其依赖关系的不同Python虚拟机。主要的Gunicorn流程将负责管理哪些工作流程管理哪些请求获得最大吞吐量。

连接Nginx和Gunicorn的基本原理

最值得注意的是,Nginx和Gunicorn是您独立管理的独立流程。

Nginx Web服务器将公开发布,即可以通过互联网直接访问。对于静态媒体的请求,例如实际图像,CSS样式表,JavaScript源和通过文件系统可访问的PDF文件,Nginx将负责将它们在响应主体中返回给HTTP客户端,如果您将其配置为在路径中查找文件您已将项目配置为收集静态媒体。

任何其他请求都应该代理您的Gunicorn实例。它将被配置为在回送接口上的某个端口上侦听HTTP请求,因此您将使用Nginx作为http://127.0.0.1:8080的反向代理来处理对Django实例的请求。

这是将Django项目部署到生产环境中的基本纲要,应该满足95%Django项目的需求。虽然我确实引用了Nginx和Gunicorn,但它是设置任何Web服务器以充当Python WSGI服务器的反向代理的常用方法。