Подтвердить что ты не робот

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

Я использую 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 не работает, конечно.

4b9b3361

Ответ 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, который вы хотите переложить на бродягу. Выполните следующие шаги.

  • cd в каталог нового проекта Laravel, который вы хотите добавить. Я предполагаю, что у вас есть все файлы laravel в нем и его работа с использованием MAMP или любого не-бродячего решения.
  • запустите vagrant init laravel/homestead. Эта команда добавит необходимый VagrantFile в этот новый проект.
  • откройте каталог вашего первого исходного файла проекта и откройте его Homestead.yaml в редакторе.
  • Теперь выполните шаги, определенные @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
    
  • На терминале cd в ваш первый оригинальный оригинальный проект каталог.
  • Запустить команду vagrant reload --provision. Это перезагрузит чтобы изменения, внесенные нами в файл .yaml, вступили в силу. База данных исходного проекта останется без изменений.
  • Запустить vagrant ssh
  • Запустите ls и убедитесь, что вы видите папку нового проекта. Если его там вы правильно настроили свой новый сайт.
  • Нажмите на URL-адрес нового сайта с добавлением http://, и ваши СДЕЛАНО.

Ответ 3

Как показано здесь, вы можете установить 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

Затем вы должны использовать 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

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

Это то, что я делаю