Utilisation de vagrant et homestead pour plusieurs sites et par installation de projet
J'utilise XAMPP depuis un bon moment, et après avoir découvert Laravel et découvert que J'aime bien ça, j'ai aussi voulu utiliser Homestead. Le problème, c'est que je n'arrive pas à gérer plusieurs sites.
j'ai essayé plusieurs choses, mais le principal problème est actuellement qu'un projet fonctionne, alors que tous les autres obtiennent un délai de connexion, en essayant d'accéder à leur page web.
Voici les étapes que j'ai prises pour utiliser Homestead
- Installation De VirtualBox
- Installation Vagrant
- ajout de homestead avec
vagrant box add laravel/homestead
- Clonging le référentiel
git clone https://github.com/laravel/homestead.git Homestead
- Créer Homestead.fichier yaml dans le
Homestead
répertoire avec lebash init.sh
script - Créer un nouveau projet
laravel new projectA
- Besoin homestead
composer require laravel/homestead
- Générer Vagrantfile
php vendor/bin/homestead make
- modifier le Homestead.yaml d'avoir une IP qui se termine par 10
- Créer un autre projet
laravel new projectB
- Besoin homestead
composer require laravel/homestead
- Générer Vagrantfile
php vendor/bin/homestead make
- modifier le Homestead.yaml d'avoir une IP qui se termine par 11
- ajouter ces deux sites au fichier hosts
sudo nano /etc/hosts
=>xxx.xx.xx.10 projecta.app
&xxx.xx.xx.11 projectb.app
- démarrage vagrant à 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 d'Un Projet que je peux y accéder http://projecta.app
et http://projectb.app
fois. Le même dans l'autre sens, malheureusement.
C'est mon vagrant global-status
id name provider state directory
------------------------------------------------------------------------
fc6fadb default virtualbox running /Users/mknb/work/projectA
j'ai pensé que je voudrais juste faire un autre vagrant up
projectB
répertoire 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 un per project
installation, alors, comment puis-je l'atteindre? Avez-vous besoin de plus d'informations?
Je n'ai pas modifié le Homestead.yaml
sauf IP et domainname homestead.app
=>projecta.app
il semble comme une installation globale est assez facile avec Homestead, puisque je devrais juste ajouter plus de sites à la Homestead.yaml, mais comme je l'ai dit j'aimerais avoir un projet d'installation. Quelqu'un peut-il aider?
Démarrer vagrant à partir du répertoire Homestead ne fonctionne pas bien sûr.
4 réponses
en utilisant Homestead à votre façon, vous créez une machine virtuelle pour chaque projet. Par conséquent, la VirtualBox ne peut pas transmettre la requête HTTP depuis votre machine hôte pour de machine virtuelle. Vous ne pouvez exécuter qu'une machine (donc un projet) à chaque fois.
pour exécuter plusieurs projets avec Homestead, vous pouvez faire comme suit:
- Clone Homestead
git clone https://github.com/laravel/homestead.git Homestead
- à l'intérieur du
Homestead
dossier, exécutezbash init.sh
éditer le folders
~/.homestead/Homestead.yaml
pour partager votre code de deux projets, avec VM:
folders:
- map: ~/pj1
to: /path/to/project1
- map: ~/pj2
to: /path/to/project2
éditer le sites
~/.homestead/Homestead.yaml
pour faire Nginx activer le domaine de la deux site:
sites:
- map: project1.local
to: /home/vagrant/pj1/public
- map: project2.local
to: /home/vagrant/pj2/public
Modifier hosts
le fichier à transférer ces domaine fo localhost
127.0.0.1 project1.local
127.0.0.1 project2.local
- Exécuter
vagrant up
dans le dossier que vous avez cloné le code Homestead à l'intérieur (qui contient leinit.sh
fichier.)
Maintenant, vous pouvez exécuter autant de projets que vous voulez avec une seule machine virtuelle Homestead.
il manque des étapes importantes dans la réponse acceptée, bien que cela m'ait beaucoup aidé. J'ai ajouté les mesures nécessaires. Merci @Hieu Le pour la réponse.
je suppose que vous avez correctement installé votre premier site comme par les instructions de Laravel docs. Maintenant, vous avez un autre site laravel que vous voulez déplacer sur vagrant. 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 dedans et son fonctionnement en utilisantMAMP
ou toute solution non vagabonde.- exécuter
vagrant init laravel/homestead
. Cette commande ajoutera la nécessaireVagrantFile
dans ce nouveau projet. - ouvrir le répertoire de votre premier projet original et ouvrir son
Homestead.yaml
le fichier dans l'éditeur. Maintenant, suivez les étapes définies par @Hieu Le Dans réponse acceptée modifier
.yaml
le fichierfolders: - 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
éditez votre fichier hosts pour transmettre ces domain fo localhost
127.0.0.1 project1.local 127.0.0.1 project2.local
- sur terminal
cd
dans votre premier projet original répertoire. - Exécuter la commande
vagrant reload --provision
. Cela va recharger le vagrant pour que les changements que nous avons faits en.yaml
entrée en vigueur du fichier. Votre base de données du projet original restera intacte. - Exécuter
vagrant ssh
- Exécuter
ls
et assurez-vous que vous pouvez voir le dossier de votre nouveau projet. Si son là vous avez configuré votre nouveau site correctement. - cliquez sur l'url du nouveau site avec l'ajout de
http://
et vous FAIRE.
Comme la façon dont ici dit, vous pouvez installer le Homestead directement dans votre projet, nécessitent l'aide de ce composer require laravel/homestead --dev
au répertoire racine de chaque projet que vous avez. Maintenant par make
commande vous pouvez générer Vagrantfile
et Homestead.yaml
fichier dans le répertoire racine de votre projet.
Mac / Linux:
php vendor/bin/homestead make
Windows:
vendor\bin\homestead make
sur chaque racine de projet vous aurez un Homestead.yaml
fichier edit:
Projet
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"
Ajouter à /etc/hosts
:
192.168.10.10 project.a
192.168.10.10 project.b
alors vous devez cd à la racine de chaque projet et vagrant up
.
Maintenant si vous vagrant ssh
de chaque projet, vous aurez ce projet dans votre environnement VM.
il y a une commande raccourcie pour afficher les sites que vous voulez ajouter..
sans avoir à détruire votre propriété.yaml file et fournit à nouveau ta boite vagabonde...
ceci s'applique à L'INSTALLATION globale et par projet
assurez-vous simplement si vous ajoutez un autre projet...
vous l'ajoutez le (projet entier) sur votre dossier partagé Déclaré dans votre propriété.yaml
en supposant votre dossier partagé être
C:/Users/MYACCOUNT/Codes
Ajouter un autre projet dans ce dossier
laravel new homestead.app
en supposant que vous êtes ssh dans votre ferme Type 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 suffit de changer votre nom de domaine et votre chemin vers le 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
habituellement, la 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 ressemblera à Homestead.app: 8000
si vous utilisez L'adresse IP dans le Homestead.yaml
192.168.10.10 homestead.app
vous pouvez accéder à votre site sans port 8000 et il suffit d'utiliser homestead.app
Cette Solution est bien meilleure que la Provision... Et il est plus Rapide...
C'est ce que je Fais