Web开发人员 - 在本地计算机上还是在远程主机上进行开发更好?

40

在本地机器上进行Web开发与在集中式开发服务器上进行开发相比,有何优缺点?对于那些在本地开发的人来说,当涉及到多个开发人员时,您如何保持本地开发的最新数据库架构?

特别是,我目前正在尝试使用XAMPP进行PHP开发,并且很好奇其他开发者定期更改数据/数据库结构时我如何将MySQL数据库实例保持同步。

只有在独自工作时,本地开发才是可行的吗?


正是我想问的问题@Cory House,谢谢!我在考虑每次第三方用户连接时都要在服务器上运行脚本来启动他们最新的grunt任务,这样有点糟糕,需要服务器启动脚本等等...转移到本地后,每个用户都不需要服务器脚本,只需要一个开发服务器,所有的协作都被推入并合并到预先进行QA的服务器中。路径映射、远程调试检查和实时重新加载变得更加简单等等...所以我认为优先选择本地机器,但是Linux服务器始终需要一种方式让开发人员可以通过ssh登录并使用它,这是一个标准。 - blamb
17个回答

1
在本地主机上进行测试的一个问题是,您可能会错过那些链接到本地文件而不是通过浏览器访问的东西。我父亲经常在他的相机俱乐部网站上放置链接,例如'a href="C:\My Documents\Camera Club\Photos...",当我告诉他出了问题时,他会说"这对我有效"。同样,在专业环境中,您可能会忘记将某些东西检查到源代码控制中,因此它们不会部署到真实服务器上。
一种妥协解决方案可能是拥有虚拟机,无论是VirtualBox、VMWare还是Parallels,这样您就可以启动一个虚拟的Solaris、Windows、Mac和/或Linux框来测试它 - 这将向您展示您的站点在每个默认浏览器上的外观,同时您还可以确保事情实际上可以通过非本地连接正常工作。更好的方法是拥有一个虚拟机,您可以将其部署到并将其用作测试的Web服务器。
如果您的基本操作系统是OpenSolaris,甚至可以使用ZFS并使用快照,以便在每次测试运行后将您的VM回滚到其基本状态。

1
我一直在使用Ruby on Rails构建网站,本地进行开发,但尽可能经常部署到远程机器上。我在《Rails敏捷Web开发》中读到,练习部署的次数越多,就越能做得更好,因为当部署到生产环境时,就不会有任何意外了。

1
在我目前的职位上,我在自己的机器上进行开发。对于较小的项目,我只使用Visual Studio附带的轻量级Web服务器。另外,我也在自己的机器上安装了SQL Server 2005和2008用于开发和初步测试。
总体来说,这对我来说很有效;我遇到的一个问题是(正如其他人所指出的),保持数据库同步有点麻烦。我最近转向了migrator dot net--基本上是Ruby on Rails migrations的.NET版本--以保持本地/暂存/UAT/生产数据库同步,并且它使我的生活少了很多压力。像这样的工具还可以更容易地在团队环境中处理数据库,尽管您必须有足够的纪律性一致地使用它。
在这里的经验使我相信,本地开发结合某种DB变更控制流程、持续集成服务器和支持合并的良好版本控制系统(我们使用TFS)是最佳方案。这样每个人都可以自行处理自己的任务,而不会影响别人,同时还能确保变更得到正确合并。
在我之前的工作中,我们在个人电脑上使用IIS与专用开发数据库结合使用,这有点麻烦--你必须小心不要运行可能会关闭数据库甚至破坏数据的任何进程,因为它可能会影响其他开发人员,而且在我看来,这有点违背了首先拥有开发数据库的目的。

1

我是一个独立开发者,我有远程服务器和本地服务器。

我使用本地服务器进行快速原型设计和初始开发周期,在这个阶段我需要快速测试很多更改。当项目达到大致的 alpha 阶段时,我会为项目设置一个自定义子主机并部署到我的服务器上。有些功能无法在本地测试,例如基于电子邮件的用户注册,因此这些功能在远程服务器上开发。由于这是我的服务器,而不是真正的部署,所以它仍然基本没有延迟。由于我拥有 VPS,我可以完全控制两台机器上的开发环境。


你好Nathan,你用什么文本编辑器来编辑本地服务器上的文件?谢谢。 - codeomascot

0

对于这种情况,我通常会在开发服务器上处理。由于没有重新编译,您可以每天获取新的数据库快照并将其下载到您的计算机上。或者只需将 Web 服务器设置为本地,并将数据库指向开发框。


0
我发现在本地机器上使用源代码控制开发代码,并访问集中式开发数据库效果很好。维护多个数据库同步证明是一件困难的事情。

-1
通常情况下,您会有一个本地开发服务器,大家共享使用。

为什么不呢?你似乎很有自己的看法,能否解释一下为什么人们不应该这样做? - Aron Rotteveel
因为如果有一堆人共享一个服务器,最终每个人都会互相干扰 -- 你不能重启服务器,做出大的改变等等。每个开发者拥有自己的本地服务器如此便宜和容易,我不明白为什么你不去这么做。 - Stewart Johnson
为什么你需要重新启动服务器(我猜你指的是硬件)?有哪些“大的改变”你无法进行? - Bobby Jack
1
等一下,什么意思?人们如何通过对代码进行更改并破坏你的开发过程来反映现实世界? - Stewart Johnson
1
从源代码控制中拉取,本地合并更改,本地测试,它们是否有效?是/否,不需要共享服务器。无论如何,您都不应该在服务器上处理实时代码,它只应包含最后经过测试和工作的一堆代码。 - Sekhat
显示剩余6条评论

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