【问题标题】:What is the more effective dev/test/prod environment setup for PHP development..?什么是 PHP 开发更有效的 dev/test/prod 环境设置..?
【发布时间】:2010-10-23 19:58:34
【问题描述】:

不幸的是,我从来没有一位高级开发人员或导师向我展示一些最佳实践。所以我在我的 Windows 机器上使用 WAMP 开发站点(php/mysql),我在生产服务器上的隐藏(密码受限)文件夹中进行测试,最后将站点移动到生产文件夹。

我希望有一个更流畅/实用/防错的设置,以便从开发 > 测试 > 生产中不会出现任何问题。

重点/问题是(你可能会想出更多):

  • 易于使用
  • 网站上线后易于开发/测试修改(以避免在生产网站上进行测试)
  • local/test/prod 之间没有服务器差异(错误报告、apache 设置等)
  • 避免 DB 差异问题(例如:如果添加了列,如何将它们添加到 prod DB。?)
  • 您是跳过测试环境还是在同一环境上进行开发和测试?
  • 等等……

你们是如何开发 PHP/MySQL 网站的?

你使用SVN吗?你使用 IDE 吗?你使用虚拟机吗?

谢谢。

【问题讨论】:

    标签: php


    【解决方案1】:

    这是一个常见的问题——这就是为什么大多数经验丰富的开发者不回复的原因——并且通常会以激烈的观点结束一场激烈的战争。所以,要小心。

    但你似乎是个好人,打算走上正确的道路,寻找一些真正富有成效的道路。几年前,我对此有所认识。

    好的,首先要记住的是:不要盲目跟随任何人。任何人都可以声称自己是一位伟大的大师,但你可以找到至少 10.000 名好得多且完全匿名的人。因此,对于您听到的任何事情,请执行以下操作:倾听、测试并得出自己的结论。如果只有一条黄金法则,就是这样。在你自己的结论出现之前,其他一切都是蹩脚的。你是你的最终评委。

    也就是说,让我开始讨论最新的问题之一:IDE。你应该用什么?您应该使用可以生产更多并使您更舒适的那一种。 Netbeans、Eclipse、VIM、Notepad++、Notepad、gedit、kate、quanta plus……你有很多选择,每个人都有自己的看法。测试您认为有趣的内容,然后继续选择您选择的内容。

    这也适用于任何方法、框架或工具。使用、学习和批评它。坚持使用让您更舒适、更高效的产品。

    开发环境也是如此。如果您在 Windows、Mac 或 Linux 上进行开发,这并不重要。重要的是获得您需要的可用资源。您需要的资源可以而且通常确实会从一个项目更改为另一个项目。

    因此,开发某个项目的最佳环境是反映生产运行的真实环境的环境。如果您使用 PHP 5.3 OOP 资源进行开发并最终使用 PHP 5.1 会怎样?这才是重点。最终的环境是谁告诉你什么是最好的开发环境,而不是相反。

    对于测试,您应该跟踪策略。我说的是作为 IBM 内部 5 年的测试团队负责人。这是因为您可以执行大量测试,但并非所有测试都对当前项目真正感兴趣。

    首先根据项目需要决定你要测试什么。安全性、性能、UI 显示、UI 效果、错误处理、负载和平衡、可用性、可访问性...

    记下您要测试的内容(内容、时间、地点、成功标准),并记录成功和失败情况。

    正如我之前所说,项目需求是指导您完成每一步的东西。测试没有什么不同。如果您只需要查看不同浏览器上的显示,请随意使用不同的机器或虚拟机。

    一般来说这就足够了。但是如果项目需要性能或负载测试,那么您将需要特定的负载测试软件。这个主题我不会深入,因为它非常广泛。

    找到一个理想的流程和工具匹配需要一些时间,在实现之后,您总会发现一个新的工具来测试或一个流程,让您节省一点时间。这就是 IT。

    【讨论】:

    • 好评论,完全同意!我可以添加的一件事是学习如何在 apache 中设置虚拟域。远离localhost/project。那是纯粹的邪恶!使用:myproject.local
    【解决方案2】:

    这是我的建议:

    • 拥有一个纯粹用于开发的开发环境。根据您可以使用的资源保持一个登台和/或现场环境。暂存环境是您测试并确保您的应用程序没有严重问题的地方。现场环境基本上是您的生产设置。事实上,舞台和现场应该总是一样的。在暂存中重现问题并在不修改代码的情况下进行一些故障排除很有用。请记住,这也适用于任何关联的数据库。

    • 使用 SVN 或某种形式的版本控制。这样,如果有一天世界分崩离析,您将能够回退到应用程序的任何稳定版本!

    • 如果您使用的是 Linux 环境,您可以编写简单的脚本以将设置与最新 (STABLE) 开发环境同步。理想情况下,您进行开发并进行单元测试,以确保一切按设计工作。运行脚本并使用最新的代码库更新登台环境。对暂存进行功能测试,并确保一切都按规范工作。运行另一个脚本,您的最新更改将移至实时/生产环境。

    【讨论】:

      【解决方案3】:

      我的开发过程还是有点坎坷,也很期待答案。

      我为大型项目所做的是在我的 linux 桌面和 windows 桌面上设置一个 git repo。如果可能的话,我会在本地测试。作为完成的组件,我会将我的更改推送到集中托管的 git repo(通常是私有 git hub 帐户),或者将它们拉到 dev(我将 dev 设置为 repo 并从 ssh 拉)。所有 MySQL 更新都存储在更新文件中,我使用 netbeans 进行开发(虽然我使用过 eclipse 和其他工具,但 netbeans 只适用于我)。

      【讨论】:

        【解决方案4】:

        我认为你抓住了所有重要的观点。就个人而言,我

        • 在生产服务器和我的开发系统上运行相同的操作系统和服务器软件。相同版本的 PHP、Python、MySQL、Django 等。
        • 我不经常更改数据库结构。我在开发人员上设置了数据库表。系统,然后使用mysqldump产生建表SQL。我使用mysql <name_of_sql.file 将它安装在服务器上。当我进行更改时,我会备份数据库,然后通过命令行界面进行更改。对于 PHP,我使用 Doctrine 只是为了支持表结构/迁移。
        • 我在 Kate (Linux)、Komodo Editor (Mac) 或 Notepad++ (Windows) 中编写所有内容。我不太喜欢 IDE,我更喜欢直截了当的文本编辑器。
        • 我将文件上传到暂存目录,并在将它们复制到实际位置之前使用 diff 检查它们。

        这不是最复杂的设置,但对我来说效果很好。我是唯一参与我参与的项目的开发人员,这可能解释了很多。最重要的部分,这不仅仅是个人偏好,是第一个 - 使您的开发/测试系统尽可能接近生产系统,包括操作系统。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-30
          • 2020-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多