【问题标题】:How do you update your web application on the server?您如何更新服务器上的 Web 应用程序?
【发布时间】:2008-09-01 12:56:40
【问题描述】:

我知道Capistrano,但它对我来说有点太重了。我个人设置了两个Mercurial 存储库,一个在生产服务器上,另一个在我的本地开发机器上。通常,当新功能准备就绪时,我会将更改从本地计算机上的存储库推送到服务器上的存储库,然后在服务器上进行更新。这是在多台计算机上保持文件同步的非常简单快捷的方法,但无助于更新数据库。

你对这个问题的解决方案是什么?

【问题讨论】:

    标签: deployment web-applications maintenance administration


    【解决方案1】:

    我曾经使用 git push 发布到我的网络服务器,但最近我一直在使用 rsync。我试图让我的网站尽可能不知道它在哪里运行(使用相对路径等),到目前为止它运行得很好。唯一的挑战是保持数据库同步,为此我通常使用生产数据库作为主数据库,并定期备份并导入我的测试数据库。

    【讨论】:

    • 我也在做同样的事情,但最近它让我觉得这真的不是原子的。对于经常使用的网站来说不是最佳选择(人们可能会在尚未同步所有文件的损坏阶段访问它)。
    • 我会补充一点,一种更优化的方法是在文件夹 B 包含您的实时网站时 rsync 到文件夹 A,然后通过覆盖指向的符号链接来执行从 A 到 B 的切换当前的实时版本。然后下一次,rsync 到 B。
    【解决方案2】:

    或者Fabric,如果你更喜欢 Python。

    【讨论】:

    【解决方案3】:

    capistrano 有什么重量级的?如果你想同步文件,那么确保 rsync 很棒。但如果你需要进行数据库更新,也许 cap 还不错?

    【讨论】:

      【解决方案4】:

      我假设您说的是 Ruby on Rails。

      查看 HowTo wiki:

      http://wiki.rubyonrails.com/rails/pages/Howtos#deployment

      【讨论】:

      • 链接现在是 404
      【解决方案5】:

      @安德鲁

      要使用 git push 来部署您的站点,您首先需要在 .git/config 文件中设置一个远程服务器以进行推送。然后你需要配置一个钩子,它基本上会执行 git reset --hard 将你刚刚复制到存储库的代码复制到工作目录。

      我知道这有点含糊,但我实际上在切换到 rsync 后删除了服务器端的 .git 文件夹,所以我没有用来实现魔法的确切脚本。不过,这可能是一个完整问题的不错候选者,因此您可能会通过这种方式获得更多回复。

      编辑:我知道已经有一段时间了,但我最终还是找到了我正在使用的东西:

      Deploy a project using Git push

      【讨论】:

        猜你喜欢
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        • 2015-10-10
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        相关资源
        最近更新 更多