Использование бродяг и усадьбы для нескольких сайтов и для каждой установки проекта
Я использую XAMPP довольно долгое время, и после обнаружения Laravel и выяснения, что мне это очень нравится, я также хотел использовать Homestead. Проблема, с которой я столкнулась, заключается в том, что я не могу запустить несколько сайтов.
Я пробовал разные вещи, но в настоящее время основная проблема заключается в том, что один проект работает, а все остальные получают таймаут соединения при попытке получить доступ к своей веб-странице.
Это шаги, которые я предпринял для использования Homestead
- Установка VirtualBox
- Установка бродяг
- Добавление усадьбы с
vagrant box add laravel/homestead
- Закрытие репозитория
git clone https://github.com/laravel/homestead.git Homestead
- Создайте файл Homestead.yaml в каталоге
Homestead
с помощью bash init.sh
script
- Создайте новый проект
laravel new projectA
- Требовать усадьбы
composer require laravel/homestead
- Создать брандмауэр
php vendor/bin/homestead make
- Измените Homestead.yaml, чтобы иметь IP-адрес, заканчивающийся на 10
- Создайте еще один проект
laravel new projectB
- Требовать усадьбы
composer require laravel/homestead
- Создать брандмауэр
php vendor/bin/homestead make
- Измените Homestead.yaml, чтобы иметь IP-адрес, заканчивающийся на 11
- Добавление этих двух сайтов в файл hosts
sudo nano /etc/hosts
= > xxx.xx.xx.10 projecta.app
и xxx.xx.xx.11 projectb.app
- Запуск vagrant из одного из двух каталогов
vagrant up
Теперь у меня проблема, что доступен только один из проектов. Это всегда тот, из которого я назвал vagrant up
. Поэтому, если я вызываю vagrant up
из Project A, я могу получить доступ к 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
, но это не работает, конечно.
Я не хочу использовать глобальную Homestead, потому что Laravel сказал, что возможно установить per project
, так как я могу ее достичь? Вам нужна дополнительная информация?
Я не изменял Homestead.yaml
, кроме IP, и имя домена homestead.app
= > projecta.app
Кажется, что глобальная установка довольно проста с Homestead, так как мне просто нужно добавить больше сайтов в Homestead.yaml, но, как я уже сказал, я хотел бы иметь установку на каждый проект. Может ли кто-нибудь помочь?
Запуск vagrant из каталога Homestead не работает, конечно.
Ответы
Ответ 1
Используя 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 разрешил домен обоих сайтов:
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.
Ответ 2
В принятом ответе есть некоторые важные шаги, хотя это помогло мне. Я добавил эти необходимые шаги. Спасибо @Hieu Le за ответ.
Я предполагаю, что вы правильно установили свой кулачный сайт, как по инструкциям Laravel docs. Теперь у вас есть еще один сайт laravel, который вы хотите переложить на бродягу. Выполните следующие шаги.
Ответ 3
Как показано здесь, вы можете установить Homestead прямо в свой проект, потребовать его с помощью этого composer require laravel/homestead --dev
в корневом каталоге каждого проекта, который вы иметь. Теперь командой make
вы можете сгенерировать файлы Vagrantfile
и Homestead.yaml
в корневой каталог проекта.
В каждом корне проекта у вас будет файл 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
Затем вы должны использовать cd для каждого корня проекта и vagrant up
.
Теперь, если вы vagrant ssh
от каждого проекта, вы будете иметь этот проект в своей среде VM.
Ответ 4
есть команда короткого вырезания для проксирования сайтов, которые вы хотите добавить.
без необходимости испортить ваш файл Homestead.yaml и снова включить ваш бродячий ящик...
Это относится к ОБЩЕЙ ГЛОБАЛЬНОЙ И НА УСТАНОВКЕ ПРОЕКТА
Просто убедитесь, что вы добавляете еще один проект...
Вы добавляете его (весь проект) в свою общую папку
Объявлено в вашем Homestead.yaml
Предполагая, что ваша общая папка
C:/Users/MYACCOUNT/Codes
Добавить другой проект в эту папку
laravel new homestead.app
Тогда
Предполагая, что вы ssh в своей усадьбе
Тип
a.), если вы используете nginx
serve homestead.app /home/Vagrant/Code/homestead/public
b.), если вы используете 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
Это решение намного лучше, чем предоставление... И быстрее...
Это то, что я делаю