使用Git和PHP进行开发(Web开发)

3
我正在探索测试依赖于特定框架文件的PHP开发代码的最佳方法。我认为git有三种可能的情况:
- 创建生产目录的副本并将此“dev”目录克隆到本地工作站。接下来,您需要在本地工作站上编辑代码并提交/推送每个更改。您可以通过生产服务器上的“dev”URL检查您的工作。如果一切正常,您可以将更改推送到“live”目录。这种方法可能会导致很多提交,因为您正在编辑/修复代码(语法错误或其他明显错误),并且它增加了一个额外的步骤(提交/推送)以查看您的结果。 - 创建一个“dev”服务器,该服务器镜像生产服务器。此服务器将包含所有框架文件,并且您将能够直接编辑“live”目录的副本并立即查看您的更改。如果您愿意,可以将远程“dev”目录挂载到本地工作站。这需要维护额外的服务器,并且您需要资源来设置它。 - 在本地工作站环境中创建本地“dev”工作站并在“live”或“dev”服务器上克隆存储库。这样,您将能够在本地机器上测试所有代码,并仅推出已经测试和批准的提交。与第一种方法相比,这减少了提交的数量。要在本地重新创建“dev”环境,您可能需要向本地工作站安装许多框架/依赖文件,即使这样,当代码移植到实际生产服务器时,它也可能不是100%可靠。
基本上,如果您依赖于框架文件(无论是哪种框架),我希望找到“编写-测试-修订-测试-修订-测试-提交”周期的最佳方法。您会创建一个“dev”服务器还是会在本地工作站上重新创建完全相同的生产环境?理想情况下,只有在进行了一些初始测试(明显的语法错误等)后,您才会提交代码。使用具有本地git存储库的“dev”服务器需要您提交每个小更改以测试您的工作,这可能很繁琐...
我希望我已经表达清楚了。我正在寻找将git与“编写-测试-提交”周期集成的最佳方法。通常,您会在本地机器上进行测试,但是对于Web开发,您可能需要Web服务器+框架才能测试代码。我想避免直接在“live”服务器上编辑。
感谢您的回复!
2个回答

4
如果你问我,每个开发者都应该拥有一个本地开发AMP栈,以便能够进行开发。 如果你不知道如何设置一个与生产服务器完全相同的镜像,请先解决这个问题。
一旦达到这个目标,每个开发者应该很容易地设置一个虚拟机,安装干净的操作系统,配置Web/PHP/DB服务器和库/框架以匹配生产环境,检出你的项目,然后开始工作。
开发者可以随时针对自己本地仓库中的个人分支提交代码,并在本地测试后将其推送或拉取请求到主干上。
关于如何将更改合并到主分支的具体规则取决于您的团队和偏好。 但是开发者几乎总是应该拥有完整的本地开发环境。 如果看起来很难设置这样一个环境,那就是一个大问题。 找出如何使它变得容易,然后记录下来。

+1 虚拟机是实现本地环境尽可能接近生产环境的好方法。Oracle VirtualBox 是一个不错的免费选择。它总是比诸如 WAMP、XAMPP、easyPHP 等工具更加可靠。 - codercake

4
肯定有很多方法可以做到这一点,但这是我最近的工作方式,提供我的意见。
首先,我可能会避免使用开发服务器,因为如果你有超过1个开发人员,每个开发人员可能会尝试更新开发服务器上的冲突代码,或者如果他们正在处理相似的区域,则覆盖一些测试代码,因为您两个都可能来自同一分支,但都修改了代码并且没有推送更改。
话虽如此,您可能希望有一个开发服务器,它与您的生产服务器非常相似,以便在您和其他一些开发人员进行了一些更改之后,您可以在更新代码之前在开发服务器上对其进行测试,以确保它们能够正常运行。
在我的环境中,我在Linux上开发,并使用Apache / PHP运行与生产服务器相同版本和配置。这样,我克隆我的git存储库,并设置我的环境,使我的文档根目录是git存储库的“public”目录(例如htdocs)。在这种情况下,我们有一个dev MySQL服务器,通常是共享的,而不是在本地机器上,但您可以使用最简单的方式。我们的系统依赖于来自现场的实时数据,因此这就是为什么需要共享数据库,我们有一个系统,它会自动将许多这些必要的“测试”数据添加到数据库中。
这样,我可以从git拉取最新代码,随心所欲地工作,修复工作,工作等等,直到完成我的任务,然后将更改推回给其他开发人员。
当您准备发布时,您可以在开发服务器上进行所有测试和相关操作,验证其是否可以使用,然后推送到生产环境中。
在我的情况下,更新“live”服务器的唯一责任人是我,我使用rsync将我的本地工作目录与live服务器同步。因此,当我绝对确定我们已准备好部署时,我从git拉取最新代码,并运行我的脚本,该脚本将我的git目录与服务器同步。
我会避免使用方法1和2,并选择类似第3种的方式。这可能是你最明智的选择,也是最容易管理的选择。根据您的团队情况,您可以创建一个预先构建了所有依赖项、正确软件和开发工具的dev VM,或者让开发人员自己设置。
到目前为止,这种方法对我和我的团队成员都很有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接