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

您首选的php部署策略是什么?[闭门]

  •  157
  • GloryFish  · 技术社区  · 17 年前

    我正在用PHP开始一个新项目,我很想从其他开发人员那里得到一些关于他们首选的PHP部署策略的反馈。我希望自动化一些事情,这样一旦提交了更改,它们就可以快速迁移到开发或生产服务器。

    我有使用Capistrano和Ruby进行部署的经验,还有一些基本的shell脚本。

    在我独自开始之前,如果能听到其他人在他们的项目中是如何做到这一点的,那就太好了。

    目前,开发人员负责站点的本地安装,并将更改提交到subversion存储库。初始部署是通过从svn导出带标签的版本并将其上载到服务器来完成的。

    额外的更改通常是通过手动上传更改的文件进行的。

    15 回复  |  直到 15 年前
        1
  •  109
  •   Nobu Nick Craver    8 年前

    Phing 构建脚本是一种方法。Phing类似于 ANT 但是它是用PHP编写的,这使得PHP开发人员更容易根据自己的需要进行修改。

    我们的部署程序如下:

    • 每个人在工作时都在同一台本地服务器上开发,每个开发人员在家里的机器上都有一个签出。
    • 提交触发更新临时服务器的提交后挂钩。
    • 如果测试通过,则在临时服务器上运行测试-继续。
    • 关闭生产服务器,将域切换到“正在构建”页面
    • 运行模式增量脚本
    • 运行测试
    • 如果测试通过,服务器将路由回生产签出

    还有 phpUnderControl ,这是一个持续集成服务器。老实说,我觉得它对web项目不是很有用。

        2
  •  24
  •   Community Mohan Dere    9 年前

    using Git . 用git的最新副本更新我的生产服务器只需要一个简单的git推送生产。它简单快捷,因为Git足够聪明,只发送差异,而不发送整个项目。它还有助于在web服务器上保留存储库的冗余副本,以防我的终端出现硬件故障(不过为了安全起见,我也会使用GitHub)。

        3
  •  14
  •   jeffbyrnes Sindre Sorhus    13 年前

    我们使用 Webistrano

    Webistrano允许从SVN、GIT和其他平台进行多阶段、多环境部署。它具有内置回滚支持,支持单独的服务器角色,如web、db、app等,并并行部署。它允许您在多个级别(例如每个阶段)覆盖配置参数,并记录每次部署的结果,还可以选择邮寄。

    尽管Capistrano和Webistrano是Ruby应用程序,但部署“配方”的语法非常简单,功能强大,足以让任何PHP程序员理解。最初,Capistrano是为Ruby on Rails项目构建的,但很容易适应PHP项目。

    为了提供尽可能快的部署,我们安装了 fast_remote_cache

        4
  •  7
  •   notneilcasey    17 年前

    Apache Ant 部署到不同的目标(开发人员、QA和live)。Ant设计用于Java部署,但它为部署任意文件提供了非常有用的通用案例解决方案。

    build.xml文件的语法非常容易学习——在命令行上调用ant程序时,可以定义不同的目标及其依赖项。

    例如,我有dev、QA和live的目标,每个目标都依赖于cvsbuild目标,cvsbuild目标从我们的CVS服务器检出最新的head修订,将适当的文件复制到build目录(使用fileset标记),然后将build目录rsyncs到适当的服务器。有一些怪癖需要学习,而且学习曲线并不是完全平坦的,但我多年来一直这样做,没有遇到任何问题,所以我建议针对您的情况使用它,尽管我很好奇在这条线索上还会看到什么其他答案。

        5
  •  6
  •   user42092 user42092    17 年前

    我使用Git手动完成一些事情。一个用于开发的存储库 git push --mirror

    最大的区别是,我几乎在做的每一个更改中都使用分支(我现在有5个分支),并且倾向于在它们之间来回切换。除了合并其他分支外,主分支不会被直接更改。

    我直接从主分支运行实时服务器,当我完成另一个分支并准备合并它时,将服务器翻转到该分支上一段时间。如果它坏了,把它放回主需要几秒钟。如果它能工作,它将被合并到master中,并更新活动代码。我想在SVN中类似的情况是有两个工作副本,并通过符号链接指向活动副本。

        6
  •  3
  •   dragonmantank    17 年前

    我知道 Phing phpUnderControl . 对我们来说

    1. 将分支的单个副本签出到本地计算机
    2. 测试分支,然后将其合并到主干中
    3. 对主干的提交由phpUnderControl自动生成,运行测试并生成所有文档,应用数据库增量
    4. 主干通过质量测试运行,然后并入我们稳定的分支
    5. 当我们准备投入生产时,我们会运行一个rsync脚本来备份生产,更新数据库,然后向上推送文件。rsync命令是手动调用的,这样我们就可以确保有人在观看促销活动。
        7
  •  3
  •   Solomon Hykes    13 年前

    我推荐的PaaS是 dotCloud ,除了PHP( see their PHP quickstart

    当然,我有点偏见,因为我在那里工作!除了dotCloud之外,其他值得一看的选择还有Pagodabox和Orchestration(现在是Engine Yard的一部分)。

    希望这有帮助!

    所罗门

        8
  •  2
  •   Henrik Paul    17 年前

    但是,如果您想要一个PHP的持续集成系统,我想 Phing

        9
  •  2
  •   Clint    14 年前

    我来晚了,但我想我会和大家分享我们的方法。我们用Phing和 Phingistrano ,它通过预构建的构建文件向Phing提供类似Capistrano的功能。它非常酷,但只有在当前使用Git时才有效。

        10
  •  1
  •   Almost Anonymous Almost Anonymous    17 年前

    我在服务器上有一个SVN发布分支的工作副本。更新站点(当没有架构更改时)与发出SVN update命令一样简单。我甚至不必让网站离线。

        11
  •  1
  •   troelskn    17 年前

    另一种选择是使用Capistrano。显然,它与PHP的集成不如与Ruby的集成好,但您仍然可以将其用于很多东西。

    最后,您始终可以编写shell脚本。到目前为止,这就是我所做的。

        12
  •  1
  •   user258626    16 年前

    http://controltier.org/wiki/Main_Page

    我们将使用它进行多服务器部署&维修

        13
  •  1
  •   Rafa    15 年前

    在我的例子中,部署不是自动的。我发现自动部署代码和运行数据库迁移脚本是危险的。

        14
  •  1
  •   Jesse Greathouse    15 年前

    在我的工作中,我和我的团队已经为capistrano的部署开发了一个面向Phing的替代品,我们还将PHPUnit测试、phpcs和PHPDocumentor等Phing中可用的一些优点结合起来。我们制作了一个GitRepo,它可以作为git中的子模块添加到项目中,并且工作得非常好。我已经将它附加到少数几个项目中,并且它的模块化程度足够高,可以很容易地使它与我们几个环境中的任何一个(登台、测试、生产等)上的任何项目一起工作。

    使用phing构建脚本,您可以从命令行手动运行它们,我还成功地使用Hudson和现在的Jenkins ci自动化了构建/部署例程。

    我现在不能发布任何链接,因为repo还没有公开,但有人告诉我,我们有时会很快开放源代码,所以如果您有兴趣或者您对使用phing和git自动化部署有任何疑问,请随时与我联系。

        15
  •  0
  •   Eric Fong    16 年前

    您需要向全世界开放SVN访问

    在生产web服务器中有许多.svn

    ssh到10 www服务器和svn上也是个问题。

    推荐文章