问题在标题中。
我需要在本地网络中部署一个 Django 应用程序(我仍然不知道该怎么做,但我想这很容易)但我仍然需要开发它。我的问题是如何让用户在我仍在开发应用程序时使用它?
它是保持应用程序版本的解决方案,一个已部署,一个正在开发中?这样,当我完成编码时,我可以替换新开发的应用程序部署的应用程序。
另一个问题是关于数据库的,如果我只添加新模型而不触及现有模型,我还能修改数据库吗?
先感谢您,
问题在标题中。
我需要在本地网络中部署一个 Django 应用程序(我仍然不知道该怎么做,但我想这很容易)但我仍然需要开发它。我的问题是如何让用户在我仍在开发应用程序时使用它?
它是保持应用程序版本的解决方案,一个已部署,一个正在开发中?这样,当我完成编码时,我可以替换新开发的应用程序部署的应用程序。
另一个问题是关于数据库的,如果我只添加新模型而不触及现有模型,我还能修改数据库吗?
先感谢您,
这是一篇很好的博客文章,介绍了使用 Heroku 部署 Django。我将简要介绍所有不同技术的重要性:
Git 或任何其他版本控制系统当然不是必需的。为什么它适合部署 Django 项目是因为您通常按源代码分发您的应用程序,即您不编译它或将其打包为鸡蛋。通常你会组织你的 Git 存储库,这样在服务器上更新你的应用程序只需要你检查最新的源——没有别的。
同样,这不是一个严格的要求,但如果您还没有这样做,我强烈建议您花时间熟悉 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
。瞧,Gunicorn,Django 和所有其他依赖项都将安装并立即可用。当您使用 中的 Python 实例运行 Gunicorn Django 脚本时/app/path/scripts
,该脚本将立即可以访问 Gunicorn 源代码,并且它将能够找到您的 Django 项目,该项目也可以访问 Django 和其他依赖项。
这是实际的 Python 应用程序,它将管理您的 Django 实例并提供一个将其公开给 HTTP 客户端的 HTTP 接口。它将启动几个工作进程,这些进程都是不同的 Python 虚拟机,加载了应用程序的源代码及其依赖项。主 Gunicorn 进程将依次负责管理哪些工作进程管理哪些请求以获得最大吞吐量。
需要注意的最重要的一点是,Nginx 和 Gunicorn 是您独立管理的独立进程。
Nginx Web 服务器将公开,即可以通过 Internet 直接访问。对于静态媒体的请求,例如实际图像、CSS 样式表、JavaScript 源代码和可通过文件系统访问的 PDF 文件,Nginx 将负责将它们在响应正文中返回给 HTTP 客户端,如果您将其配置为查找路径上的文件您将项目配置为收集静态媒体。
任何其他请求都应代理到您的 Gunicorn 实例。它将被配置为在环回接口上的某个端口上侦听 HTTP 请求,因此您将使用 Nginx 作为反向代理来http://127.0.0.1:8080
处理对 Django 实例的请求。
这是将您的 Django 项目部署到生产环境的基本纲要,应该可以满足 95% 的 Django 项目在生产环境中运行的需求。虽然我确实参考了 Nginx 和 Gunicorn,但它是设置任何 Web 服务器以充当 Python WSGI 服务器的反向代理的常用方法。