Использование бродяг и усадьбы для нескольких сайтов и для каждой установки проекта

Я довольно долго использовал XAMPP, и после обнаружения Laravel и выяснения, что мне это очень нравится, я также хотел использовать Homestead. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу запустить несколько сайтов.

Я пробовал разные вещи, но в настоящее время основная проблема заключается в том, что один проект работает, а все остальные получают таймаут соединения, пытаясь получить доступ к своей веб-странице.

Это шаги, которые я предпринял для использования Homestead

  1. Установка VirtualBox
  2. Установка бродяг
  3. Добавление усадьбы с vagrant box add laravel/homestead
  4. Клонирование хранилища git clone https://github.com/laravel/homestead.git Homestead
  5. Создайте файл Homestead каталоге Homestead с bash init.sh сценария bash init.sh
  6. Создать новый проект laravel new projectA
  7. Требовать усадьбы composer require laravel/homestead
  8. Генерировать Vagrantfile php vendor/bin/homestead make
  9. Измените Homestead.yaml, чтобы иметь IP-адрес, который заканчивается на 10
  10. Создать новый проект laravel new projectB
  11. Требовать усадьбы composer require laravel/homestead
  12. Генерировать Vagrantfile php vendor/bin/homestead make
  13. Измените Homestead.yaml, чтобы иметь IP-адрес, который заканчивается на 11
  14. Добавление этих двух сайтов в файл hosts sudo nano /etc/hosts => xxx.xx.xx.10 projecta.app & xxx.xx.xx.11 projectb.app
  15. Запуск бродяг из одной из двух каталогов

Теперь у меня проблема, что доступен только один из проектов. Это всегда тот, из которого я вызвал vagrant up . Поэтому, если я позвоню vagrant up из Project AI, вы сможете получить доступ к http://projecta.app и http://projectb.app . Точно так же, к сожалению.

Это мой vagrant global-status

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

Я думал, что просто сделаю еще одного vagrant up из каталога projectB но это, конечно, не работает.

Я не хочу использовать глобальную усадьбу, потому что Ларавель сказал, что возможно иметь установку per project , и как мне ее достичь? Вам нужно больше информации?

Я не изменял Homestead.yaml кроме IP и domainname homestead.app => projecta.app

Похоже, что глобальная установка довольно проста с Homestead, так как мне просто нужно добавить больше сайтов в Homestead.yaml, но, как я уже сказал, мне хотелось бы иметь установку на каждый проект. Может ли кто-нибудь помочь?

Запуск бродяг из каталога Homestead не работает, конечно.

Используя Homestead на вашем пути, вы создаете виртуальную машину для каждого проекта. Поэтому VirtualBox не может перенаправлять HTTP-запрос с вашего хост-компьютера для всей виртуальной машины. Вы можете запускать только одну машину (так, один проект) каждый раз.

Чтобы запустить несколько проектов с помощью Homestead, вы можете сделать следующее:

  • Clone Homestead git clone https://github.com/laravel/homestead.git Homestead
  • Внутри папки Homestead запустите bash init.sh

Отредактируйте свойство folders ~/.homestead/Homestead.yaml чтобы поделиться своим кодом обоих проектов с VM:

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

Отредактируйте свойство sites ~/.homestead/Homestead.yaml чтобы Nginx ~/.homestead/Homestead.yaml домен обоих сайтов:

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

Отредактируйте файл hosts чтобы переадресовать этот домен fo localhost

 127.0.0.1 project1.local 127.0.0.1 project2.local 
  • Запустите vagrant up в папке, в которой вы клонировали код Homestead внутри (который содержит файл init.sh ).

Теперь вы можете запускать столько проектов, сколько хотите, только с одной виртуальной машиной Homestead.

В принятом ответе есть некоторые важные шаги, хотя это помогло мне. Я добавил эти необходимые шаги. Спасибо @Hieu Le за ответ.

Я предполагаю, что вы правильно установили свой кулачный сайт, как по инструкциям Laravel docs . Теперь у вас есть еще один сайт laravel, который вы хотите переложить на бродягу. Выполните следующие действия.

  1. cd в каталог нового проекта Laravel, который вы хотите добавить. Я предполагаю, что у вас есть все файлы laravel в нем и его работа с использованием MAMP или любого не-бродячего решения.
  2. vagrant init laravel/homestead . Эта команда добавит необходимый VagrantFile в этот новый проект.
  3. откройте каталог вашего первого исходного файла проекта и откройте его файл Homestead.yaml в редакторе.
  4. Теперь выполните шаги, определенные @Hieu Le в принятом ответе, чтобы изменить файл .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 

    Отредактируйте файл хостов, чтобы переадресовать этот домен fo localhost

     127.0.0.1 project1.local 127.0.0.1 project2.local 
  5. На терминале cd в ваш первоначальный исходный каталог проекта.
  6. Запустить команду vagrant reload --provision . Это перезагрузит бродячую машину так, чтобы изменения, которые мы вносили в файл .yaml вступили в силу. База данных оригинального проекта останется без изменений.
  7. Запустить vagrant ssh
  8. Запустите ls и убедитесь, что вы видите папку вашего нового проекта. Если там вы правильно настроили свой новый сайт.
  9. Ударьте URL-адрес нового сайта с добавлением http:// и ваши DONE.

Как здесь сказано, вы можете установить Homestead прямо в свой проект, для этого нужно, чтобы этот composer require laravel/homestead --dev в корневой директории каждого проекта, который у вас есть. Теперь командой make вы можете сгенерировать Vagrantfile и Homestead.yaml в корневой каталог вашего проекта.

  • Mac / Linux:

     php vendor/bin/homestead make 
  • Окна:

     vendor\bin\homestead make 

В каждом корне проекта вы можете редактировать файл Homestead.yaml :

  • Проект-A

     ip: "192.168.10.10" ... folders: - map: "~/Code/projecta" to: "/home/vagrant/projecta" sites: - map: project.a to: "/home/vagrant/projecta/public" 
  • Проект-B

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

Добавьте это в /etc/hosts :

  192.168.10.10 project.a 192.168.10.10 project.b 

Затем вы должны подключиться к корне каждого проекта и vagrant up . Теперь, если вы vagrant ssh из каждого проекта, у вас будет этот проект в вашей среде VM.

есть команда короткого вырезания, чтобы проксировать сайты, которые вы хотите добавить.

без необходимости испортить ваш файл Homestead.yaml и снова включить ваш бродячий ящик …

Это относится к ОБЩЕЙ ГЛОБАЛЬНОЙ И ПРОГРАММНОЙ УСТАНОВКЕ

Просто убедитесь, что вы добавляете еще один проект …

Вы добавляете его (весь проект) в свою общую папку, объявленную в вашем Homestead.yaml

Предполагая, что ваша общая папка – C:/Users/MYACCOUNT/Codes

Добавьте еще один проект в эту папку laravel new homestead.app

затем

Предполагая, что ваш ssh в вашем Homestead Type a.), Если вы используете nginx

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

б) если вы используете hhvm serve-hhvm homestead.app /home/Vagrant/Code/homestead/public Просто измените свое доменное имя и путь в общую папку вашего проекта

Затем отредактируйте файл etc / hosts как администратор

Какой IP-адрес вы определяете в своем Homestead.yaml

обычно по умолчанию – 192.168.10.10

Используйте его вместо 127.0.0.1

Зачем? потому что, если вы используете 127.0.0.1, ваш URL будет выглядеть как homestead.app:8000

Если вы используете IP-адрес в Homestead.yaml

192.168.10.10 homestead.app

вы можете получить доступ к своему сайту без порта 8000 и просто использовать homestead.app

Это решение намного лучше, чем предоставление … И быстрее …

Вот что я делаю