En primer lugar, sé que, por el título, esta debe ser la 400a vez que se me ha preguntado, así que haré todo lo posible para que esta vez sea diferente.

Desde hace algún tiempo (más de 2 años ...) nuestro equipo ha luchado mucho para establecer el entorno para el desarrollo. Nuestra configuración habitual es usar Fedora24-25 / Php-fpm / nginx / mariadb como el servidor. Sin embargo, estamos "obligados" a usar Windows debido a algunos programas que tenemos que usar.

El escenario actual

En este momento, estamos utilizando VirtualBox / VMWare Workstation para virtualizar Fedora y ejecutar nuestra aplicación Symfony2 allí. La razón por la que no quiero desarrollar en Windows y luego usar la aplicación en Fedora para la producción se debe a problemas de compatibilidad que surgen cuando tienes esos 2 sistemas operativos diferentes.

Uno de los desarrolladores (yo) actualmente está compartiendo a través de SMB la carpeta con todas las aplicaciones en una unidad montada en Windows y usando PHPStorm en Windows ... y también le dice a Symfony2 que redirija el caché / registros a otra carpeta para que PhpStorm no tenga que Indico que, hasta ahora, esto ha funcionado mejor hasta ahora.

El problema

El problema surge cuando necesitamos hacer el desarrollo ... en este momento estamos trabajando en Fedora con PhpStorm y eso significa que estamos codificando directamente desde nuestra VirtualBox ... así que en este punto para fines de desarrollo Windows (también conocido como el host) es bastante inútil ... ya que tenemos tanto IDE como servidor ejecutándose en la VM ...

Dicho esto, es bastante obvio que el problema viene con el rendimiento, tenemos configuraciones bastante decentes (HP Folio 9470m i7 16GB con un SSD) ... pero aún puede sentir la sobrecarga y la lentitud de hacer el desarrollo en una VM. .. no hace falta decir que para ir entre Windows y Linux tienes que cambiar esas ventanas y eso es doloroso.

Problema # 2: tenemos una configuración de 3 monitores, y la importancia de esta aclaración vendrá en la siguiente sección.

Lo que he probado

  1. Tener los archivos de la aplicación en Windows y montarlos a través de CIFS / SMB / NFS en Fedora.

Con este enfoque, los mejores resultados que obtengo están usando NFS. Normalmente, en una nueva instalación de Symfony2 2.8, obtienes un tiempo de respuesta de alrededor de 50 ms en el generador de perfiles con php-opcache instalado. Sin embargo, usando CIFS o SMB que aumenta drásticamente a alrededor de 500 ms, con NFS he podido obtener alrededor de 60 ms ... PERO, hay un problema ... en Windows 10 pro no hay forma de usar NFS de forma nativa ... lo haríamos tiene que actualizar a Enterprise, que por el momento no es una posibilidad.

Además, para poder usar este enfoque, tuve que redirigir la carpeta caché / y los registros / de Symfony a otra carpeta dentro de Fedora. De lo contrario, la E / S mataría ese tiempo de respuesta de 60 ms utilizando una carpeta montada.

  1. Estibador

Con este enfoque, he tenido exactamente el mismo problema ... este es un error muy habitual que ocurre alrededor de Google con Symfony2 y la lentitud de la ventana acoplable debido a que el volumen es como un volumen compartido ... el mismo problema de rendimiento de E / S ...

  1. Usando Linux como el sistema operativo principal y virtualizando Windows

Pensé que este sería el verdadero negocio ... pero resulta que experimenté varios problemas ... He estado usando Linux durante mucho tiempo, así que sé cómo moverme ... con Linux tuve problemas como:

A. Uso 2 auriculares ... uno para un Softphone y otro (auriculares) para escuchar música ... No pude hacer que Fedora use siempre un dispositivo para el softphone y otro para otras aplicaciones ... cada vez que lo reiniciaba Volvió .. (no es importante, puede vivir sin esto)

Si. Problema # 2 especificado anteriormente, probé: Fedora, Linux Mint y Ubuntu y en cada distribución recibí un error CRTC al intentar configurar mis 3 pantallas ...

C. No hay compatibilidad con HeidiSQL (lástima, pero también puedo vivir sin esto)

En cuanto a NGINX / PHP / Symfony2 todo funcionó correctamente

  1. Tener todos los archivos en Linux y montar una unidad en Windows

Los mismos problemas de rendimiento pero esta vez con PhpStorm ... debido al hecho de que los archivos están en la red bla bla bla ...

La pregunta

Básicamente, mi pregunta definitiva es, ¿cómo están haciendo todos para obtener un entorno de desarrollo sin problemas DESDE Windows usando LINUX como servidor y Symfony2 / PHP como lenguaje / marco?

Estoy bastante seguro de que no estoy solo en esta situación, y cuanto más investigo, más queda la pregunta.

¡Perdón por la larga pregunta!

5
Benjamin Vison 9 feb. 2017 a las 00:37

2 respuestas

La mejor respuesta

Ok, esto es lo que se me ocurrió ...

  • Estoy compartiendo la carpeta de la aplicación en Linux a través de CIFS y la estoy montando como una unidad en Windows usando un adaptador de red de solo host para que no tenga que preocuparme por cambiar las conexiones.
  • Deshabilité la interfaz gráfica para ahorrar recursos
  • Estoy usando VBoxVMService (http://vboxvmservice.sourceforge.net/) para iniciar la VM automáticamente como servicio, así que no tengo que abrir VirtualBox
  • Usando Putty como mi terminal
  • en Symfony, estoy anulando getCacheDir () y getLogDir () en AppKernel y los envío a otra carpeta que no está en la carpeta compartida.

He pasado todo un día trabajando en 4 aplicaciones (son 4 instancias de PhpStorm abiertas) y ha estado funcionando bien. El único momento en que es lento es cuando agrega el proyecto por primera vez que el IDE tiene que indexar todo.

Dejaré esto aquí en caso de que ayude a alguien más o alguien más tenga algún comentario adicional.

2
Benjamin Vison 9 feb. 2017 a las 18:12

Realmente tengo el mismo problema que tú ... Tengo que usar un sistema de Windows para mi trabajo principal, pero quiero desarrollar mis proyectos basados en PHP en la misma configuración que el objetivo, porque en el pasado experimenté muchos comportamientos diferentes entre PHP / Win y PHP / Linux.

En el pasado, utilicé con éxito VBox para montar mi carpeta de trabajo a través de SMB o VBOXSF. Pero luego llegaron los primeros proyectos de Symfony con sus miles de archivos y carpetas y esta configuración se volvió casi inutilizable. Actualmente migré ese dev-VM a Hyper-V, pero esto solo admite el montaje a través de la red. ¿Quizás VMware es más rápido? Pero ahí está el problema: no puedo usar VMware porque quiero usar Docker para Windows ... y se excluyen entre sí.

Es triste decir que esto también elimina las configuraciones fáciles de desarrollo de Vagrant.

Docker para Windows (Hyper-V) y Docker Machine (VBox) no son mejores :-( Eso es extremadamente triste porque realmente me gustan las configuraciones fáciles de repetir y uso Docker también en algunos sistemas de productos (pequeños).

Luego vi el subsistema WSL Linux llamado "bash para Windows" y pensé ... esa tiene que ser la solución ... pero no. Es incluso peor en IO que montar una carpeta CIFS en la red; consulte https://www.phoronix.com/scan. php? page = article & item = intel-7900x-wsl & num = 2 Incluso al instalar la máquina, experimenté lo lento que es el IO y ni siquiera terminé la configuración.

Actualmente estoy atascado con una configuración de arranque dual que realmente me duele. Pierdo el tiempo reiniciando. Tengo que usar una computadora portátil y varios controladores no funcionan correctamente, pantallas externas ... puertos USB, etc., que es la razón principal para que NO cambie completamente a Linux y use Win como VM. Creo que le daré otra oportunidad a WAMP ... o tendré que usar una segunda máquina de desarrollo.

0
cljk 2 feb. 2018 a las 08:24