代码之家  ›  专栏  ›  技术社区  ›  Dan Soap

如何将网站部署到Web服务器?

  •  14
  • Dan Soap  · 技术社区  · 17 年前

    在我的公司,我们有一组8个Web开发人员用于我们的业务网站(完全用PHP编写,但这不重要)。团队中的每个人都在同一时间处理不同的项目,每当他们完成任务时,他们都会立即部署它(因为现在业务发展很快)。

    目前,开发是在一个共享服务器上进行的,所有开发人员都在同一个代码库上工作(使用rcs将文件“锁定”在其他服务器之外)。当部署到期时,更改的文件将被复制到“临时”服务器上,然后同步脚本将文件上载到我们的主Web服务器上,从该服务器将文件分发到其他9个服务器上。

    很高兴,Web开发团队请求我们帮助以改进流程(在我们抱怨了一段时间之后),现在我们建立他们的开发环境的想法如下:

    • 一个带有虚拟目录的dev服务器,这样每个人都有自己的代码库,
    • SVN(或任何其他VCS)跟踪变化
    • 用于测试保存最新签入代码的中央服务器

    现在的问题是:我们如何在不意外地从其他项目上载错误的情况下,将更改的文件部署到服务器上?我的第一个想法是简单地从存储库中导出最新的版本,但这并不能完全控制文件。

    你如何处理这种情况?您有什么样的部署脚本?

    (作为一个特殊的挑战:网站在过去的10年中已经有了有机的增长,因此项目不是分成小块,而是一个特定功能的文件分散在目录树上。)

    7 回复  |  直到 9 年前
        1
  •  10
  •   Ask Bjørn Hansen    17 年前

    卡西——显然,要想让源代码管理完全井然有序,还有很长的路要走,但听起来你已经上路了!

    拥有一个单独的沙盒肯定会对事情有所帮助。接下来,确保网站始终只是从Subversion中清除特定修订、标记或分支的一个干净的签出。

    我们使用Git,但我们有类似的设置。我们用一个版本号标记一个特定的版本(在Git中,我们还可以在标签中添加描述;这对于发行说明很好!)然后我们有一个脚本,任何有权访问“做一个发布”的人都可以运行它,这个脚本需要两个参数——哪个系统将被更新(数据中心,如果我们要更新测试或生产服务器),然后是版本号(标记)。

    该脚本使用sudo,然后在共享帐户中运行发布脚本。它检查相关版本,最小化javascript和css 1 ,将代码推送到环境的相关服务器,然后重新启动需要重新启动的内容。发布脚本的最后一行连接到一个WebServer,并跟踪错误日志。

    论 our websites 我们在每个页面的底部添加了一个HTML注释,其中包含当前服务器名称和版本,这使得我们很容易看到“现在运行的是什么?”

    一 还有其他一些家务活…

        2
  •  2
  •   jishi    17 年前

    如果单个项目对共享代码库进行了巨大的更改,那么您应该考虑为它们(在同一代码库上)使用分支和合并。

    我们通常有一个本地开发环境用于测试(也就是说,webserver本地)未限制的代码(您根本不想提交不起作用的代码),但开发环境甚至可以使用共享文件夹在单独的服务器上。

    但是,在将提交的代码投入生产之前,应该将它部署到临时服务器上进行测试。

        3
  •  1
  •   stunti    17 年前

    你也许可以用Capistrano,尽管它更适合Ruby articles 描述如何将其用于PHP

    我认为phing可以与cvs一起使用,但不能与svn一起使用(至少是我上次读到的内容)

    还有一些项目是模仿Capistrano的,但是用PHP编写的。

    否则,还有一个定制的解决方案:

    1. 要部署的标记文件。
    2. 使用中的标记签出文件
      特定目录
    3. 符号将目录链接到当前目录 文档根目录(易于回滚到 上一版本)
        4
  •  1
  •   Syntax    17 年前

    自然退房 SVN 对于存储库, Trac 跟踪事情,以及 Apache Ant 部署。

    基本过程是在Subversion中管理,跟踪Trac中的Repositroy和开发人员,并使用Ant部署脚本将站点推出所需的设置。Ant允许您轻松地将项目部署到特定位置。(开发/测试/生产)等

        5
  •  0
  •   cjk    17 年前

    你需要看看:

    • 持续集成
    • 在代码签入时运行单元测试以检查它是否没有错误
    • 如果代码包含错误,则可能拒绝代码
    • 夜间建造
    • 只发布最后一个没有bug的版本

    你可能得不到一个完美的解决方案,尤其是一开始,但你使用你选择的解决方案越多,每个人都会变得越舒服,并且能够提出改进的建议。

        6
  •  0
  •   Techmaddy    17 年前

    我们用 ant ,每晚。并使用Ant脚本进行部署。它很容易配置和使用。

        7
  •  0
  •   Community Mohan Dere    9 年前

    我给了一个 similar answer 昨天又问了一个问题。基本上,您可以在分支中工作,并在上线前集成。

    你要做的最重要的事情就是要处理好 变化 到文件,而不是单个文件。一旦你有了分支,就没有一个真正的当前版本,只有版本中有不同的更改。

    推荐文章