web-dev-qa-db-fra.com

Utilisation de vagrant et Homestead pour plusieurs sites et par projet

J'utilise XAMPP depuis un certain temps, et après avoir découvert Laravel et découvert que cela me plaisait beaucoup, je voulais aussi utiliser Homestead. Le problème que j'ai, c'est que je n'arrive pas à gérer plusieurs sites.

J'ai essayé diverses choses, mais le principal problème à l'heure actuelle est qu'un projet fonctionne, tandis que tous les autres ont un délai de connexion en cas de tentative de connexion à leur page Web.

Ce sont les étapes que j'ai prises pour utiliser Homestead

  1. Installer VirtualBox
  2. Installation de vagabond
  3. Ajout de Homestead avec vagrant box add laravel/Homestead
  4. Fixation du référentiel git clone https://github.com/laravel/Homestead.git Homestead
  5. Créer un fichier Homestead.yaml dans le répertoire Homestead avec le script bash init.sh
  6. Créer un nouveau projet laravel new projectA
  7. Requiert Homestead composer require laravel/Homestead
  8. Générer Vagrantfile php vendor/bin/Homestead make
  9. Modifier le fichier Homestead.yaml afin d’avoir une adresse IP se terminant par 10
  10. Créer un autre projet laravel new projectB
  11. Requiert Homestead composer require laravel/Homestead
  12. Générer Vagrantfile php vendor/bin/Homestead make
  13. Modifier le fichier Homestead.yaml afin d’avoir une adresse IP se terminant par 11
  14. Ajout de ces deux sites au fichier hôtes Sudo nano /etc/hosts => xxx.xx.xx.10 projecta.app & xxx.xx.xx.11 projectb.app
  15. Vagabond à partir de l’un des deux répertoires vagrant up

Maintenant, j'ai le problème, qu'un seul des projets est accessible. C'est toujours celui d'où j'ai appelé vagrant up. Donc, si j'appelle vagrant up à partir du projet A, je peux accéder à http://projecta.app et http://projectb.app fois. La même chose dans l'autre sens, malheureusement.

C'est mon vagrant global-status

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

Je pensais que je ferais juste un autre vagrant up à partir du répertoire projectB mais cela ne fonctionne pas bien sûr.

Je ne veux pas utiliser le Homestead global, parce que Laravel a dit, qu'il est possible d'avoir une installation per project, alors comment puis-je l'obtenir? Avez-vous besoin de plus d'informations?

Je n'ai pas modifié le Homestead.yaml sauf l'IP et le nom de domaine Homestead.app => projecta.app

Il semble qu’une installation globale soit relativement facile avec Homestead, car il me suffirait d’ajouter plus de sites à Homestead.yaml, mais comme je l’ai dit plus tôt, j’aimerais avoir une installation par projet. Quelqu'un peut aider?

Démarrer vagabond à partir du répertoire Homestead ne fonctionne bien sûr pas.

23
Musterknabe

En utilisant Homestead à votre manière, vous créez une machine virtuelle pour chaque projet. Par conséquent, VirtualBox ne peut pas transférer la demande HTTP de votre machine hôte pourall de la machine virtuelle. Vous ne pouvez exécuter qu'une seule machine (donc un projet) à chaque fois.

Pour exécuter plusieurs projets avec Homestead, vous pouvez procéder comme suit:

  • Cloner Homestead git clone https://github.com/laravel/Homestead.git Homestead
  • Dans le dossier Homestead, exécutez bash init.sh

Modifiez la propriété folders de ~/.Homestead/Homestead.yaml pour partager votre code des deux projets avec VM:

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

Modifiez la propriété sites de ~/.Homestead/Homestead.yaml pour que Nginx active le domaine des deux sites:

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

Editez votre fichier hosts pour transférer ces domaine de localhost

127.0.0.1 project1.local
127.0.0.1 project2.local
  • Exécutez vagrant up dans le dossier dans lequel vous avez cloné le code Homestead (qui contient le fichier init.sh).

Vous pouvez désormais exécuter autant de projets que vous le souhaitez avec une seule machine virtuelle Homestead.

33
Hieu Le

Il y a quelques étapes importantes qui manquent dans la réponse acceptée bien que cela m'a beaucoup aidé. J'ai ajouté ces étapes nécessaires. Merci @Hieu Le pour la réponse.

Je suppose que vous avez correctement installé votre premier site comme indiqué dans les instructions de Laravel docs . Maintenant, vous avez un autre site laravel sur lequel vous voulez changer de vagabond. Suivez les étapes suivantes.

  1. cd dans le répertoire du nouveau projet Laravel que vous souhaitez ajouter. Je suppose que vous avez tous les fichiers laravel et son fonctionnement en utilisant MAMP ou toute autre solution non vagabonde.
  2. lancez vagrant init laravel/Homestead. Cette commande ajoutera la VagrantFile nécessaire à ce nouveau projet.
  3. ouvrez le répertoire de votre premier fichier de projet d'origine et ouvrez son fichier Homestead.yaml dans l'éditeur.
  4. Suivez maintenant les étapes définies par @Hieu Le dans la réponse acceptée au fichier Modify .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
    

    Editez votre fichier hosts pour transférer ces domaine de localhost

    127.0.0.1 project1.local
    127.0.0.1 project2.local
    
  5. Sur le terminal cd dans votre premier projet original originalDirectory.
  6. Exécutez la commande vagrant reload --provision. Cela rechargera la machine Vagrant afin que les modifications apportées dans le fichier .yaml entrent en vigueur. Votre base de données du projet original restera intacte.
  7. Exécuter vagrant ssh
  8. Exécutez ls et assurez-vous que vous pouvez voir le dossier de votre nouveau projet. Si c'est le cas, vous avez configuré votre nouveau site correctement.
  9. Cliquez sur l'URL du nouveau site avec l'ajout de http:// et vous êtes DONE.
9
hhsadiq

Comme comment ici dit, vous pouvez installer Homestead directement dans votre projet, utilisez-le à l'aide de ce composer require laravel/Homestead --dev situé dans le répertoire racine de chaque projet que vous avez. Maintenant, avec la commande make, vous pouvez générer le fichier Vagrantfile et Homestead.yaml dans le répertoire racine de votre projet.

  • Mac/Linux:

    php vendor/bin/Homestead make
    
  • Les fenêtres:

    vendor\bin\Homestead make
    

Sur chaque racine de projet, vous aurez un fichier Homestead.yaml à éditer:

  • Projet-A

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

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

Ajoutez ceci à /etc/hosts:

    192.168.10.10 project.a
    192.168.10.10 project.b

Ensuite, vous devez vous connecter à la racine de chaque projet et à vagrant up. Maintenant, si vous vagrant ssh de chaque projet, ce projet sera dans votre environnement VM.

0
Soroush

il existe une commande de raccourci pour envoyer un proxy aux sites que vous souhaitez ajouter.

sans avoir à bousiller votre fichier Homestead.yaml et à réapprovisionner votre boîte à vagants ...

Ceci s’applique à la fois pour l’INSTALLATION GLOBALE ET PAR PROJET

Assurez-vous simplement que si vous ajoutez un autre projet ...

Vous l'ajoutez le (projet entier) à votre dossier partagé Déclaré dans votre Homestead.yaml

En supposant que votre dossier partagé est C:/Users/MYACCOUNT/Codes

Ajouter un autre projet dans ce dossier laravel new Homestead.app

Ensuite

En supposant que vous êtes ssh dans votre Homestead Tapez A.) Si vous utilisez nginx

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

b.) si vous utilisez hhvm serve-hhvm Homestead.app /home/Vagrant/Code/Homestead/public Il vous suffit de changer votre nom de domaine et votre chemin en dossier public de votre projet.

Puis éditez votre fichier etc/hosts en tant qu'administrateur

Quelle que soit l'adresse IP que vous définissez dans votre Homestead.yaml

généralement la valeur par défaut est 192.168.10.10

Utilisez-le au lieu de 127.0.0.1

Pourquoi? parce que si vous utilisez 127.0.0.1 votre URL sera commeHomestead.app:8000

Si vous utilisez l'adresse IP dans le fichier Homestead.yaml

192.168.10.10 Homestead.app

vous pouvez accéder à votre site sans le port 8000 .__ et simplement utiliser Homestead.app

Cette solution est bien meilleure que la provision ... et est plus rapide ...

C'est ce que je fais

0
Midas Code