在继续开发的同时在本地网络中部署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 自动化部署
Java+Tomcat:使用已部署的 WAR 文件继续开发(手头没有源代码)