代码之家  ›  专栏  ›  技术社区  ›  luc

将django应用程序从dev移动到prod时出现的常见错误?

  •  5
  • luc  · 技术社区  · 16 年前

    我正在windows、sqlite和django dev服务器上开发django应用程序。我已经将它部署到我的主机服务器上,它运行linux、apache、fastcgi和mysql。

    不幸的是,当开发机器上一切正常时,prod上的服务器返回了一个错误。为了能够调试和理解问题,我已经向我的提供商请求了一个预生产解决方案。

    不管怎样,根据Deango应用程序从DeV移动到PROD时可能发生的错误是什么?

    最好的

    更新:我认为预生产是解决此类问题的最佳方法。但我想建立一个清单,列出在投入生产之前必须做的事情。 谢谢你给我的宝贵回答:)

    更新:FYI,我已经实现了SyPROD服务器和电子邮件通知,如Shanu建议的,我可以看到错误来自 smart_if templatetag 我用在这个新版本上。模板标签有什么诀窍吗?

    更新:我想我已经修复了PB,这是由FiZelILFTP发送引起的。我使用的是“替换如果更新”选项,我猜这是导致一些意想不到的结果。使用“全部替换”选项解决问题。然而,这是一个让我更多地了解部署的机会。谢谢你的回答。

    3 回复  |  直到 16 年前
        1
  •  7
  •   John Paulett    16 年前

    我通常遇到的问题包括:

    1. 产品设置配置错误,无论是在my production localsettings.py、wsgi/cgi中,还是在/etc/sites中的apache站点文件中
    2. 数据库差异。我用 South 对于迁移,当在sqlite中顺利运行时,在postgresql上执行迁移时遇到了一些微妙的问题。
    3. 静态文件托管,因为我作弊并在开发中使用django服务器
    4. 文件系统和数据库中的权限
    5. 很少,但可能的是,网络问题使我无法获得依赖项,无论是在pypi还是某些第三方站点上。

    我缓解这些问题的方法:

    • 在生产和开发中使用相同的数据库(在您的例子中,mysql无处不在)
    • 我发现有一个“测试”环境是有用的,它能以各种可能的方式模拟生产(它可以在低端硬件上,甚至在同一台机器上)。这样,如果在“类生产”环境中有任何问题,我可以在不把生产服务器脱机的情况下解决它们。
    • 为可重复部署编写所有脚本。我用 fabric ,但是zc.buildout或paveler也可以工作。这些工具有助于在部署时减少输入错误,并缩短部署我的应用程序的时间。
    • 使用版本控制(mercurial、git、subversion)和模式迁移工具(如south),因此如果在部署到生产环境时出现问题,则有可能撤销更改,并允许生产环境使用旧数据库模式在旧代码上运行。
    • 我还没有建立一个 egg proxy “不过,我正在考虑,以避免下载依赖项时出现问题。
    • 我找到了 pip's 冻结依赖项以备在我最初下载库后发生新的、不兼容的库更改时使用
    • 使用一个Web测试框架,如风车或硒来测试我的应用在我的“测试”环境中,这样我就可以很快地获得大量的测试覆盖我的系统。
        2
  •  1
  •   shanyu    16 年前

    关于你的情况,我可以想出2件简单的事情来帮助你:

    1. 当异常发生时,您可以启用Django发送消息,并给出详细信息。看 here 详情。
    2. 如果您在推送服务器上设置测试环境(例如,测试版),您会更好,这样您就可以在部署应用程序之前检查是否顺利。
        3
  •  0
  •   user199671    16 年前

    我相信这些是我最近听到的播客(来自Pycon2009):

    在现实世界中找到Django(Pycon 2009):

    http://advocacy.python.org/podcasts/pycon.rss

    第1至第3部分

    非常好地介绍了如何为部署设计应用程序,特别是为重用和重新部署设计应用程序。

    雷斯。