【问题标题】:Should I use git to deploy websites? [closed]我应该使用 git 来部署网站吗? [关闭]
【发布时间】:2010-10-13 07:42:39
【问题描述】:

我有一个在 django 上运行的网站,(但问题适用于任何东西,php 等)

目前我正在使用unison 来部署我的更改,我(有点习惯)喜欢它,因为在此之前我是手动进行的!!

现在,当我被 git 弄湿的时候,我开始喜欢它了!而且我正在考虑是否应该使用它而不是统一来部署我的更改!

如果以某种方式部署更改被证明是一场灾难,我将获得额外的好处,即能够恢复我的更改!

问题是:

  • git适合部署网站吗?

  • 我应该注意什么/问题/陷阱?

【问题讨论】:

    标签: django git deployment project-management


    【解决方案1】:

    我使用 git 来跟踪我的网站,并像这样部署它:

    git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html"
    

    这值得稍微解释一下。 git 的归档命令将导出 master 分支的文件,该文件使用 gzip 压缩以最小化网络流量。它是通过 ssh 远程接收的,解压到最终的目标目录中。

    我使用的部署脚本还有一些工作要做,但这是最重要的部分。

    【讨论】:

    • 如何安排从服务器中删除文件? rsync 可以接受 tar 风格的输入吗?
    • 每次部署都会创建一个新的、版本化的目录并进行符号链接,这使得恢复更容易。这就是“还有更多事情要做”部分发挥作用的地方。
    • 到目前为止,我也使用 unison。这样做的好处是,双方的更改会自动同步(除非双方都更改了相同的文件)。我也想切换到服务器上的 git 部署。但不是这样。 git checkout 在服务器上运行。代码由 git pull 更新。
    【解决方案2】:

    你可以看看Fabric,在 Djangonauts 中很受欢迎......

    【讨论】:

      【解决方案3】:

      如果问题是您是否可以使用 git 来部署您的 django 应用程序,那么答案是肯定的!

      但是,流行应用程序的生产部署可能会变得复杂,而且远远超出了回滚文件的范围。您可能需要运行数据库脚本(升级和降级脚本)、重新启动 cron 作业或移动文件。

      作为部署过程的一部分,您可能希望完整备份代码库,以便可以回滚任意数量的版本。

      其中一种方法是使用 Capistrano,它可以为您自动执行整个部署过程。您在开发环境中编写脚本并发出命令,例如:cap deploy、cap deploy_with_migrations、cap rollback 等,从登录一直到备份过程和运行 DB 脚本,一切都是自动化的。通过使部署自动化,您可以消除生产环境中的错误。我最近与一个组织进行了交谈,该组织在部署过程中意外删除了整个数据库,并且需要从备份中恢复所有内容。部署错误确实会破坏您的业务,因此如果您认真对待它,您希望将其自动化。

      虽然 Capistrano 是一个基于 Ruby 的部署工具,通常与 Rails 一起使用,但它的自动化功能是不可知的。互联网上有许多帖子讨论了使用 Capistrano (google - django capistrano) 部署 Django 应用程序的好处。

      您也可以查看check out this link here

      【讨论】:

      • 我认为你把这个复杂化了。这个问题从来没有提到任何类似于流行/复杂的商业网站的东西。但是,capistrano 是一个很好的建议
      【解决方案4】:

      好吧,我使用 SVN 来部署我的网站,所以我会说去吧!请记住,每次更新网站代码时,您可能都必须重新启动/重新加载服务器(我不确定 Django 或您运行它的任何东西是否能够解决这个问题)。

      【讨论】:

      • 供参考:不是直接由django管理服务器是否需要重载,而是server-python桥接。在 Apache-w/-modpython 配置中,对 python 代码的更改需要重新启动 apache,而对模板(或静态文件)的更改则不需要。 ORM 更改需要更多。
      • 从技术上讲,mod_python 的自定义导入器可以在不重启服务器的情况下重新加载更改的 Python 代码,但为了安全起见,我通常还是重启。
      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 2013-09-19
      • 2016-03-07
      • 2018-08-17
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多