适用于Symfony2 Windows / Linux的正确开发环境

Ben*_*son 5 php linux windows nginx symfony

首先,我知道按标题显示的时间必须是被问到的第400次,因此,我将尽最大努力使这段时间与众不同。

从现在开始(超过2年..),我们的团队为建立发展环境付出了很多努力。我们通常的设置是使用Fedora24-25 / Php-fpm / nginx / mariadb作为服务器。但是,由于必须使用某些程序,因此“必须”使用Windows。

当前场景

现在,我们正在使用VirtualBox / VMWare工作站来虚拟化Fedora并在其中运行我们的Symfony2应用程序。我不想在Windows上开发然后在Fedora中使用该应用程序进行生产的原因是由于拥有这两种不同的OS时出现的兼容性问题。

目前,一位开发人员(我)正在通过SMB将所有应用程序的文件夹共享到Windows中已安装的驱动器上,并在Windows上使用PHPStorm ..还告诉Symfony2将缓存/日志重定向到另一个文件夹,以便PhpStorm不必索引,到目前为止,对我来说,效果最好。

问题

问题出在我们需要进行开发时。.现在,我们正在使用PhpStorm处理Fedora,这意味着我们正在从VirtualBox中进行编码..因此,出于开发目的,Windows(又名主机)已经相当没用...因为我们在虚拟机上都运行了IDE和服务器。

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

问题2:我们有3个显示器设置,这一点的重要性将在下一部分中介绍。

我尝试过的

  1. 在Windows上拥有应用程序文件,并在Fedora上通过CIFS / SMB / NFS挂载它们。

通过这种方法,我获得的最佳结果是使用NFS。通常,在全新安装的Symfony2 2.8上,在安装了php-opcache的探查器上,您会获得大约50ms的响应时间。但是,使用CIFS或SMB急剧增加到大约500ms,使用NFS,我已经可以达到60ms左右。但是,有一个陷阱。.在Windows 10专业版上,无法自然使用NFS。必须升级到Enterprise,目前还不可行。

同样,为了能够使用这种方法,我不得不将symfony的cache /和logs /文件夹重定向到Fedora中的另一个文件夹。否则,使用已安装的文件夹,I / O会浪费60ms的响应时间。

  1. 码头工人

使用这种方法,我遇到了完全相同的问题..这是一个非常常见的错误,由于卷就像共享卷,这在Google上出现了Symfony2和Docker缓慢的问题。.相同的I / O性能问题。

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

我以为这将是真正的交易...但是事实证明,我遇到了几个问题。.我已经使用Linux很长时间了,所以我知道如何使用Linux。

一种。我使用2副耳机...一个用于软电话,一个(耳塞)听音乐。.我无法让Fedora始终将一台设备用于软电话,将另一台设备用于其他应用程序...每次重新启动它时回去了..(不重要,没有这个可以活下去)

b。我在上面指定的问题#2中尝试了:Fedora,Linux Mint和Ubuntu,在尝试发行3个显示器时,在每个发行版中我都遇到了CRTC错误。

C。不提供HeidiSQL支持(可惜,但是我也可以不用它)

就NGINX / PHP / Symfony2而言,一切正常

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

同样的性能问题,但是这次是PhpStorm ..,因为文件是通过网络的事实bla bla bla bla ...

问题

基本上,我的明确问题是,每个人都将如何使用LINUX作为服务器并以Symfony2 / PHP作为语言/框架从Windows获得平稳的开发环境?

我很确定自己在这种情况下并不孤单,而且我研究的越多,问题就越多。

对不起,很长的问题!

Ben*_*son 2

好吧,这就是我想出的......

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

我花了一整天的时间处理 4 个应用程序(即打开了 4 个 PhpStorm 实例),并且它运行得很好。唯一慢的时候是当您第一次添加项目时,IDE 必须对所有内容进行索引。

我会将其留在这里,以防它对其他人有帮助或任何其他人有任何其他评论。