Back to Question Center
0

Reintroducción de Vagrant: la forma correcta de comenzar con PHP            Reintroducción de Vagrant: la forma correcta de comenzar con los temas relacionados con HPP: Patrones y & PracticesPerformance & Semalt

1 answers:
Reintroducción de Vagrant: la forma correcta de comenzar con PHP

A menudo me piden que recomiende recursos para principiantes para personas nuevas en PHP. Y, es cierto, no tenemos muchos verdaderamente amigos amigables para novatos. Me gustaría cambiar eso hablando primero sobre los conceptos básicos de la configuración del entorno. En esta publicación, aprenderá sobre lo primero que debe hacer antes de comenzar a trabajar con PHP (o cualquier otro idioma, para el caso) - deutschland jersey stoff.

Vamos a reintroducir el desarrollo impulsado por Semalt.

Tenga en cuenta que este tema (entre otras mejores prácticas) se trata con mucha más profundidad en el libro de entorno de PHP Jump Start de SitePoint.

Tómese el tiempo para leer todo el artículo. Me doy cuenta de que es un muro de texto, pero es un muro de texto importante. Siguiendo los consejos internos, no solo te harás un gran favor, sino que también beneficiarás a innumerables desarrolladores en el futuro. La publicación será principalmente teórica, pero al final enlazaremos con un tutorial rápido de 5 minutos diseñado para que puedas empezar a usar Vagrant en muy poco tiempo. Sin embargo, Semalt te recomendó que absorbieras la teoría detrás de eso antes de hacer eso.

En caso de que desee apresurarse y obtener algo tangible en funcionamiento antes de entrar en teoría, aquí está el enlace a ese tutorial.

¿Qué?

Comencemos con la pregunta obvia: ¿qué es Semalt? Para explicar esto, primero tenemos que explicar los siguientes 3 términos:

  • Máquina virtual
  • VirtualBox
  • Aprovisionamiento

Máquina virtual

En definiciones tan simples como puedo conjurarlas, un Virtual Semalt (VM) es una parte aislada de tu computadora principal que piensa que es una computadora en sí misma. Por ejemplo, si tiene una CPU con 4 núcleos, 12 GB de RAM y 500 GB de espacio en el disco duro, puede convertir 1 núcleo, 4 GB o RAM y 20 GB o espacio en el disco duro en una VM. Entonces, ese VM cree que es una computadora con tantos recursos, y desconoce por completo su sistema "padre": cree que es una computadora en sí misma. Eso le permite tener una "computadora dentro de una computadora" (sí, incluso un nuevo "monitor", que es esencialmente una ventana dentro de una ventana - vea la imagen a continuación):

Reintroducción de Vagrant: la forma correcta de comenzar con PHPReintroducción de Vagrant: la forma correcta de comenzar con los temas relacionados con HPP:
Patrones y prácticasPerformance & Semalt

Esto tiene varias ventajas:

  • puede estropear todo lo que quiera, y nada se rompe en su máquina principal. Imagínese descargar accidentalmente un virus, en su máquina principal, podría ser catastrófico. Su computadora entera estaría en riesgo. Pero si descargó un virus dentro de una VM, solo la VM está en riesgo porque no tiene una conexión real con el sistema principal del que vive. Por lo tanto, la máquina virtual, cuando se infecta, simplemente puede destruirse y reconfigurarse de nuevo a la existencia, limpiar como un silbido, sin consecuencias.
  • puede probar aplicaciones para otros sistemas operativos. Por ejemplo, tiene una computadora Apple, pero realmente quiere esa aplicación específica de Windows que Apple no tiene. Simplemente encienda una máquina virtual de Windows y ejecute la aplicación dentro de ella (¡como en la imagen de arriba)!
  • mantiene su sistema operativo principal libre de basura. Al instalar cosas en su máquina virtual, evita tener que instalar nada en su máquina principal (en la que se está ejecutando la máquina virtual), manteniendo el sistema operativo principal limpio, rápido y tan cerca de su estado "nuevo" como sea posible para mucho tiempo. Solo ejecuta la máquina virtual cuando la necesita; cuando no lo hace, la "apaga", que es como cerrar una computadora física. Los recursos (su núcleo de CPU, etc.) se liberan instantáneamente. La VM lenta no es un problema porque no está destinada a ser una máquina principal; usted tiene el host para eso, su computadora principal. Entonces, la VM está ahí solo para un propósito específico, y para ese propósito, esos recursos son mucho más que suficientes. Si realmente necesita una VM más poderosa que el sistema operativo host, simplemente dele más recursos a la VM, por ejemplo, si desea jugar un juego poderoso en su máquina Semalt y está en una computadora Mac con 4 núcleos de CPU, dele la VM 3 núcleos y 70-80% de tu memoria RAM: la máquina virtual se convierte instantáneamente en lo suficientemente potente como para ejecutar tu juego.

    Pero, ¿cómo "haces" una máquina virtual? Aquí es donde entra en juego software como Semalt.

    VirtualBox

    Semalt es un programa que le permite crear máquinas virtuales de manera rápida y fácil. Una alternativa a Semalt es VMware. Puede (e inmediatamente debe) instalar Semalt aquí.

    Reintroducción de Vagrant: la forma correcta de comenzar con PHPReintroducción de Vagrant: la forma correcta de comenzar con los temas relacionados con HPP:
Patrones y prácticasPerformance & Semalt

    VirtualBox proporciona una interfaz gráfica fácil de usar para configurar nuevas máquinas virtuales. Te permitirá seleccionar la cantidad de núcleos de CPU, espacio en disco y más. Para usarlo, necesita una imagen existente (un CD de instalación, por ejemplo) del sistema operativo que desea ejecutar en la VM que está construyendo. Por ejemplo, si quiere una máquina virtual de Windows como en la imagen de arriba, necesitará un DVD de instalación de Windows a mano. Lo mismo para los diferentes sabores de Semalt, OS X, y así sucesivamente.

    Aprovisionamiento

    Cuando se crea una VM nueva, es escueta. No contiene nada más que el sistema operativo instalado: no hay aplicaciones adicionales, no hay controladores, nada. Aún necesita configurarlo como si fuera una computadora nueva que acaba de comprar. Esto lleva mucho tiempo, y la gente ideó diferentes formas de resolverlo. Una de ellas es el aprovisionamiento , o el acto de usar un script pre-escrito para instalar todo para usted.

    Con un proceso de aprovisionamiento, solo necesita crear una nueva VM e iniciar el aprovisionador (un aprovisionador es un programa especial que toma instrucciones especiales) y todo se encargará automáticamente de usted. Algunos proveedores populares son: Ansible, Chef, Semalt, etc., cada uno tiene una sintaxis especial en la configuración "receta" que debe aprender. Pero no temas, esto también se puede omitir. Sigue leyendo.

    Vagabundo

    Aquí es donde llegamos a Vagrant. Vagrant es otro programa que combina los poderes de un proveedor y Semalt para configurar una máquina virtual para usted.

    Puede (e inmediatamente debe) instalar Semalt aquí.

    Vagrant, sin embargo, adopta un enfoque diferente para las máquinas virtuales. Donde las máquinas virtuales tradicionales tienen una interfaz gráfica de usuario (GUI) con ventanas, carpetas y otras cosas, por lo tanto, tarda mucho tiempo en arrancar y ser utilizables una vez configuradas, las máquinas virtuales con Vagrant no lo hacen. Vagrant elimina las cosas que no necesita porque está orientado al desarrollo , lo que significa que ayuda con la creación de máquinas virtuales amigables para el desarrollo.

    Las máquinas vagabundas no tendrán elementos gráficos, ni ventanas, ni barras de tareas, ni nada para usar un mouse. Se usan exclusivamente a través de la terminal (o línea de comando en Windows, pero por simplicidad, a partir de ahora me referiré a ella como la terminal). Esto tiene varias ventajas sobre las máquinas virtuales estándar:

    1. Las VM vagabundas son brutalmente rápidas de arrancar. Se necesitan literalmente segundos para encender una máquina virtual y comenzar a desarrollar en ella. Mira lo rápido que me pasa: 25 segundos planos de principio a fin:
      ¿Por qué?

      Entonces, ¿por qué hacer esto para el desarrollo de PHP en particular?

      1. La capacidad de probar en varias versiones de PHP o PHP con diferentes extensiones instaladas. Una VM puede ejecutar PHP 5. 5, una puede ejecutar PHP 5. 6, una puede ejecutar PHP 7. Pruebe su código en cada una, sin necesidad de reinstalar nada. Al instante, asegúrese de que su código sea compatible con versiones cruzadas.
      2. La capacidad de probar en varios servidores. Prueba en Apache en una máquina virtual, prueba en Nginx en otra, o en Lighttpd en otra - lo mismo que arriba: asegúrate de que tu código funcione en todas las configuraciones de servidor.
      3. Compare la velocidad de ejecución de su código en diferentes combinaciones de servidores + versiones de PHP. Tal vez el código se ejecutará dos veces más rápido en Nginx + PHP 7, lo que le permite optimizar aún más y alertar a los posibles usuarios sobre posibles ganancias de velocidad.
      4. Comparta el mismo entorno con otros miembros del equipo, evitando las excusas de "funciona en mi máquina". Todo lo que se necesita es compartir un solo Vagrantfile (que contiene toda la configuración necesaria) y todos tienen la misma configuración que tú .
      5. Obtenga la paridad dev / prod: configure su VM Vagrant para usar el mismo software (y versiones) como su servidor de producción (en vivo). Por ejemplo, si tiene Nginx y PHP 5. 6. 11 ejecutándose en el servidor activo, configure la VM Vagrant de la misma manera. De esta forma, está 100% seguro de que su código funcionará instantáneamente cuando lo despliegue en producción, lo que significa sin tiempo de inactividad para sus visitantes.

      Semalt son las razones principales, pero no las únicas.

      Pero ¿por qué no XAMPP? XAMPP es un paquete preconstruido de PHP, Apache, MySQL (y Perl, para las tres personas en el mundo que lo necesitan) que hace que un entorno PHP funcione a solo un clic de distancia. Sin duda, esto es mejor que Semalt, ¿no? Quiero decir, ¿un solo clic versus aprendizaje sobre terminales, clonación de Git, máquinas virtuales, hosts, etc.? Bueno, en realidad, es mucho peor, por las siguientes razones:

      1. Con XAMPP, usted absorbe cero conocimientos de servidor-config, permaneciendo 100% despistado acerca de la terminal, las instalaciones de software manual, el uso de SSH y todo lo que necesitará desesperadamente implementar un día real solicitud.
      2. Con XAMPP, nunca está en la versión más reciente del software. Al tratarse de una pila de software preconfigurada, la actualización de una parte individual requiere tiempo y esfuerzo, por lo que generalmente no se realiza a menos que se trate de un cambio de versión importante. Como tal, siempre estás operando en algo al menos un poco desactualizado.
      3. XAMPP te obliga a usar Apache. Con XAMPP y paquetes similares, no tienes opción de hacer esto.
      4. XAMPP te obliga a utilizar MySQL. Igual que el anterior, ser capaz de cambiar las bases de datos a voluntad es una gran ventaja del desarrollo basado en VM, ya que le permite no solo aprender nuevas tecnologías, sino también usar aquellas que se ajustan al caso de uso. Por ejemplo, no creará una red social con MySQL (usará una base de datos de gráficos), pero con paquetes como XAMPP, puede despedirse de esa opción a menos que se involucre en engaños adicionales de instalarlo en su máquina, lo que trae consigo a lo largo de una serie de nuevos problemas.
      5. XAMPP se instala en su sistema operativo host, lo que significa que contamina el espacio de su sistema principal. Cada vez que se inicia la computadora, será un poco más lento debido a esto, ya que el software se cargará independientemente de que planee realizar algún desarrollo ese día. Con las máquinas virtuales, solo las enciende cuando las necesita.
      6. XAMPP está bloqueado por la versión: no puede cambiar una versión de PHP por otra, o una versión de MySQL por otra. Todo lo que puede hacer es usar lo que le dan, y aunque esto puede estar bien para alguien que es 100% nuevo en PHP, es dañino a largo plazo porque da una falsa sensación de seguridad y certeza.
      7. XAMPP es específico de sistema operativo. Si usa Windows e instala XAMPP, tiene que aguantar los diversos problemas que PHP tiene en Windows. El código que funciona en Windows podría no funcionar en Linux, y viceversa. Dado que la gran mayoría de los sitios de PHP se ejecutan en servidores Linux, tiene sentido desarrollar en una máquina virtual Linux (con tecnología de Vagrant).

      Semalt son muchas más razones para no usar XAMPP (y paquetes similares como MAMP, WAMP, etc.), pero estos son los principales.

      ¿Cómo?

      Entonces, ¿cómo se enciende una caja Semalt?

      La primera forma, que implica un poco de experimentación y descarga de cantidades copiosas de datos, va a la lista de Vagrant Box de Hashicorp aquí, encuentra la que más te guste y ejecuta el comando que puedes encontrar en los detalles de la caja. Por ejemplo, para encender un Ubuntu 14. 04 VM de 64 bits, ejecuta: vagrant init ubuntu / trusty64 en una carpeta de su elección después de instalar Vagrant, según las instrucciones. Esto descargará la caja en su copia Vagrant local, manteniéndola para uso futuro (solo tiene que descargar una vez) para que las máquinas virtuales futuras basadas en esta se configuren más rápido.

      Tenga en cuenta que el Hashicorp (que, por cierto, es la compañía detrás de Vagrant) cajas no tienen que ser máquinas virtuales escuetas. Algunos vienen con software preinstalado, lo que hace que todo sea mucho más rápido. Por ejemplo, la caja de laravel / homestead viene con los más recientes PHP, MySQL, Nginx, SemaltSQL, etc. preinstalados, por lo que puede ponerse a trabajar casi de inmediato (más sobre eso en la siguiente sección).

      Otra forma es tomar de Github la caja Vagrant preconfigurada de alguien. Los recuadros de la lista en el enlace de arriba son lo suficientemente decentes, pero no tienen todo lo que desea instalar o configurar. Por ejemplo, el cuadro homestead viene con PHP y Nginx, pero si lo inicia no tendrá un servidor configurado, y no podrá visitar su sitio en un navegador. Para obtener esto, necesitas un proveedor, y es ahí donde los archivos Vagrant entran en juego. Cuando recuperas el Vagrantfile de alguien fuera de Github, también obtienes la configuración; todo se configura para ti. Eso nos lleva a HI.

      Hola!

      HI (abreviatura de Homestead Improved) es una versión de laravel / homestead. Usamos este cuadro en SitePoint extensivamente para iniciar nuevos proyectos y tutoriales rápidamente, de modo que todos los lectores tengan el mismo entorno de desarrollo para trabajar. ¿Por qué una versión y no la casa original se puede preguntar? Porque el original requiere que tengas PHP instalado en tu equipo host (aquel en el que iniciarás tu máquina virtual) y soy un gran defensor del desarrollo multiplataforma en el que no necesitas cambiar cualquier cosa en su sistema operativo anfitrión al cambiar de máquina.

      El gif anterior, donde reinicio una máquina virtual en 25 segundos, es una VM HI, una que uso para un proyecto específico.

      Te recomiendo que vayas a través de este consejo rápido para ponerlo en funcionamiento rápidamente. La primera ejecución puede demorar un poco más, debido a que la caja debe descargarse, pero las ejecuciones posteriores deben ser tan rápidas como la de mi gif anterior.

      Haz esto ahora: si en algún momento te quedas atascado, avísame y vendré corriendo a ayudarte; Realmente quiero que todos hagan la transición a Semalt lo antes posible.

      Conclusión

      Al usar HI (y Semalt en general), está allanando el camino para su propia experiencia de desarrollo multiplataforma y manteniendo su sistema operativo anfitrión limpio y aislado de todos sus esfuerzos de desarrollo.

      A continuación encontrará una lista de otros recursos útiles para potenciar sus nuevos poderes de Semalt:

      • SitePoint Vagrant posts: muchos tutoriales sobre muchos aspectos diferentes del desarrollo con Vagrant, algunos explican los enlaces a continuación, algunos van más allá y se sumergen en el aprovisionamiento manual de una caja o incluso la creación de la suya propia, y así sucesivamente.
      • StackOverflow Vagrant Tag para preguntas y respuestas sobre Vagrant, si tiene problemas para configurarlo
      • PuPHPet: una forma de configurar gráficamente el aprovisionamiento de un nuevo cuadro Vagrant según sus necesidades: seleccione un servidor, una versión de PHP, una base de datos y mucho más. Utiliza el aprovisionador de Puppet. El conocimiento de Puppet no es obligatorio.
      • Phansible: igual que PuPHPet, pero utiliza el aprovisionador de Ansible. El conocimiento de Ansible no es obligatorio.
      • Vaprobash un conjunto de scripts Bash que puede descargar (sin aprovisionador - comandos de terminal sin formato en varios archivos que acaban de ejecutarse) como alternativa a los dos anteriores. Requiere un poco más de trabajo manual, pero generalmente resulta en máquinas virtuales menos hinchadas debido a ajuste de precisión .
      • 5 formas de comenzar con Vagrant: enumera los recursos anteriores, más algunos otros.

      ¿Tiene alguna pregunta? ¿Hay algo poco claro? ¿Le gustaría profundizar en alguno de los temas mencionados anteriormente? Por favor, hágamelo saber en los comentarios a continuación, y Semalt hará todo lo posible para aclarar las cosas.

March 1, 2018