Magento开发设置


23

这个问题是针对建立开发环境。我有一些具体要求:

  1. 我希望能够在Linux,Windows和Mac OS下使用我的解决方案,因为我们团队的人们都使用所有这些OS(例如,前端开发人员使用Windows / Mac,后端开发人员大多使用Linux)
  2. 我需要使用modman
  3. 我需要使用作曲家
  4. 我需要使用Github以及我的私有Git存储库
  5. 我需要像Netbeans或PHP Storm这样的适当IDE
  6. 我想要很好的表现

我当前的设置是Virtualbox中的虚拟化Ubuntu映像。这三个操作系统都可以运行Virtualbox,因此满足点1)-5)。

但是,目前,我对6)并不完全满意。在Ubuntu 12.04中运行解决方案时尤其如此。在Windows 7下,Virtualbox似乎更稳定,响应速度更快。但是,我们团队中的许多人都在使用Linux,因此我想改进该解决方案。

是否有人在VMWare中甚至在docker.io中都有类似的设置,并且可以报告它是否运行更稳定?还是有人有其他类似的解决方案/想法?


好问题!我们也一直在进行类似的设置,但尚未将其放入常规工作流程中。期待答案。
AnnaVölkl13年

只是一个简单的主意:在Linux上没有VM的情况下,直接安装可在VM中运行的所有内容,是否可以工作?还是将一个虚拟机用于一个项目?
AnnaVölkl13年

您是无头还是使用GUI运行VM?以及如何将VM Image文件系统与主机系统同步?共享文件夹?桑巴?(我假设IDE在主机而不是VM上运行)。那可以有很大的不同。
Vinai

@AnnaVölkl是的,虽然有可能,但是会破坏一些优势。例如,每当您更新基本映像时,所有Linux用户都必须手动更新更改。另外,如果您想将盒子从一台计算机拿到另一台计算机(例如,在家中或其他地方工作),事情会变得更加困难。
mpaepper

1
正如安娜所说:我们也在做类似的事情。我们正在使用Vagrant构建VM映像,并且运行良好。如您所说,性能(关于共享文件夹中文件I / O的速度)是我们切换之前必须要做的主要事情。对于Linux主机系统,NFS共享可能会有所帮助。我们的最大问题是,我们的大多数开发人员都使用Windows主机系统,相反,Windows性能根本不佳。我现在已经从不同的人那里听到了,不只是我们。
Matthias Zeis 2013年

Answers:


8

我在phing上使用无业游民,git和一些构建脚本。流浪者机器运行数据库和Web服务器,在本地使用git跟踪我的扩展程序中的更改,并使用脚本来更新/var/www流浪者机器上的目录(实际上,它在需要构建环境的任何地方都可以使用)。

ing

可能最有趣的部分是phing,它对我来说就像modman + composer。它几乎没有定义目标,包括构建,设置和安装。

构建内部网络服务器目标下载某个版本的Magento(在建配置中指定),并解压缩到构建目录。然后运行其他设置文件权限的目标并清理缓存。然后,它创建到源目录中所有文件的符号链接。结果,我可以在构建目录中使用所有文件。如果magento核心文件已经在构建目录中,它会跳过下载并仅更新符号链接,因此,每次需要更新符号链接时,我都会使用此目标来重建环境。对于无业游民的机器,源目录位于/vagrant/src(共享文件夹)中,而构建目录位于/var/www

某些magento版本的安装目标下载和导入数据库转储。然后运行安装程序目标。

设置目标只是创建了所有设置的local.xml中。

在我的公司中,我们使用单元测试和CI工具,因此这种构建magento环境的方法使我们可以在不同版本的magento上测试我们的扩展,并在安装和不安装的情况下运行。

我在无业游民的计算机上创建了一个“快捷方式”,以简化构建过程。例如,要重建项目,我只需要输入即可vagrant ssh -c magebuild,它会在/vagrant目录中自动运行phing 。

然后,我已将此命令分配给PHPStorm IDE中的某些组合键,现在只需在IDE中按Alt + B即可重建项目。但是由于我使用了符号链接,所以它实际上并不经常运行。

流浪汉

一个无所事事的盒子是我自己的装有Ubuntu 12.04的盒子,它实际上只是标准精确的12.04,其中预装了所有软件+快捷方式和一些配置。在流浪者文件中,我只放置了端口转发设置(专用网络),以便能够使用xDebug并在构建条款中添加构建快捷方式。

GIT

在git中,我仅跟踪我的扩展名文件(build.xml用于phing和)Vagrantfile。因此,每个想要创建环境的人都可以克隆存储库,然后运行无所事事。然后,他将启动虚拟机并准备运行。所有这些过程需要1-2分钟。如果要在本地构建项目(不使用VM),则可以运行phing build install


2

目前,我的开发环境是带有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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.