首先,我知道通过标题,这必须是第400次被问到这一点,所以我会尽我所能让这个时间与众不同.
从现在起一段时间(超过2年……),我们的团队在建立发展环境方面一直在努力.我们通常的设置是使用Fedora24-25 / Php-fpm / nginx / mariadb作为服务器.但是,由于我们必须使用某些程序,我们“需要”使用Windows.
目前的情况
现在,我们正在使用VirtualBox / VMWare Workstation虚拟化Fedora并在那里运行我们的Symfony2应用程序.我不想在Windows上开发然后在Fedora中使用该应用程序进行生产的原因是因为当你拥有这两种不同的操作系统时会出现兼容性问题.
其中一位开发人员(我)目前通过SMB将所有应用程序的文件夹共享到Windows中的已安装驱动器,并在Windows上使用PHPStorm ..也告诉Symfony2将缓存/日志重定向到另一个文件夹,以便PhpStorm不必索引,对我来说到目前为止,迄今为止这项工作做得最好.
问题
问题出现在我们需要进行开发时..现在我们正在使用PhpStorm处理Fedora,这意味着我们正在编写我们的VirtualBox ..所以在这一点上用于开发目的Windows(也就是主机)几乎是没用…因为我们在VM上运行了IDE和服务器..
话虽如此,很明显问题来自性能,我们有相当不错的设置(HP Folio 9470m i7 16GB带SSD)..但你仍然可以感受到在VM上进行开发的开销和缓慢. ..不用说,要在Windows和Linux之间切换,你必须切换这些窗口,这很痛苦.
问题2:我们有3个监视器设置,这个澄清的重要性将在下一节中介绍.
我试过了什么
>在Windows上安装应用程序文件,并通过Fedora上的CIFS / SMB / NFS安装它们.
通过这种方法,我得到的最好结果是使用NFS.通常,在全新安装Symfony2 2.8时,在安装了php-opcache的探查器上获得大约50ms的响应时间.然而,使用CIFS或SMB大幅增加到大约500ms,使用NFS我已经能够达到大约60ms ..但是,有一个问题…在Windows 10专业版上,没有办法本机使用NFS ..我们会必须升级到企业,目前这不是一个可能性.
另外,为了能够使用这种方法,我不得不将symfony的cache /和logs /文件夹重定向到Fedora中的另一个文件夹.否则,I / O将使用已安装的文件夹终止60毫秒的响应时间.
> Docker
使用这种方法,我有完全相同的问题..这是一个非常常见的错误,由于卷像共享卷一样,谷歌周围的Symfony2和docker缓慢..相同的I / O性能问题..
>使用Linux作为主操作系统并虚拟化Windows
我认为这将是真正的交易…但事实证明,我经历了几个问题..我已经使用Linux很长一段时间所以我知道如何移动..使用Linux我有类似的问题:
一个.我使用2个耳机……一个用于软电话,一个用于听音乐…我无法让Fedora总是使用一个设备用于软电话而另一个用于其他应用……我每次重新启动它回去了..(不重要,没有这个可以活下去)
湾上面指出的问题#2,我试过:Fedora,Linux Mint和Ubuntu,在每个发行版中,我在尝试设置3个显示器时都遇到了CRTC错误.
C.没有HeidiSQL的支持(羞耻,但我也可以没有这个)
就NGINX / PHP / Symfony2而言,一切正常
>在Linux中拥有所有文件,并在Windows上安装驱动器
相同的性能问题,但这次与PhpStorm ..由于文件是通过网络bla bla bla …
问题
基本上,我的确定问题是,每个人如何使用LINUX作为服务器和Symfony2 / PHP作为语言/框架来获得平滑的开发环境?
我很确定在这种情况下我并不孤单,我研究的越多,问题就越多……
抱歉,这个问题很长!
最佳答案 好的,这就是我提出来的……
>我通过CIFS在Linux中共享应用程序文件夹,并使用Host-Only网络适配器将其作为驱动器安装在Windows上,因此我不必担心更改连接.
>我禁用了图形界面以节省资源
>我使用VBoxVMService(http://vboxvmservice.sourceforge.net/)自动启动VM作为服务,所以我不必打开VirtualBox
>使用Putty作为我的终端
>在Symfony上,我将覆盖AppKernel上的getCacheDir()和getLogDir(),并将其丢弃到另一个不在共享文件夹中的文件夹中.
我花了一整天的时间研究了4个应用程序(打开了4个PhpStorm实例),它一直运行得很好.唯一一次缓慢的是当你第一次添加IDE必须索引所有内容的项目时.
我会留下这个,以防它帮助其他人或其他人有任何其他意见.