4

我最初是一名 .NET 开发人员,当时当我们不得不从 Visual Studio 发布软件时,我们必须将其切换到发布模式,以确保删除调试挂钩并留下存储库文件。最终结果是一组干净的文件准备好投入生产。

在切换到 Django 并使用它近三个月后,我现在准备部署第一个应用程序。我已经阅读了相当多的内容。我知道如何将调试设置为 False 并拥有 production_setting.py 以及如何在 Apache 上使用 WSGI 进行部署。

但是我还没有想出一个很好的发布版本的过程。

根据我现在所知道的,我会为发布执行以下操作:

  • 手动将所有文件复制到上传目录(不包括隐藏的 mercurial 目录)
  • 全部压缩
  • 通过 SCP 将它们发送到 Ubuntu 服务器
  • 登录到服务器
  • 提取 zip 文件并将所有内容放置到位
  • 修改 setting_production.py 并输入凭据

这是 Django 部署的健康过程吗?:)
仅供参考,我正在使用 Aptana Studio 3.2.1

感谢您的任何提示

4

2 回答 2

2

你可以看看Fabric;文档将其描述为

... 一个 Python(2.5 或更高版本)库和命令行工具,用于简化 SSH 在应用程序部署或系统管理任务中的使用。

它能够做你想做的所有事情。

您的“部署”任务可能有几个子任务(_upload_tar_from_hg()等),但_migrate() 总体情况如下:

from fabric.api import * 

env.release_name = 'foo_bar-1.0'
env.deployment_path = '/var/www/django/%s' % env.release_name    

def deploy():
    local('hg archive -t tgz $s.tar.gz' % env.release)
    put('%s.tar.gz' % env.release, env.deployment_dir)
    run('cd %s && tar -xzvf %s.tar.gz' % (env.deployment_path, env.release))
    local('rm %s.tar.gz' % env.release)
    run('cd %s/%s && ln -s settings_production.py settings.py' % (env.deployment_path, env.release))

这依赖于有一个单独settings_production.py的源代码控制,这可能不合适。Fabric 可以在文本文件中查找和替换,或者您可以使用local_settings.py.

查看Fabric 教程以填补空白(例如为您的服务器指定连接详细信息。设置完成后,只需运行

fab deploy

该过程应自动进行。

NB从 Mercurial 创建一个没有元数据的存档是使用命令hg一步完成的)hg archive

于 2012-08-06T14:33:16.277 回答
1

在目标服务器上设置远程 Mercurial存储库。使用带有“hg”用户的 SSH 密钥通常是最安全的方式,因为您可以只限制对该用户的 shell 访问,并且只允许它访问 repo。

推送到该存储库并使用 post-receive 挂钩将您的推送签入您的 Web 服务器将从中提供服务的文件夹(并在需要时重新加载您的 Web 服务器)。

您还可以在设置文件中添加一个条件,检查应用程序是否在生产服务器上(例如检查文件或环境变量)并加载相关设置(settings_prod.py 或 settings_dev.py)

于 2012-08-09T00:27:18.283 回答