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
- Instalación de VirtualBox
- Instalando vagabundo
- Adición de vivienda con
vagrant box add laravel/homestead
- Clonar el repositorio
git clone https://github.com/laravel/homestead.git Homestead
- Cree el archivo Homestead.yaml en el
Homestead
directorio con elbash init.sh
guion - Crear un nuevo proyecto
laravel new projectA
- Requerir vivienda
composer require laravel/homestead
- Generar archivo vagabundo
php vendor/bin/homestead make
- Modifica el Homestead.yaml para que tenga una IP que termine en 10
- Crear otro proyecto
laravel new projectB
- Requerir vivienda
composer require laravel/homestead
- Generar archivo vagabundo
php vendor/bin/homestead make
- Modifica el Homestead.yaml para que tenga una IP que termine en 11
- Agregar esos dos sitios al archivo de hosts
sudo nano /etc/hosts
=>xxx.xx.xx.10 projecta.app
&xxx.xx.xx.11 projectb.app
- 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.
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, ejecutarbash 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 elinit.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
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.
cd
en el directorio del nuevo proyecto de Laravel que desea agregar. Supongo que tiene todos los archivos laravel y está funcionando usandoMAMP
o cualquier solución no vagabunda.- correr
vagrant init laravel/homestead
. Este comando agregará lo necesarioVagrantFile
en este nuevo proyecto. - abra el directorio de su primer archivo de proyecto original y abra su
Homestead.yaml
archivo en el editor. -
Ahora siga los pasos definidos por @Hieu Le en respuesta aceptada para modificar
.yaml
expedientefolders: - 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
- en la terminal
cd
en su primer directorio original del proyecto original. - 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. - Correr
vagrant ssh
- Correr
ls
y asegúrese de que puede ver la carpeta de su nuevo proyecto. Si está allí, ha configurado su nuevo sitio correctamente. - 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
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
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
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í.
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