目前,我的开发环境是带有VMWare的Ubuntu v12.04。我完全在VM内部工作,具有完整的GUI,并且如果需要从Windows 7主机操作系统访问文件,则只能在Ubuntu中使用samba文件共享。虚拟机通过NAT与虚拟机联网。事实证明,使用其他解决方案要慢得多,例如VMWare的共享文件夹。我在VMWare映像设置中禁用了此功能。但是,我确实安装了VMWare工具,以便轻松复制/粘贴到主机,反之亦然。
正如Matthias Zeis指出的那样,在选择虚拟机的网络/共享文件夹时要格外小心,因为有些文件夹可能会出现问题。
我以前是VirtualBox的用户,但发现VMWare更稳定并且可以接受(至少对我而言)。但是,我将执行自己的测试以最适合您的需求和要求。流浪汉使用VirtualBox。
IDE:
我广泛选择使用Netbeans作为我的IDE,但是从那以后,我转向了更轻量的解决方案,如Sublime Text 2。我很少打开Netbeans,因为它主要用于X-Debug目的和更容易的重构。Netbeans,PHPStorm,Eclipse等都是基于Java的IDE,可能会非常浪费资源。
硬件:
要添加更多内容,硬件(显然)将始终是性能的关键角色。如果您的开发人员仍在使用拼盘HDD,那么我会为他们投资SSD。由于Magento具有大量的文件/文件夹,因此将大大提高开发人员的性能。开发时:保留所有缓存,并且仅在SVN / GIT或IDE中遍历文件夹树时。为虚拟机提供足够的RAM也同样重要。
我的主机:三星SSD 512GB驱动器空间,Win7(64位),8GB RAM,i7 2.4GHz(8核)
我的VM机器:三星SSD,30GB驱动器空间,Ubuntu 12.04(32位),3GB RAM,i7(已分配4个内核)。
提出的问题:
最大的问题是,创建一个轻量级且可在多个项目中重复使用的Developer VM映像,或为每个项目创建一个Image。以前,我尝试在每个项目的基础上制作较小的VM,但是要不断进行重新配置以适应我的开发工作流程变得很繁琐,现在使用一个较大的VM,并尽我最大的努力使每个项目尽可能地隔离。
如果为每个项目选择多个VM,则维护OS,IDE,LAMP堆栈,更新/配置等可能变得很繁琐。最终导致更长的开发时间(对于本地环境设置,甚至更糟的不可计费时间)。
这也被证明是有帮助的,因为我可以快速访问其他项目文件,而无需打开新的VM并进一步分割Host硬件。不利的是,理想情况下,我希望每个项目都与其他项目隔离开,以防止环境发生任何无法预料的问题(例如php.ini,my.cnf,httpd.conf等)。到目前为止,事实证明,使所有项目都易于访问的权衡是更明智的。
同样,这取决于您的要求和需求,因此请事先进行评估。
反馈:
导致反馈。从开发人员那里获取尽可能多的投入。最终需要满足他们的要求并理解他们的问题,然后才能建立适当的解决方案并将其付诸实施。每个人都有不同的工作流程,并非每个人都喜欢在您可能选择进行开发的OS中工作。我的经验法则是让开发人员选择他们最熟悉的OS和IDE,并在其中表现最佳。因此,即使是轻量级的无头linux VM可能也可以满足其需求,但显然会遇到在主机和VM之间跨本地网络共享文件夹的问题。
易用性:
我也想过将VM映像保留在Dropbox之类的想法,这样我可以在需要的任何时间轻松访问它。由于像Dropbox之类的服务会逐位比较存储的内容,因此逻辑上只有我更改的位才可以同步。但是事实证明并非如此,因为我认为这与保存映像文件的内部方式有关,我将整日/整夜等我的VM进行同步。
注意:
分配给VM的驱动器空间越大,映像将变得越大,将映像分发给开发人员时请记住这一点。预先为每个项目加载您的项目文件可能会过大,我将其留给每个开发人员在创建图像后进行设置。
阿什利·施罗德(Ashley Schroder)的相关文章有些陈旧,值得一读,以及Fooman和Colin的一些评论
希望这有助于洞悉您列出的问题#6。