wake-up-neo.com

Verwendung von Vagrant und Homestead für mehrere Standorte und pro Projektinstallation

Ich benutze XAMPP schon seit geraumer Zeit, und nachdem ich Laravel entdeckt hatte und herausfand, dass ich es sehr mag, wollte ich auch Homestead verwenden. Das Problem, das ich habe, ist, dass ich nicht in der Lage bin, mehrere Sites zu betreiben.

Ich habe verschiedene Dinge ausprobiert, aber derzeit besteht das Hauptproblem darin, dass ein Projekt funktioniert, während alle anderen eine Verbindungszeitüberschreitung erhalten, wenn sie versuchen, auf ihre Webseite zuzugreifen.

Dies sind die Schritte, die ich zur Verwendung von Homestead unternommen habe

  1. VirtualBox installieren
  2. Vagrant installieren
  3. Hinzufügen von Gehöften mit vagrant box add laravel/Homestead
  4. Repository hinterlegen git clone https://github.com/laravel/Homestead.git Homestead
  5. Erstellen Sie die Datei Homestead.yaml im Verzeichnis Homestead mit dem Skript bash init.sh
  6. Ein neues Projekt erstellen laravel new projectA
  7. Homestead composer require laravel/Homestead anfordern
  8. Vagrantfile php vendor/bin/Homestead make erzeugen
  9. Ändern Sie Homestead.yaml so, dass eine IP-Adresse mit 10 endet
  10. Ein anderes Projekt erstellen laravel new projectB
  11. Homestead composer require laravel/Homestead anfordern
  12. Vagrantfile php vendor/bin/Homestead make erzeugen
  13. Ändern Sie Homestead.yaml so, dass die IP-Adresse mit 11 endet
  14. Hinzufügen dieser beiden Sites zur Hosts-Datei Sudo nano /etc/hosts => xxx.xx.xx.10 projecta.app & xxx.xx.xx.11 projectb.app
  15. Starten Sie vagrant von einem der beiden Verzeichnisse aus vagrant up

Nun habe ich das Problem, dass nur eines der Projekte erreichbar ist. Es ist immer der, von dem aus ich vagrant up angerufen habe. Wenn ich also vagrant up von Projekt A aus anrufe, kann ich auf http://projecta.app und http://projectb.app-Zeiten zugreifen. Das selbe umgekehrt, leider.

Dies ist mein vagrant global-status

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

Ich dachte, ich würde einfach einen anderen vagrant up aus dem projectB-Verzeichnis machen, aber das funktioniert natürlich nicht.

Ich möchte nicht das globale Homestead verwenden, weil Laravel gesagt hat, dass es möglich ist, eine per project-Installation zu haben. Wie kann ich das erreichen? Benötigen Sie weitere Informationen?

Ich habe den Homestead.yaml nicht geändert, außer der IP und dem Domainnamen Homestead.app => projecta.app

Es scheint, dass eine globale Installation mit Homestead relativ einfach ist, da ich einfach mehr Websites zu Homestead.yaml hinzufügen müsste, aber wie gesagt, ich möchte eine Installation pro Projekt. Kann jemand helfen?

Das Starten von Vagrant aus dem Homestead-Verzeichnis funktioniert natürlich nicht.

23
Musterknabe

Durch die Verwendung von Homestead auf Ihre Art erstellen Sie für jedes Projekt eine virtuelle Maschine. Daher kann die VirtualBox die HTTP-Anforderung von Ihrer Hostmaschine für all der virtuellen Maschine nicht weiterleiten. Sie können jeweils nur eine Maschine (also ein Projekt) ausführen.

Um mehrere Projekte mit Homestead auszuführen, haben Sie folgende Möglichkeiten:

  • Gehöft klonen git clone https://github.com/laravel/Homestead.git Homestead
  • Führen Sie im Ordner Homesteadbash init.sh aus.

Bearbeiten Sie die folders-Eigenschaft von ~/.Homestead/Homestead.yaml, um den Code beider Projekte für VM freizugeben:

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

Bearbeiten Sie die sites-Eigenschaft von ~/.Homestead/Homestead.yaml, damit Nginx die Domäne beider Standorte aktiviert:

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

Bearbeiten Sie Ihre hosts-Datei, um diese Domain an localhost weiterzuleiten

127.0.0.1 project1.local
127.0.0.1 project2.local
  • Führen Sie vagrant up in dem Ordner aus, in dem Sie den Homestead-Code geklont haben (der die init.sh-Datei enthält).

Jetzt können Sie mit nur einer virtuellen Homestead-Maschine beliebig viele Projekte ausführen.

33
Hieu Le

In der akzeptierten Antwort fehlen einige wichtige Schritte, obwohl sie mir sehr geholfen haben. Ich habe diese notwendigen Schritte hinzugefügt. Danke @Hieu Le für die Antwort.

Ich gehe davon aus, dass Sie Ihre erste Site gemäß den Anweisungen von Laravel docs korrekt installiert haben. Jetzt haben Sie eine andere Laravel-Site, die Sie auf Vagabund wechseln möchten. Folgen Sie den folgenden Schritten.

  1. cd in das Verzeichnis des neuen Laravel-Projekts, das Sie hinzufügen möchten. Ich nehme an, Sie haben alle Laravel-Dateien und arbeiten mit MAMP oder einer anderen Lösung als Vagrant.
  2. führen Sie vagrant init laravel/Homestead aus. Dieser Befehl fügt die erforderliche VagrantFile in diesem neuen Projekt hinzu.
  3. Öffnen Sie das Verzeichnis Ihrer ersten ursprünglichen Projektdatei und öffnen Sie die Homestead.yaml-Datei im Editor.
  4. Folgen Sie nun den durch @Hieu Le definierten Schritten in der akzeptierten Antwort auf die .yaml-Datei .__

    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
    

    Bearbeiten Sie Ihre Hosts-Datei, um diese Domain an localhost weiterzuleiten

    127.0.0.1 project1.local
    127.0.0.1 project2.local
    
  5. Am Terminal cd in Ihr erstes Originalprojekt directory.
  6. Führen Sie den Befehl vagrant reload --provision aus. Dadurch wird die Vagrant-Maschine neu geladen, damit die Änderungen, die wir in der .yaml-Datei vorgenommen haben, wirksam werden. Ihre Datenbank des ursprünglichen Projekts bleibt erhalten.
  7. vagrant ssh ausführen
  8. Führen Sie ls aus und stellen Sie sicher, dass Sie den Ordner Ihres neuen Projekts sehen können. Wenn es dort ist, haben Sie Ihre neue Site richtig konfiguriert.
  9. Schlagen Sie die URL der neuen Site mit dem Zusatz von http:// und Ihr are DONE.
9
hhsadiq

Wie hier sagt, können Sie Homestead direkt in Ihr Projekt installieren. Sie müssen es mit diesem composer require laravel/Homestead --dev im Stammverzeichnis jedes Projekts, das Sie verwenden, anfordern. Jetzt können Sie mit dem Befehl make eine Vagrantfile- und Homestead.yaml-Datei im Stammverzeichnis des Projekts erstellen.

  • Mac/Linux:

    php vendor/bin/Homestead make
    
  • Windows:

    vendor\bin\Homestead make
    

In jedem Projektstamm haben Sie eine Homestead.yaml-Datei zum Bearbeiten:

  • Projekt-A

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

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

Fügen Sie dies zu /etc/hosts hinzu:

    192.168.10.10 project.a
    192.168.10.10 project.b

Dann müssen Sie zum Stammverzeichnis jedes Projekts und zu vagrant up..__ cd wechseln. Wenn Sie nun vagrant ssh von jedem Projekt aus verwenden, haben Sie dieses Projekt in Ihrer Umgebung VM.

0
Soroush

es gibt einen Abkürzungsbefehl, um die Sites zu repräsentieren, die Sie hinzufügen möchten.

ohne dass Sie Ihre Homestead.yaml-Datei durcheinander bringen und Ihre Vagrant-Box erneut bereitstellen müssen ...

Dies gilt sowohl für die globale als auch für die Pro-Projekt-Installation

Stellen Sie sicher, dass Sie ein weiteres Projekt hinzufügen ...

Sie fügen es (das gesamte Projekt) in Ihrem Shared Folder .__ hinzu. Deklariert in Ihrem Homestead.yaml

Angenommen, Ihr freigegebener Ordner lautet C:/Users/MYACCOUNT/Codes

Fügen Sie ein anderes Projekt in diesem Ordner hinzu laravel new Homestead.app

Dann

Angenommen, Sie sind ssh in Ihrem Homestead Geben Sie A.) Ein, wenn Sie nginx verwenden

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

b.) Wenn Sie mit hhvm serve-hhvm Homestead.app /home/Vagrant/Code/Homestead/public .__ arbeiten, ändern Sie einfach Ihren Domänennamen und Pfad in den öffentlichen Ordner Ihres Projekts

Bearbeiten Sie dann die Datei etc/hosts als Administrator

Welche IP-Adresse Sie in Ihrem Homestead.yaml definieren

in der Regel ist der Standard 192.168.10.10

Verwenden Sie es anstelle von 127.0.0.1

Warum? Wenn Sie 127.0.0.1 verwenden, wird Ihre URL wie __.Homestead.app:8000 aussehen

Wenn Sie die IP-Adresse in der Homestead.yaml verwenden

192.168.10.10 Homestead.app

sie können auf Ihre Site ohne Port 8000 zugreifen und Homestead.app verwenden

Diese Lösung ist viel besser als die Bereitstellung ... und ist schneller ...

Das ist was ich mache

0
Midas Code