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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在继续开发的同时在本地网络中部署Django相关的知识,希望对你有一定的参考价值。

问题出在标题中。

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

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

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

先感谢您,

答案

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

当然不需要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实例。它将被配置为侦听loopback接口上某个端口上的HTTP请求,因此您将使用Nginx作为http://127.0.0.1:8080的反向代理来处理对Django实例的请求。

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

以上是关于在继续开发的同时在本地网络中部署Django的主要内容,如果未能解决你的问题,请参考以下文章

Django 博客开发教程 15 - 使用 Fabric 自动化部署

Django 博客开发教程 15 - 使用 Fabric 自动化部署

在 OS 10.9 服务器上部署 Django

Java+Tomcat:使用已部署的 WAR 文件继续开发(手头没有源代码)

将 Django 模型部署到网络服务器后,如何对其进行更改?

腾讯云部署Django成功,本地无法访问网页的解决办法