django发布管理(分期,测试和生产)

时间:2011-05-21 20:28:01

标签: django agile

我已经进入django一段时间了,我最关注的是学习如何在我的开发机器上本地开发和运行应用程序。现在我正在尝试学习部署和发布管理的最佳实践。

我现在正在尝试在github中设置我的代码,然后以某种方式设置一个生产和暂存环境,在那里我可以以最小的影响推送更改。

我可以遵循最佳做法吗?以及如何创建一个敏捷环境,您可以将代码提交到临时环境中,客户可以在此环境中查看工作。

2 个答案:

答案 0 :(得分:4)

我建议按照lincoln loop中的说明检查流程。您可以在django-startproject直接访问他们的github回购。基本上,django-startproject创建的工作流将隔离开发,测试和生产。您使用

运行开发服务器

manage.py runserver 0.0.0.0:8000 --settings=<Project>.conf.dev.settings

并使用

执行测试

manage.py test --settings=<Project>.conf.test.settings

django-startproject将为pip安装一个需求文件,允许您指定并轻松安装必要的依赖项。我强烈建议将virtualenv与django-startproject结合使用。有关使用virtualenv和Django的好教程可以找到here

django-startproject还包括一个准系统fabric.py脚本,可帮助在远程/云服务器上进行部署。

当然以上所有内容都将使用svn / hg / git / whatever进行源代码控制。

所以在一个简单的ubuntu / debian服务器上的部署过程将是:

sudo apt-get install python-setuptools python-dev build-essential
sudo easy_install -U pip
sudo pip install -U virtualenv
mkdir -p <path>/python-environments
cd <path>/python-environments
# Create the virtual env
virtualenv --no-site-packages --distribute <my project dir>
cd <my project dir>
git clone https://github.com/<my project>.git
cd <my project>
# Install dependencies
pip install -r requirements.pip
# Run tests, setup apache, etc.

从那时起,您可以使用fabric将更改部署到生产服务器。

答案 1 :(得分:3)

  

设置一个生产和登台环境,我可以在最小的影响下推动更改。

在某些情况下这很容易,在某些情况下很难。

在Django中更改数据库设计时,必须重做syncdb,并且在执行此操作时可能必须提取并重新加载现有数据。这很难。有些人使用south。我们是手工完成的,因为south处理了大多数情况,而不是所有

当您发布新代码(无数据库更改)时,升级非常简单。

  1. 当Apache启动时,mod_wsgi启动。
  2. mod_wsgi启动时,它会读取.wsgi个文件以确定要执行的操作。
  3. .wsgi文件 - 本质上 - 定义将调用您的应用程序的Django请求 - 回复处理循环。
  4. .wsgi文件的时间戳发生变化时,mod_wsgi会重新读取该文件。实际上,这将重新启动您的应用程序。
  5.   

    如何创建一个敏捷环境,您可以将代码提交到临时环境中,客户可以在此环境中查看工作。

    这很简单。

    1. 将您的应用程序代码放入/opt/myapp/myapp-x.y/目录结构中。 myapp-x.y名称与git标记名称匹配。

    2. 暂存只是使用app的下一个版本的Django配置。 /opt/myapp/myapp-2.3/。生产是当前版本。 /opt/myapp/myapp-2.2/。是的,有旧版本。

    3. 使用Apache <Location>指令将Apache配置定义为具有两个(或更多)“位置”。一个位置是普通路径的“生产”。另一个是与其他路径“分期”。或者使用虚拟主机。或任何让你开心的Apache事物。

    4. 现在您有两个版本并行运行“locations”。

      您可以通过(可能)重做数据库来调整暂存,并将.wsgi文件更改为指向应用程序的新版本。

      您可以通过(可能)重做数据库来调整生产,并将.wsgi文件更改为指向应用程序的新版本。

      当你有可释放的东西时,请标记它。修复Python setup.pysetup.cfg以部署到下一个/opt/myapp/myapp-tag目录。