Uso de vagrant y homestead para múltiples sitios y por proyecto de instalación

9 minutos de lectura

He estado usando XAMPP durante bastante tiempo, y después de descubrir Laravel y descubrir que me gusta bastante, también quise usar Homestead. El problema que tengo es que parece que no puedo ejecutar varios sitios.

He intentado varias cosas, pero el principal problema actualmente es que un proyecto funciona, mientras que todos los demás obtienen un tiempo de espera de conexión cuando intentan acceder a su página web.

Estos son los pasos que he tomado para usar Homestead

  1. Instalación de VirtualBox
  2. Instalando vagabundo
  3. Adición de vivienda con vagrant box add laravel/homestead
  4. Clonar el repositorio git clone https://github.com/laravel/homestead.git Homestead
  5. Cree el archivo Homestead.yaml en el Homestead directorio con el bash init.sh guion
  6. Crear un nuevo proyecto laravel new projectA
  7. Requerir vivienda composer require laravel/homestead
  8. Generar archivo vagabundo php vendor/bin/homestead make
  9. Modifica el Homestead.yaml para que tenga una IP que termine en 10
  10. Crear otro proyecto laravel new projectB
  11. Requerir vivienda composer require laravel/homestead
  12. Generar archivo vagabundo php vendor/bin/homestead make
  13. Modifica el Homestead.yaml para que tenga una IP que termine en 11
  14. Agregar esos dos sitios al archivo de hosts sudo nano /etc/hosts => xxx.xx.xx.10 projecta.app & xxx.xx.xx.11 projectb.app
  15. Comenzando vagabundo desde uno de los dos directorios vagrant up

Ahora, tengo el problema de que solo se puede acceder a uno de los proyectos. Siempre es el de donde llamé vagrant up. Entonces si llamo vagrant up de Project AI puede acceder http://projecta.app y http://projectb.app se acabó el tiempo. Lo mismo al revés, lamentablemente.

Este es mi vagrant global-status

id       name    provider   state   directory                           
------------------------------------------------------------------------
fc6fadb  default virtualbox running /Users/mknb/work/projectA

Pensé que haría otra vagrant up desde el projectB directorio pero eso no funciona, por supuesto.

No quiero usar el Homestead global, porque Laravel dijo que es posible tener un per project instalación, entonces, ¿cómo lo logro? necesitas más información?

yo no modifique el Homestead.yaml excepto de la IP y el nombre de dominio homestead.app => projecta.app

Parece que una instalación global es bastante fácil con Homestead, ya que solo tendría que agregar más sitios a Homestead.yaml, pero como dije, me gustaría tener una instalación por proyecto. ¿Alguien puede ayudar?

Por supuesto, iniciar vagabundo desde el directorio de Homestead no funciona.

  • No estoy muy familiarizado con Homestead, pero tengo a Vagrant ejecutando imágenes de ubuntu con varios sitios. Quizás también debería agregar la configuración de vhost al archivo Homestead.yaml. (Ejemplo aquí). ¿Cómo intenta conectarse a la granja, a través de localhost: algún puerto reenviado (¿tal vez reenvían al mismo puerto?) O directamente a sus direcciones IP con entradas en su archivo de hosts locales también? (así que no en tu instancia vagabunda)

    – Francesco de Guytenaere

    30 de junio de 2015 a las 15:26


  • He agregado las entradas en los sitios, pero Nginx no se ha habilitado, por lo que tengo que habilitarlo manualmente. ¿Puede dar una forma de habilitarlo automáticamente con solo agregar las entradas en el archivo yaml?

    – hhsadiq

    30 de julio de 2015 a las 9:32


Al usar Homestead a su manera, crea una máquina virtual para cada proyecto. Por lo tanto, VirtualBox no puede reenviar la solicitud HTTP desde su máquina host para todos de máquina virtual. Solo puede ejecutar una máquina (por lo tanto, un proyecto) cada vez.

Para ejecutar múltiples proyectos con Homestead, puede hacer lo siguiente:

  • Clon Homestead git clone https://github.com/laravel/homestead.git Homestead
  • Dentro de Homestead carpeta, ejecutar bash init.sh

Editar el folders propiedad de ~/.homestead/Homestead.yaml para compartir su código de ambos proyectos con VM:

folders:
    - map: ~/pj1
      to: /path/to/project1
    - map: ~/pj2
      to: /path/to/project2

Editar el sites propiedad de ~/.homestead/Homestead.yaml para hacer que Nginx habilite el dominio de ambos sitios:

sites:
    - map: project1.local
      to: /home/vagrant/pj1/public
    - map: project2.local
      to: /home/vagrant/pj2/public

Edita tu hosts archivo para reenviar estos dominios para localhost

127.0.0.1 project1.local
127.0.0.1 project2.local
  • Correr vagrant up en la carpeta en la que clonaste el código de Homestead (que contiene el init.sh expediente).

Ahora, puede ejecutar tantos proyectos como desee con una sola máquina virtual de Homestead.

  • Hola, jeyp, eso es lo que he hecho ahora. Uso de una instalación global de Homestead para múltiples proyectos. Voté a favor y acepté su respuesta de todos modos por su esfuerzo: p

    – Musterknabe

    1 de julio de 2015 a las 8:15

  • He agregado las entradas en los sitios, pero Nginx no se ha habilitado, por lo que tengo que habilitarlo manualmente.

    – hhsadiq

    30 de julio de 2015 a las 9:29


  • ¿Cómo puedo establecer un puerto diferente para cada sitio?

    – Junaid Qadir Shekhanzai

    14/11/2015 a las 16:32

  • Me temo que la versión actual de Homestead no permite hacer esa configuración desde el archivo de configuración. Tienes que usar SSH en la máquina virtual y actualizar la configuración de Nginx.

    – Hieu Le

    17 de noviembre de 2015 a las 1:26

  • Ya no es necesario actualizar manualmente el archivo de hosts. Homestead ahora es compatible con el vagrant-hostupdater enchufar. Solo corre vagrant plugin install vagrant-hostsupdater del directorio de Homestead.

    – Lucas Bonner

    14/08/2016 a las 17:01

avatar de usuario
hhsadiq

Faltan algunos pasos importantes en la respuesta aceptada, aunque me ayudó mucho. He añadido los pasos necesarios. Gracias @Hieu Le por respuesta

Supongo que ha instalado correctamente su primer sitio según las instrucciones de Documentos de Laravel. Ahora tiene otro sitio de laravel que desea cambiar a vagrant. Siga los siguientes pasos.

  1. cd en el directorio del nuevo proyecto de Laravel que desea agregar. Supongo que tiene todos los archivos laravel y está funcionando usando MAMP o cualquier solución no vagabunda.
  2. correr vagrant init laravel/homestead. Este comando agregará lo necesario VagrantFile en este nuevo proyecto.
  3. abra el directorio de su primer archivo de proyecto original y abra su
    Homestead.yaml archivo en el editor.
  4. Ahora siga los pasos definidos por @Hieu Le en respuesta aceptada para modificar .yaml expediente

    folders:
         - map: ~/pj1
           to: /path/to/project1
         - map: ~/pj2
           to: /path/to/project2
    
    sites:
        - map: project1.local
          to: /home/vagrant/pj1/public
        - map: project2.local
          to: /home/vagrant/pj2/public
    

    Edite su archivo de hosts para reenviar estos dominios para localhost

    127.0.0.1 project1.local
    127.0.0.1 project2.local
    
  5. en la terminal cd en su primer directorio original del proyecto original.
  6. Ejecutar comando vagrant reload --provision. Esto recargará la máquina vagabunda para que los cambios que hicimos en .yaml entrar en vigor el archivo. Su base de datos del proyecto original permanecerá intacta.
  7. Correr vagrant ssh
  8. Correr ls y asegúrese de que puede ver la carpeta de su nuevo proyecto. Si está allí, ha configurado su nuevo sitio correctamente.
  9. Presione la URL del nuevo sitio con la adición de http:// y tu estás HECHO.

  • El número 2 es un paso innecesario e irrelevante. El único archivo vagabundo que necesita en una configuración global de homestead está en el directorio de homestead.

    – Deja que los escritores escriban

    30 de diciembre de 2020 a las 18:22

avatar de usuario
Soroush

Como que aquí dice, puede instalar Homestead directamente en su proyecto, requiéralo usando este composer require laravel/homestead --dev en el directorio raíz de cada proyecto que tenga. ahora por make comando que puede generar Vagrantfile y Homestead.yaml archivo en el directorio raíz de su proyecto.

  • Mac/Linux:

    php vendor/bin/homestead make
    
  • Ventanas:

    vendor\bin\homestead make
    

En cada raíz del proyecto tendrá un Homestead.yaml archivo a editar:

  • Proyecto-A

    ip: "192.168.10.10"
    ...
    folders:
        - map: "~/Code/projecta"
          to: "/home/vagrant/projecta"
    sites:
        - map: project.a
          to: "/home/vagrant/projecta/public"
    
  • Proyecto-B

    ip: "192.168.10.10"
    ...
    folders:
        - map: "~/Code/projectb"
          to: "/home/vagrant/projectb"
    sites:
        - map: project.b
          to: "/home/vagrant/projectb/public"
    

Añadir esto a /etc/hosts:

    192.168.10.10 project.a
    192.168.10.10 project.b

Luego tienes que hacer un cd a la raíz de cada proyecto y vagrant up. ahora si tu vagrant ssh de cada proyecto, tendrá ese proyecto en su entorno de VM.

  • Bien, pero ¿permite esto ejecutar ambas máquinas virtuales al mismo tiempo?

    – Maxime Frechard

    6 de diciembre de 2017 a las 7:57

avatar de usuario
Código Midas

hay un comando de acceso directo para representar los sitios que desea agregar.

sin tener que estropear su archivo Homestead.yaml y aprovisionar su caja vagabunda de nuevo…

Esto se aplica TANTO A LA INSTALACIÓN GLOBAL COMO POR PROYECTO

Solo asegúrese de que si está agregando otro proyecto…

Lo agregas (todo el proyecto) en tu Carpeta Compartida Declarada en tu Homestead.yaml

Suponiendo que su carpeta compartida es
C:/Users/MYACCOUNT/Codes

Agregar otro proyecto en esa carpeta
laravel new homestead.app

Después

Suponiendo que está ssh en su Homestead Escriba a.) si está usando nginx


serve homestead.app /home/Vagrant/Code/homestead/public

b.) si estás usando hhvm

serve-hhvm homestead.app /home/Vagrant/Code/homestead/public

Simplemente cambie su nombre de dominio y la ruta a la carpeta pública de su proyecto

Luego edite su archivo etc/hosts como administrador

Cualquiera que sea la dirección IP que defina en su Homestead.yaml

por lo general, el valor predeterminado es 192.168.10.10

Úselo en lugar de 127.0.0.1

¿Por qué? porque si usa 127.0.0.1, su URL se verá como homestead.app:8000

Si usa la dirección IP en Homestead.yaml


192.168.10.10 homestead.app

puede acceder a su sitio sin el puerto 8000 y simplemente usar homestead.app

Esta Solución es Mucho Mejor que Provision… Y es Más Rápida…

Esto es lo que hago

avatar de usuario
Uzair Khan

Paso 1: Primero, solo asigna su otro proyecto y base de datos en el archivo homestead.yaml ingrese la descripción de la imagen aquí.

Paso 2: Cree la base de datos que mencionó en la conexión del banco de trabajo existente ingrese la descripción de la imagen aquí.

Paso 3: menciona esa base de datos en el archivo .env de tu proyecto. ingrese la descripción de la imagen aquí

Paso 4: Agregue otra ruta en su archivo drivers/etc/hosts y ejecute homestead reload --provision. Tu problema está resuelto. 🙂ingrese la descripción de la imagen aquí.

¿Ha sido útil esta solución?