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