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
vagrant box add laravel/Homestead
git clone https://github.com/laravel/Homestead.git Homestead
Homestead
avec le script bash init.sh
laravel new projectA
composer require laravel/Homestead
php vendor/bin/Homestead make
laravel new projectB
composer require laravel/Homestead
php vendor/bin/Homestead make
Sudo nano /etc/hosts
=> xxx.xx.xx.10 projecta.app
& xxx.xx.xx.11 projectb.app
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.
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:
git clone https://github.com/laravel/Homestead.git Homestead
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
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.
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.
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.vagrant init laravel/Homestead
. Cette commande ajoutera la VagrantFile
nécessaire à ce nouveau projet.Homestead.yaml
dans l'éditeur.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
cd
dans votre premier projet original originalDirectory.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.vagrant ssh
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.http://
et vous êtes DONE.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.
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