Практика показала, что MAMP на Mac OS не выполняет задачи по созданию среды если проект становиться профессионального уровня.
На помощь приходит Vagrant образ под названием Homestead.
Основные проблемы при установке на 2020 год были с ssl
Для этого после установки и запуска виртуалки копируем его себе на ПК и добавляем в доверенные сертификаты, кликнув на него два раза.
$ vagrant ssh -c ‘cat /etc/nginx/ssl/ca.homestead.homestead.crt’ > ca.homestead.homestead.crt
Примерно с 2021-2022 все локальные домены желательно, чтобы находились в доменной зоне .local, чтобы избежать непредвиденных багов в браузерах на клиентских машинах в момент разработки. К примеру разрабатываем сайт в PHPStorm на домене mysite.local и прописываем его в /etc/hosts по стандарту на vagrant внешний IP интерфейс.
Вообще не плохая идея после установки и сборки образа по официальной документации потренероваться на этом сервере установкой phpmyadmin, чтобы поднять уверенности в том, что с образом все в порядке.
В настройка nginx не была прописана директива минимально загружаемго файла, от этого через phpmyadmin не проходил импорт.
Если вы хотите сделать нескольво виртуальных машин на разные большие проекты, чтобы их отделить, то нужно задать разные имена этим машина через конифиг в дериктиве “name:”.
Если вы постоянно в ходе работы передвигаетесть с места на место, где разные сети(роутеры), то конфигурация сетевого моста Вам скорее всего не подойдет и нужно прописать ip для виртуальной машины ОТЛИЧНОЙ от СЕТИ РОУТЕРА(предположим 192.168.1.1/24) ip: “192.168.10.13”, но настройка дебага будет уже сложнее, если вы хотите отлаживать на профессиональном уровне через Charles, тут уже без заворота портов средствами фаервола в разных сетях Вам не обойтись и нужно погрузиться в эту тему и досконально все изучить.
Если у Вас не Intel или AMD архитектура на метеллическом процессоре, а Apple Silicon – ARM, то нужно посмотреть в листинге через консоль последнюю доступную для Вас версию HomeStead – вот такой вот командой.
~: vagrant box list
laravel/homestead (parallels, 14.0.2, (arm64))
laravel/homestead-arm (parallels, 13.0.0)
Вот пример Тру конфига:
—
memory: 2048
cpus: 2
provider: virtualbox
version: 14.0.2
name: yourvirtualmachinename
authorize: ~/.ssh/id_rsa.pub
keys:
– ~/.ssh/id_rsa
folders:
– map: /Users/joker/Downloads/websites/com2.all-uk.dev
to: /home/vagrant/code
type: “nfs”
sites:
– map: heart.loc
to: /home/vagrant/code/public/heart.uk
php: “7.2”
– map: heart.com.loc
to: /home/vagrant/code/public/heart.com
type: “apache”
– map: heart.loc
to: /home/vagrant/code/phpmyadmin
databases:
– homestead
– laravel3
– laravel4
– tuc
– tuc2
features:
– mariadb: false
– ohmyzsh: false
– webdriver: false
networks:
– type: “public_network”
ip: “192.168.1.13”
bridge: “en1: Wi-Fi (AirPort)”
# ports:
# – send: 50000
# to: 5000
# – send: 7777
# to: 777
# protocol: udp
В чем заключается что он тру?
Если мак то включаем для ускорения вот эту штуку
type: “nfs”
В название файла .loc. Если поставить .dev или .app на 2020 год на последнем образе, то могут быть разные глюки!
site.loc – вполне нормальный домен для правильной работы
По умолчанию создается пользователь базы дынных homestead с паролем secret
Для того, чтобы из локалки было удобно с помощью мобилок заходить по вай-фай на сайты на этой виртуалке включаем сетевой мост, а не нат, как это идет по умолчанию вот этой директивой:
networks:
– type: “public_network”
ip: “192.168.1.13”
bridge: “en1: Wi-Fi (AirPort)”
Ну, а далее вот основные команды для постоянного использования
#vagrant up – запуст виртуалки
#vagrant halt – остановка
#vagrant list – список других команд
#vagrant destroy –force – грохнуть образ
#vagrant reload –provision – перечитать правленный конфиг без гроханья образа – виртуальной машины с базами данных и т.п. или #vagrant provision
Бывает нужна пересборка образа после обновления, не забывает перед обновлением сохранить все базы данных, которые находятся на виртуальном образе, так как он будет полностью уничтожен. Если все конфиги, которые разварачиваются в vagrant установятся по умолчанию, то базы данных которые были на старом образе никто Вам не развернет!
1.1) and you can always destroy your old vagrant box from your vagrant folder usually ~/homestead
by running – заходим в активную папку с ваши vagrant образом виртуалки
vagrant destroy
2) create a new vagrant box by running собираем новую конфигруцию
vagrant up --provision
Далее пользуемся всем как обычно.
Далее источник – https://github.com/RomanSarvarov/larastorm/blob/master/homestead/ru.md
Laravel + Homestead + PHPStorm + XDebug
Инструкция для простого разворачивания Laravel 7 на Vagrant Homestead и связки его с IDE PHPStorm для комфортной работы.
Требования к установке
- Composer – https://getcomposer.org
- GIT – https://git-scm.com/downloads
Инструкция
1. Установка виртуальной машины
- Скачать и установить Oracle VirtualBox – https://www.virtualbox.org/wiki/Downloads
- Скачать и установить Vagrant – https://www.vagrantup.com/downloads.html
2. Установка Homestead и Laravel
- Перейти в папку с проектом
- Выполнить
composer create-project --prefer-dist laravel/laravel .
(точка на конце – не ошибка) - Выполнить
composer require laravel/homestead --dev
- Выполнить
vendor\\bin\\homestead make
(Windows) илиphp vendor/bin/homestead make
(Linux/macOS) - (НЕ ОБЯЗАТЕЛЬНО) В Homestead.yaml поменять директиву
map
в разделеsites
c homestead.test на какой-то абстрактный домен, который будет использоваться в будущем (например test.loc). Должно получится так:
sites:
-
map: test.loc
to: /home/vagrant/code/public
- Добавить новую запись
192.168.10.10 test.loc
(вместо test.loc – ваш домен) в файле /etc/hosts (в Windows файл расположен в папке по данному пути: C:\Windows\System32\drivers\etc) - В файле
.env
(в корневой папке проекта) внести настройки подключения к БД:
Настройки подключения к БД Mysql
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33060
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Настройки подключения к БД PostgreSQL
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=54320
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
3. Настройка PHPStorm
- Активировать плагин Laravel (Settings > Plugins > Laravel (активировать)). Затем включить его для проекта (Settings > Languages & Frameworks > Laravel > Enable plugin for this project
- Установить стиль PHP кода на стиль Laravel (Settings > Editor > Code Style > PHP)
- Подключиться к БД, используя параметры для подключения к БД (которые в файле
.env
) - Перейти в Settings > Languages & Frameworks > PHP
- Изменить PHP Language Level на текущую версию PHP (узнать версию PHP можно, выполнив сначала
vagrant ssh
, а затемphp -v
) - Нажать на […] в CLI Interpreters > Нажать на [+] (добавить) > From Docker, Vagrant… > Vagrant > OK
- Перейти в Settings > Command Line Tool Support > Нажать на [+] (добавить)
- В Choose Tool выбрать Tool Based On Symphone Console, для Visibility – выбрать Project, в Alias поставить
artisan
, в Path To Script поставить путь к файлу artisan (который в корневой папке проекта)
4. Установка и настройка Laravel Ide Helper
- Выполнить
composer require --dev barryvdh/laravel-ide-helper
- В config/app.php добавить
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class
(в блок Package Service Providers) - Добавить в composer.json в директиву
scripts
:
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"@ide-helper"
],
"ide": [
"@ide-helper"
],
"ide-helper": [
"@php artisan clear-compiled",
"@php artisan ide-helper:generate",
"@php artisan ide-helper:meta",
"@php artisan ide-helper:models -N"
]
- Выполнить
composer ide-helper
Более подробно о библиотеке – https://github.com/barryvdh/laravel-ide-helper
5. Настройка Xdebug
- Перейти в Settings > Languages & Frameworks > PHP > Servers > Нажать на [+]
- В поле Name и поле Host ввести название хоста (которое в Homestead.yaml)
- Поставить галочку на Use path mappings
- В File/Directory установить значение Absolute Path для поля с корневой папкой проекта в
/home/vagrant/code/
и папкой public/home/vagrant/code/public/
Дополнительно
- Заменить содержимое .gitignore:
# Laravel gitignore
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
/.idea
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log
.env
# Larave IDE Helper
_ide_helper.php
_ide_helper_models.php
.phpstorm.meta.php
# misc
.DS_Store
reports/*
!reports/.gitkeep
npm-debug.log
yarn-error.log
.phpunit.result.cache
/user-customizations.sh
/postgres_backup
/mysqldump.sql.gz
/mysql_backup
/aliases
/after.sh
/Homestead.yaml
/Homestead.json/.idea
/vendor
/.vagrant
phpunit.xml
.buildpath
.settings
.project
- Пометить папки в PHPStorm – правой кнопкой по папке > Mark directory as (папку public => Resource root, папку tests => Test Sources Root, папку vendor и storage => Excluded)
Полезные фичи (устанавливать по желанию)
- Установить Laravel Debugbar, выполнив команду
composer require barryvdh/laravel-debugbar --dev
Более подробно про библиотеку – https://github.com/barryvdh/laravel-debugbar - Сгенерировать функционал для входа/регистрации пользователей: установить специальный пакет
composer require laravel/ui
, выполнить командуphp artisan ui <тип> --auth
(<тип> заменить на bootstrap, vue, react) - Установить удобное средство для отладки Laravel Telescope: выполнить
composer require laravel/telescope
, выполнитьphp artisan telescope:install
, выполнитьphp artisan migrate
На заметку
- Если после установки выдает ошибку – выполнить
php artisan config:clear
- Чтобы дебажить с помощью Chrome – необходимо установить расширение Xdebug helper –https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
Управление виртуальной машиной
- Запуск машины – vagrant up
- Остановка машины – vagrant halt
- Подключние через SSH – vagrant ssh (отключение – vagrant exit)
- Удалить виртуальную машину – vagrant destroy -f <название/ID машины>
- Посмотреть список машин – vagrant global-status
Все команды можно посмотреть в документации к Vagrant – https://www.vagrantup.com/docs/cli/
4- shh to the vagrant machine
vagrant ssh
5- flip the server, by running:
flip
you’ll get this message:
nginx stopped
apache started
или в конфиги нужного домена прописать директиву настройки
type: “apache” – как сказано в официальной документации ларавел
НО на последних версиях виртуальных машин Homestead, есть глюк, по умолчанию апатч не в автозагрузке, поэтому при этом методе после сборки образа заходим на него по ssh и
#sudo update-rc.d apache2 enable
Так мы добавим Apache в автозагрузку.