2015-06-30 11 views
18

Ho usato XAMPP per un bel po 'di tempo, e dopo aver scoperto Laravel e aver scoperto che mi piaceva, volevo anche usare Homestead. Il problema che sto avendo è che non riesco a essere in grado di eseguire più siti.Usando vagabondo e homestead per più siti e per installazione di progetto

Ho provato varie cose, ma il problema principale attualmente è che un progetto funziona, mentre tutti gli altri stanno ottenendo un timeout di connessione, quando provano ad accedere alla loro pagina web.

Questi sono i passi che ho preso da usare Homestead

  1. Installazione di VirtualBox
  2. Installazione Vagrant
  3. fattoria Aggiunta con vagrant box add laravel/homestead
  4. Clonging repository git clone https://github.com/laravel/homestead.git Homestead
  5. Crea file di Homestead.yaml nella directory Homestead con lo script bash init.sh
  6. Creare un nuovo progetto laravel new projectA
  7. Richiede fattoria composer require laravel/homestead
  8. Generare Vagrantfile php vendor/bin/homestead make
  9. Modificare il Homestead.yaml di avere un IP che termina con 10
  10. Creare un altro progetto laravel new projectB
  11. Richiede fattoria composer require laravel/homestead
  12. Genera Vagrantfile php vendor/bin/homestead make
  13. Modi fy il Homestead.yaml di avere un IP che termina con 11
  14. Aggiungendo questi due siti al file Hosts sudo nano /etc/hosts =>xxx.xx.xx.10 projecta.app & xxx.xx.xx.11 projectb.app
  15. partire vagabonda da una delle due directory vagrant up

Ora, Sto avendo il problema, che solo uno dei progetti è raggiungibile. È sempre quello da cui ho chiamato vagrant up. Quindi, se chiamo vagrant up dal Progetto A, posso accedere a http://projecta.app e http://projectb.app volte. Lo stesso al contrario, purtroppo.

Questo è il mio vagrant global-status

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

ho pensato solo fare un altro vagrant up dalla directory projectB, ma che non funziona ovviamente.

Non voglio utilizzare l'Homestead globale, perché Laravel ha affermato che è possibile avere un'installazione per project, quindi come ottenerlo? Avete bisogno di ulteriori informazioni?

Io non modifico la Homestead.yaml ad eccezione del IP e il nome di dominio homestead.app =>projecta.app

Sembra un'installazione globale è abbastanza facile con Homestead, dal momento vorrei solo dovuto aggiungere altri siti al Homestead .yaml, ma come ho detto mi piacerebbe avere un'installazione per progetto. Qualcuno può aiutare?

Inizio vagabondo dalla directory Homestead non funziona, naturalmente.

+0

Non ho molta familiarità con Homestead, ma ho Vagrant che esegue immagini di Ubuntu con più siti. Forse dovresti aggiungere la configurazione di vhost anche al file Homestead.yaml. (Esempio [qui] (http://stackoverflow.com/questions/25268411/laravel-homestead-vhost-configuration)). Come si tenta di connettersi alla casa madre, tramite localhost: someforwardedport (forse inoltrano alla stessa porta?) O direttamente ai loro indirizzi IP con le voci nel file hosts locale? (quindi non sulla tua istanza vagabonda) –

+0

Ho aggiunto le voci nei siti ma Nginx non è abilitato quindi devo abilitarlo manualmente. Puoi dare un modo per abilitarlo automaticamente con l'aggiunta delle voci nel file yaml – hhsadiq

risposta

24

Utilizzando Homestead a modo tuo, si crea una macchina virtuale per ciascun progetto. Pertanto, il VirtualBox non può inoltrare la richiesta HTTP dal computer host per all della macchina virtuale. Puoi eseguire solo una macchina (quindi, un progetto) ogni volta.

Per eseguire più progetti con Homestead, si può fare come segue:

  • Clone Homestead git clone https://github.com/laravel/homestead.git Homestead
  • All'interno della cartella Homestead, eseguire bash init.sh

Modificare la proprietà folders di ~/.homestead/Homestead.yaml da condividere il tuo codice di entrambi i progetti con VM:

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

Modificare la proprietà di ~/.homestead/Homestead.yamlsites per rendere Nginx abilitare il dominio di entrambi sito:

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

Modificare il file hosts per inoltrare questi dominio fo localhost

127.0.0.1 project1.local 
127.0.0.1 project2.local 
  • Run vagrant up al cartella in cui è stato clonato il codice Homestead al suo interno (che contiene il file init.sh).

Ora è possibile eseguire tutti i progetti desiderati con una sola macchina virtuale Homestead.

+0

Ciao, jeyp, questo è quello che ho fatto ora. Utilizzo di un'installazione Homestead globale per più progetti. Ho upvoted e accettato la tua risposta comunque per il tuo sforzo: p – Musterknabe

+0

Ho aggiunto le voci nei siti ma Nginx non è abilitato quindi devo abilitarlo manualmente. – hhsadiq

+0

Come posso impostare una porta diversa per ogni sito? –

6

Ci sono alcuni passaggi importanti mancanti nella risposta accettata anche se mi ha aiutato molto. Ho aggiunto quei passaggi necessari. Grazie @Hieu Le per la risposta.

Suppongo che abbiate installato correttamente il vostro sito di pugno come da istruzioni di Laravel docs. Ora hai un altro sito di laravel che vuoi spostare su vagabondo. Segui i seguenti passi.

  1. cd nella directory del nuovo progetto Laravel che si desidera aggiungere. Presumo che tu abbia tutti i file di laravel in esso e il suo funzionamento utilizzando MAMP o qualsiasi soluzione non vagante.
  2. run vagrant init laravel/homestead. Questo comando aggiungerà il necessario VagrantFile in questo nuovo progetto.
  3. apre la directory del tuo primo file di progetto originale e apre il suo file Homestead.yaml nell'editor.
  4. Ora seguire i passaggi definiti da @Hieu Le in risposta accettata a modificare il file di .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 
    

    Modificare il file hosts per inoltrare questi dominio fo localhost

    127.0.0.1 project1.local 
    127.0.0.1 project2.local 
    
  5. Sul terminale cd nel primo progetto originale originale directory.
  6. Esegui comando vagrant reload --provision. Questo ricaricherà la macchina vagabonda in modo che le modifiche apportate nel file .yaml entrino in vigore. Il database del progetto originale rimarrà intatto.
  7. Run vagrant ssh
  8. Eseguire ls e assicurarsi di poter vedere la cartella del nuovo progetto. Se è lì hai configurato correttamente il tuo nuovo sito.
  9. Colpisci l'url del nuovo sito con l'aggiunta di http:// e sei FATTO.
+0

il percorso corretto era /path/to/project1/......(questo è il taglio della barra in avanti) – hhsadiq

+0

"$ vagrant up --provision" è il motivo per cui ho votato! –

1

Come come here dice, è possibile installare Homestead direttamente nel progetto, lo richiedono di utilizzare questo composer require laravel/homestead --dev alla directory principale di ogni progetto che avete. Ora tramite il comando make è possibile generare il file Vagrantfile e Homestead.yaml nella directory principale del progetto.

  • Mac/Linux:

    php vendor/bin/homestead make 
    
  • di Windows:

    vendor\bin\homestead make 
    

Su ogni radice del progetto si avrà un file Homestead.yaml da modificare:

  • Project-A

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

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

aggiungere questo alla /etc/hosts:

192.168.10.10 project.a 
    192.168.10.10 project.b 

Poi si deve cd per radice di ogni progetto e vagrant up . Ora se si è vagrant ssh da ciascun progetto, si avrà quel progetto nel proprio ambiente VM.

+0

OK ma ciò consente di eseguire entrambe le macchine virtuali al momento? –

0

c'è un breve comando Taglia per delega i siti che si desidera aggiungere ..

senza dover incasinato il vostro Homestead.file YAML e la fornitura tua casella vagabondo tutto da capo ...

Questo vale per sia globale che per progetto INSTALLAZIONE

Basta fare in modo, se si sta aggiungendo un altro progetto ...

si aggiunge il (intero progetto) sulla vostra cartella condivisa dichiarato nella tua Homestead.yaml

Supponendo che la cartella condivisa è C:/Users/MYACCOUNT/Codes

Aggiungi anothe R Project in quella cartella laravel new homestead.app

Poi

Assumendo che lo ssh sono nel vostro Homestead Tipo a.) Se la vostra utilizzando nginx

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

b.) Se la vostra utilizzando hhvm serve-hhvm homestead.app /home/Vagrant/Code/homestead/public Basta cambiare il nome del dominio e il percorso nella cartella pubblica del progetto

quindi modificare il vostro etc/hosts come amministratore

Quale indirizzo IP mai si definisce nella vostra Homestead.yaml

di solito il valore di default è 192.168.10.10

usarlo al posto di 127.0.0.1

Perché? perché se si utilizza il 127.0.0.1 URL sarà simile homestead.app:8000

Se si utilizza l'indirizzo IP nel Homestead.yaml

192.168.10.10 homestead.app

è possibile accedere al sito senza porta 8000 e basta usare homestead.app

Questa soluzione è molto meglio di Fornitura ... ed è più veloce ...

Questo è quello che faccio