Настройка Laravel/Homestead

Feb 2, 11:27 am Категория:

Действо “пробую Homestead” разделено на несколько частей потому, что с первого раза у меня не получилось подружиться с этой виртуальной шайтан-машиной. В первой части марлезонского балета описана пройденная часть пути с указанием оптимальной траектории. Теперь я попробую установленное софтовое богатство заставить работать. Замечу, что первая часть писалась (и относилась) к актуальной на тот момент Laravel 5.1, т.к. это LTS версия и есть шанс, что написанное будет актуально года 3. Всё нижеописанное уже проверялось на Laravel 5.2 ибо время идёт, в новой сборке Homestead используется PHP 7.0 и вообще нефиг нафиг. Поехали.

Сначала рекомендую сгенерировать SSH ключи. Для этого запускаем Git bash, выполняем команду

     ssh-keygen -t rsa -C "you@mail.addr"

и несколько раз жмём Enter. В результате появится директория ~/.ssh, в которой создадутся публичный и приватный ключи с именами id_rsa и id_rsa.pub. С ними ничего делать не нужно. Достаточно убедиться в их существовании.

Теперь самое время найти файл Homestead.yaml – он должен быть в директории .homestead в корне пользовательской директории Windows. Если не страшно, можно продолжить работать из командной строки Git bash и воспользоваться vi – это редактор с двумя режимами работы. В одном он бибикает, а во втором – всё портит.

     vim ~/.homestead/Homestead.yaml

Файл конфигурации выглядит примерно так:

---
ip: "192.168.56.10"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
folders:
    - map: ~/WorkPlace
      to: /home/vagrant/WorkPlace
sites:
    - map: laravel.dev
      to: /home/vagrant/WorkPlace/laravel.dev/public
databases:
    - homestead
variables:
    - key: 'APP_ENV'
      value: 'local'
    - key: 'APP_DEBUG'
      value: 'true'

В нём я поменял ip в соответствии с настройкой VirtualBox и cpus потому, что так захотелось. И ещё указал свою директорию WorkPlace, где исторически хранится код проектов.

Теперь для старта требуется добавить в файл

C:\Windows\System32\Drivers\etc\hosts

строку

192.168.56.1	laravel.dev

и ещё раз всё перепроверить. Я на двух компьютерах делал одну и ту же ошибку и не мог понять, почему Homestead стартует не так, как надо. А дело было в простой невнимательности при написании путей и места запуска. Внешне это проявлялось в том, что общая папка не монтировалась в домашнюю директорию пользователя.

Если всё правильно, то время набрать пару команд:

cd ~/Homestead/
vagrant up

после чего чудо враждебной техники стартует. Надо заметить, что процесс это очень неспешный. Быстрее перегрузиться из винды в линукс, мне кажется. У меня это выглядит так:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'laravel/homestead'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: A newer version of the box 'laravel/homestead' is available! You currently
==> default: have version '0.4.0'. The latest is version '0.4.1'. Run
==> default: `vagrant box update` to update.
==> default: Setting the name of the VM: homestead-7
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 80 (guest) => 8000 (host) (adapter 1)
    default: 443 (guest) => 44300 (host) (adapter 1)
    default: 3306 (guest) => 33060 (host) (adapter 1)
    default: 5432 (guest) => 54320 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/pg_000/Homestead
    default: /home/vagrant/WorkPlace => C:/Users/pg_000/WorkPlace
==> default: Running provisioner: file...
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVteaVDM18hGQbarmF89s2aOqqC1VbhOAzIVwnzocuuGmVKyA9U247/+4gATChvenRJohZ1qp6ni3LMWDJJ+9ssG7LWiXBdAVJLZt37xDo2d+MQ9iu4MEjyGPm3h/GAvE1q1xPalbvJGz9osrOj2jbp7JqwMU8RXAYOgYgFbA7d0K2PsyhzPUCXIeboAnGItw7Wh2no+OASy5RWvxrWVBwJWPwKuYz/mfUYfPp4VVmzuaJugBefqUlv10d/yAomEbM03aRNs6n+0mkHESaNrJOJrOQVbRtm+AVuw4/B6k7kuwsaRKuTeX0nUlmEIHN88b4VxX60GEpkCFctncmJGCD you@mail.addr
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-1eyh1hh.sh
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-1chxq89.sh
==> default: nginx stop/waiting
==> default: nginx start/running, process 2038
==> default:  * Restarting PHP 7.0 FastCGI Process Manager php-fpm7.0
==> default:    ...done.
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-16oumtc.sh
==> default: nginx stop/waiting
==> default: nginx start/running, process 2087
==> default:  * Restarting PHP 7.0 FastCGI Process Manager php-fpm7.0
==> default:    ...done.
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-1n96g9t.sh
==> default: mysql:
==> default: [Warning] Using a password on the command line interface can be insecure.
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-1jo5kgo.sh
==> default: createdb: database creation failed: ERROR:  database "homestead" already exists
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-2u7zhj.sh
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Updating to version cff35071b68e286f68ac64908c990c15b3ac4a0d.
==> default:     Downloading: Connecting...
==> default:     Downloading: 100%
==> default:
==> default:
==> default: Use composer self-update --rollback to return to version c9501a4cc164b176de48e44b239e619cfd5f14e5
==> default: Running provisioner: shell...
    default: Running: C:/Users/pg_000/AppData/Local/Temp/vagrant-shell20160202-3336-9hk44u.sh

Ага, php7 и общая папка на своём месте в /home/vagrant/WorkPlace. Теперь осталось выучить три команды для работы и можно разочаровываться. Вот эти команды:

  • vagrant up – запуск виртуальной машины
  • vagrant ssh – вход в консоль виртуальной машины
  • vagrant destroy —force – остановка виртуальной машины “без базара”

Вот собственно и всё. Если честно, то я полученным знанием не пользуюсь. Я просто установил в VirtualBox несколько разных операционных систем и пользуюсь ими. Дело в том, что в Homestead виртуальная машина каждый раз поднимается чистая, без данных, без настроек и без установленных в прошлом сеансе пакетов. Не всегда удобно заливать и индексировать большие базы данных и делать другие работы по разворачиванию приложения в среде выполнения. Такие дела.

 

Комментарии

2017-08-22 4:39 pm , Оставь комментарий