php - primer - cómo instalar proyectos existentes de laravel
Usar vagabundo y propiedad para varios sitios y por instalación del proyecto (4)
Al usar Homestead en su camino, crea una máquina virtual para cada proyecto. Por lo tanto, VirtualBox no puede reenviar la solicitud HTTP desde su equipo host para todas las máquinas virtuales. Solo puede ejecutar una máquina (por lo tanto, un proyecto) cada vez.
Para ejecutar múltiples proyectos con Homestead, puede hacer lo siguiente:
- Clone Homestead
git clone https://github.com/laravel/homestead.git Homestead
- Dentro de la carpeta
Homestead
, ejecutabash init.sh
Edite la propiedad de folders
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
Edite la propiedad de sites
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
Edite su archivo de hosts
para reenviar estos dominios para localhost
127.0.0.1 project1.local
127.0.0.1 project2.local
- Ejecuta
vagrant up
en la carpeta en la que clonaste el código de Homestead (que contiene el archivoinit.sh
).
Ahora puede ejecutar tantos proyectos como desee con solo una máquina virtual Homestead.
He estado usando XAMPP durante bastante tiempo, y después de descubrir a Laravel y descubrir que me gusta bastante, también quería utilizar Homestead. El problema que tengo es que parece que no puedo ejecutar múltiples 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 al intentar acceder a su página web.
Estos son los pasos que he dado para usar Homestead
- Instalando VirtualBox
- Instalando Vagrant
- Agregar homestead con
vagrant box add laravel/homestead
- Clonar el
git clone https://github.com/laravel/homestead.git Homestead
del repositoriogit clone https://github.com/laravel/homestead.git Homestead
- Cree el archivo Homestead.yaml en el directorio
Homestead
con el scriptbash init.sh
- Crear un nuevo proyecto
laravel new projectA
- Requerir que el
composer require laravel/homestead
granjacomposer require laravel/homestead
- Generar archivo Vagrant
php vendor/bin/homestead make
- Modifique Homestead.yaml para tener una IP que finalice con 10
- Crear otro proyecto
laravel new projectB
- Requerir que el
composer require laravel/homestead
granjacomposer require laravel/homestead
- Generar archivo Vagrant
php vendor/bin/homestead make
- Modifique Homestead.yaml para tener una IP que finalice con 11
- Agregando esos dos sitios al archivo hosts
sudo nano /etc/hosts
=>xxx.xx.xx.10 projecta.app
&xxx.xx.xx.11 projectb.app
- Iniciando vagabundo desde uno de los dos directorios
vagrant up
Ahora, estoy teniendo el problema, que solo uno de los proyectos es alcanzable. Siempre es el que llamé vagrant up
. Entonces, si llamo a vagrant up
desde el Proyecto AI, puedo acceder a http://projecta.app
y http://projectb.app
. Lo mismo al revés, por desgracia.
Este es mi vagrant global-status
id name provider state directory
------------------------------------------------------------------------
fc6fadb default virtualbox running /Users/mknb/work/projectA
Pensé que simplemente haría otro vagrant up
desde el directorio de projectB
, pero eso no funciona, por supuesto.
No quiero utilizar Homestead global, porque Laravel dijo que es posible tener una instalación per project
, entonces, ¿cómo lo logro? necesitas más información?
No modifiqué el Homestead.yaml
excepción del IP y el nombre de dominio homestead.app
=> projecta.app
Parece que una instalación global es bastante fácil con Homestead, ya que simplemente 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?
Iniciar vagabundo desde el directorio de Homestead no funciona, por supuesto.
Como dice aquí , puedes instalar Homestead directamente en tu proyecto, requiere que usando este composer require laravel/homestead --dev
en el directorio raíz de cada proyecto que tengas. Ahora, al comando make
, puede generar Vagrantfile
y Homestead.yaml
en el directorio raíz de su proyecto.
Mac / Linux:
php vendor/bin/homestead make
Windows:
vendor/bin/homestead make
En cada raíz de proyecto, tendrá un archivo Homestead.yaml
para 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"
Agregue esto a /etc/hosts
:
192.168.10.10 project.a
192.168.10.10 project.b
Luego, debe enviar un cd a la raíz y al vagrant up
cada proyecto. Ahora si vagrant ssh
de cada proyecto, tendrás ese proyecto en tu entorno VM.
Hay algunos pasos importantes que faltan en la respuesta aceptada, aunque me ayudó muchísimo. He agregado esos pasos necesarios. Gracias @Hieu Le por respuesta.
Supongo que ha instalado correctamente su primer sitio según las instrucciones de los documentos de Laravel . Ahora tiene otro sitio laravel que desea cambiar en vagabundo. Sigue los siguientes pasos.
-
cd
en el directorio del nuevo proyecto de Laravel que desea agregar. Supongo que tiene todos los archivos laravel y funciona conMAMP
o cualquier solución que no sea vagabunda. - ejecutar
vagrant init laravel/homestead
. Este comando agregará elVagrantFile
necesario en este nuevo proyecto. - abra el directorio de su primer archivo de proyecto original y abra su archivo
Homestead.yaml
en el editor. Ahora siga los pasos definidos por @Hieu Le en la respuesta aceptada para modificar el archivo
.yaml
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
- En el
cd
terminal 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 el archivo.yaml
entren en vigencia. Su base de datos del proyecto original permanecerá intacta. - Ejecutar
vagrant ssh
- Ejecute
ls
y asegúrese de poder ver la carpeta de su nuevo proyecto. Si está allí, ha configurado su nuevo sitio correctamente. - Pulse la url del nuevo sitio con la adición de
http://
y está HECHO.
hay un comando de atajo para proxy de los sitios que desea agregar ...
sin tener que arruinar su archivo Homestead.yaml y aprovisionar su caja de vagabundo de nuevo ...
Esto se aplica tanto a la INSTALACIÓN GLOBAL COMO POR PROYECTO
Solo asegúrate de agregar otro proyecto ...
Lo agrega el (proyecto completo) en su carpeta compartida declarada en su Homestead.yaml
Suponiendo que su carpeta compartida es C:/Users/MYACCOUNT/Codes
Agregue otro proyecto en esa carpeta laravel new homestead.app
Entonces
Asumiendo que usted es ssh en su Homestead Escriba a.) Si usa nginx
serve homestead.app /home/Vagrant/Code/homestead/public
b.) si usa hhvm serve-hhvm homestead.app /home/Vagrant/Code/homestead/public
Simplemente cambie su nombre de dominio y ruta a la carpeta pública de su proyecto
Luego edite su archivo etc / hosts como administrador
Cualquier 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 usas 127.0.0.1 tu URL se verá como homestead.app:8000
Si usa la dirección IP en Homestead.yaml
192.168.10.10 homestead.app
puedes acceder a tu sitio sin el puerto 8000 y solo usar homestead.app
Esta solución es mucho mejor que la provisión ... Y es más rápido ...
Esto es lo que hago