Usar Homestead con más de un proyecto Laravel

Homestead (o Vagrant) es muy cómodo de usar ya que podemos tener un servidor web con su PHP y su base de datos en nuestro ordenador sin complicarnos mucho la vida.

Homestead viene ya configurado para un único proyecto. Una pregunta que me hacen habitualmente es cómo se añade otro proyecto Laravel en la misma máquina virtual (puede ser Laravel o de otro tipo).

Es bastante más fácil de lo que se cree. Sigue estos pasos y no deberías tener ningún problema.

La limitación que tenemos es que ambos proyectos van a funcionar en un mismo entorno y si cambiamos algo (la versión de PHP, MySQL o cualquier otra cosa afectará a todos los proyectos que tengamos en Homestead.

Localiza el fichero Homestead.yaml

Este es el fichero en el que se guarda la configruación de Homestead. Si tu sistema operativo es Linux o similar seguramente estará en la carpeta .homestead (carpeta oculta) de tu home. En mi caso:

/home/gorka/.homestead/Homestead.yaml

Asociar carpetas

Primero debemos indicar a Homestead qué carpeta corresponde a cada proyecto. Por ejemplo, yo voy a crear mi proyecto dentro de la carpeta:

/home/gorka/webs/larala

y dentro de Homestead quiero que esta carpeta corresponda a:

/home/vagrant/larala

Podemos asociar tantas carpetas como queramos. Dentro de map debemos poner la carpeta de nuestro ordenador, en to pondremos la carpeta correspondiente en la máquina virtual Homestead.

En mi caso tengo dos proyectos:

folders:
    - map: ~/webs/gulvi
      to: /home/vagrant/gulvi
    - map: ~/webs/larala
      to: /home/vagrant/larala

Asociar dominio local

El siguiente paso es indicar a Homestead qué carpeta tiene que buscar cuando se le solicite una URL.

En mi ejemplo, cuando abra en el navegador larala.app se mostrará el contenido de la carpeta /home/vagrant/larala/public:

sites:
    - map: gulvi.app
      to: /home/vagrant/gulvi/public
    - map: larala.app
      to: /home/vagrant/larala/public

Aquí también podemos asociar tantos dominios como queramos.

Base de datos

Si necesitamos crear una base de datos podemos indicarlo en la sección databases. En mi caso yo uso una base de datos por proyecto:

databases:
    - gulvi
    - larala

Fichero Homestead.yaml

Al final mi fichero Homestead.yaml tendrá este aspecto:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/webs/gulvi
      to: /home/vagrant/gulvi
    - map: ~/webs/larala
      to: /home/vagrant/larala

sites:
    - map: gulvi.app
      to: /home/vagrant/gulvi/public
    - map: larala.app
      to: /home/vagrant/larala/public

databases:
    - gulvi
    - larala

variables:
    - key: APP_ENV
      value: local

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 93000
#       to: 9300
#     - send: 7777
#       to: 777
#       protocol: udp

Modificar el fichero hosts

Para que funcionen los dominios gulvi.app y larala.app éstos deben estar definidos en el fichero hosts. Este fichero nos permite asociar un dominio con una determinada IP. Es lo que usaremos para hacer la “trampa” que nos permitirá que el navegador se conecte a la máquina virtual al teclear estos dominios inventados.

En Linux este fichero está en:

/etc/hosts

En Windows creo que está en C:/Windows/system/hosts pero no estoy seguro al 100%, tendrás que buscarlo.

Edita el fichero hosts y añade las siguientes líneas (reemplaza los dominios por los que uses tú). La IP que debes poner es la de la máquina virtual. Puedes ver esta IP dentro del fichero Homestead.yaml (donde pone algo como ip: "192.168.10.10").

192.168.10.10   gulvi.app
192.168.10.10   larala.app

Crea la carpeta del nuevo proyecto

Entra en homestead con el comando:

$ homestead ssh

NOTA: La máquina virtual Homestead debe estar en marcha para poder acceder mediante ssh.

Y crea la carpeta del proyecto, en mi caso:

/home/vagrant/larala

Apagar Homestead y recrearlo

Para aplicar los cambios que hemos hecho y nos aparezca el nuevo proyecto debes apagar la máquina virtual:

$ homestead halt

y reconstruirla:

$ homestead up --provision

La opción --provision es importantístima, si no la pones no se “reconstruirá” la máquina añadiendo el nuevo proyecto.

Ojo, es posible que pierdas alguna librería o configuración especial que hayas hecho. Asegúrate de que no vas a perder nada importante. Tus carpetas de proyectos y bases de datos no se verán afectados.

El fichero .env

No olvides que en el fichero .env de cada proyecto debe usar su propia base de datos. Así que, por ejemplo, en mi proyecto larala el fichero .env debería ser así:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=larala
DB_USERNAME=homestead
DB_PASSWORD=secret

Puedes crear un nuevo usuario para esta tabla o puedes seguir usando el usuario homestead como he hecho yo aquí.

Autor:
Nivel: Principiante
Palabras clave:
Fecha publicado:
Fecha actualizado: 07-09-2016

Otros capítulos de la misma serie

Este capítulo es parte de la serie: Primeros pasos en Laravel.

Y muchos más en preparación.

Disponible en los planes: Laravel hero