django - 如何在没有 Mercurial 文件的情况下将 Django 部署到生产服务器?

标签 django mercurial

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

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

但我仍然没有弄清楚推出版本的一个很好的过程。

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

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

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

感谢您的任何提示

最佳答案

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

... a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

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

您的“部署”任务可能会有多个子任务(_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 可以在文本文件中查找和替换,或者您可以使用 a local_settings.py approach 组合设置.

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

fab deploy

并且该过程应该自动进行。

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

关于django - 如何在没有 Mercurial 文件的情况下将 Django 部署到生产服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11826334/

相关文章:

python - Django Rest Framework - 添加身份验证的最佳方法

ruby-on-rails - 等同于 Rails 的 Django 信号?

python - 有谁知道用于 snmp 监控的基于 python 的 Web ui 吗?

jquery - 使用 Django、jQuery 和 Ajax 的投票系统

Mercurial:hg revert --all 和 hg up -C 之间有什么区别?

mercurial - 提交后添加到 Mercurial 中的重命名跟踪

svn - 可扩展(50 万个文件)版本控制系统

python - 没有更改的PATCH请求应返回什么状态码?

php - 如何在 PHP 页面上显示 hg 存储库的当前工作副本版本

eclipse - 在eclipse中用mercurial填充@version标签/关键字替换