适合Symfony2 Windows / Linux的开发环境

首先,我知道这个标题必须是第400次这个问题,所以我会尽我所能让这个时间不同。

从一段时间以来(超过两年),我们的团队为build立发展环境而苦苦挣扎。 我们通常的设置是使用Fedora24-25 / Php-fpm / nginx / mariadb作为服务器。 但是,由于某些我们必须使用的程序,我们“需要”使用Windows

当前的情况

目前,我们正在使用VirtualBox / VMWare Workstation虚拟化Fedora并在那里运行我们的Symfony2应用程序。 我不想在Windows上开发,然后在Fedora中使用该应用程序进行生产的原因是由于当您拥有这两个不同的操作系统时出现的兼容性问题。

其中一位开发人员(我)正在通过SMB共享文件夹,其中包含所有应用程序到Windows中的装入驱动器,并在Windows上使用PHPStorm ..还告诉Symfony2将caching/日志redirect到另一个文件夹,以便PhpStorm不必索引,对我来说,迄今为止这是迄今为止最好的..

问题

问题出现的时候,我们需要做的发展..现在我们正在与PhpStorm的Fedora的工作,这意味着我们正在从我们的VirtualBox编码…所以在这一点上的发展目的Windows(主机)是非常多的没用…因为我们同时在VM上运行IDE和服务器。

话虽如此,但显然问题出在性能上,我们有相当不错的设置(HP Folio 9470m i7 16GB with SSD)..但是您仍然可以感受到在VM上进行开发的开销和缓慢。不用说,要在Windows和Linux之间切换,你必须切换那些窗口,这很痛苦。

问题2:我们有3个监视器设置,下一节将介绍这个解释的重要性。

我曾经尝试过

  1. 在Windows上安装应用程序文件,并通过Fedora上的CIFS / SMB / NFS进行安装。

用这种方法,我得到的最好的结果是使用NFS。 通常,在Symfony2 2.8的全新安装中,安装了php-opcache的探查器的响应时间约为50ms。 然而,使用CIFS或SMB,大幅增加到500毫秒左右,与NFS我已经能够获得60毫秒左右..但是,有一个赶上..在Windows 10亲没有办法使用本地NFS ..我们会必须升级到目前不是可能性的企业。

此外,为了能够使用这种方法,我不得不将caching/和symfony的日志/文件夹redirect到Fedora内的另一个文件夹。 否则,I / O会使用挂载的文件夹来终止60ms的响应时间。

  1. docker

通过这种方法,我有完全相同的问题..这是一个非常平常的错误,这是由于Symfony2和泊坞缓慢,因为卷是像一个共享卷..相同的I / O性能问题。

  1. 使用Linux作为主要操作系统并虚拟化Windows

我认为这将是真正的交易…但事实certificate,我经历了几个问题..我一直在使用Linux很长一段时间,所以我知道如何移动..与Linux我有像这样的问题:

一个。 我使用2个耳机…一个用于Softphone,一个用于收听音乐..我无法使Fedora总是使用一个设备作为软件电话,一个用于其他应用程序…每当我重新启动它时回去..(不重要,可以没有这个生活)

湾 上面指定的问题#2,我尝试了:Fedora,Linux Mint和Ubuntu,并且在每个发行版中,当尝试安装我的3台显示器时,出现CRTC错误。

C。 没有HeidiSQL的支持(可惜,但是我也可以没有这个)

至于NGINX / PHP / Symfony2一切正常

  1. 拥有Linux中的所有文件,并在Windows上安装驱动器

相同的性能问题,但这次与PhpStorm ..由于事实,这些文件是在networking上的bla bla bla …

问题

基本上,我的确定的问题是,每个人如何从使用LINUX作为服务器,以Symfony2 / PHP作为语言/框架的窗口获得一个平滑的开发环境?

我很确定,在这种情况下,我并不孤单,我研究得越多,问题就越多。

对不起,很长的问题!

好吧,这是我想出来的…

  • 我通过CIFS在Linux中共享应用程序文件夹,并使用主机专用网络适配器将其作为驱动器安装在Windows上,因此我不必担心更改连接。
  • 我禁用了图形界面来节省资源
  • 我使用VBoxVMService( http://vboxvmservice.sourceforge.net/ )作为服务自动启动虚拟机,所以我不必打开VirtualBox
  • 使用腻子作为我的终端
  • 在Symfony上,我重写了Appcoreel上的getCacheDir()和getLogDir(),并把它们扔到另一个不在共享文件夹中的文件夹中。

我花了整整一天的时间来处理4个应用程序(打开了4个PhpStorm实例),它一直工作得很好。 唯一一次很慢的是当你第一次添加IDE的项目时,所有的东西。

我会在这里留下这个情况,以帮助其他人或任何其他人有任何额外的意见。