
Laravel Homestead: установка, настройка, создание / импорт базы данных
11.10.2018 20:41 | Laravel, Другое
Вкратце рассмотрим как установить и настроить Homestead на Ubuntu и Windows 10, а также создать базу данных и импортировать таблицы.
Зачем вообще это нужно?
Во-первых, нет необходимости устанавливать и настраивать всё необходимое ПО, поскольку оно уже включено в бокс. А это, согласитесь очень удобно и требует гораздо меньших временных затрат. Во-вторых, боксы позволяют моментально получить практически одинаковое окружение на разных машинах - достаточно лишь передать Vagrantfile. В-третьих, бокс можно быстро как удалять, так и восстанавливать со всеми необходимыми настройками (подробнее об этом читайте в доках Vagrant)
Почему Homestead? Довольно большой выбор обеспечения - серверы Nginx и Apache, php от 5.6 до 7.3, composer, Node, различные БД на любой вкус и т.д. Также надо понимать, что Homestead - это не только проекты Laravel. Делайте, всё что пожелаете хоть на нативном php, хоть на других фреймворках (те же разработчики Symfony рекомендуют посмотреть в сторону данного бокса).
Установка и настройка Homestead
Установка под Ubuntu и под Windows 10 отличаются лишь небольшими нюансами, о которых я упомяну, в остальном же порядок действий идентичен.
Сначала скачиваем инсталляторы для своей системы и устанавливаем Virtual Box и Vagrant. После чего добавляем бокс laravel/homestead следующей командой:
vagrant box add laravel/homestead
Этот бокс может работать с различными провайдерами, поэтому будет предложен выбор. В нашем случае это Virtual Box. Выбираем, т.е. вводим число соответствующую своему выбору и жмём Enter.
Далее нужно клонировать репозиторий Homestead. Директория - на Ваше усмотрение. В Ubuntu я создал каталог web в своей домашней директории, в Windows - на диске С. В обоих случаях (из директории web и корня диска С, соответственно) выполняем команду:
git clone https://github.com/laravel/homestead.git Homestead
Теперь переходим в только что созданный каталог Homestead, пишем в консоли:
bash init.sh // для Ubuntu
init.bat // для Windows
и снова Enter. В результате этого действия будет инициализирован Homestead и в его корне будет создан файл Homestead.yaml
с настройками, которые необходимо отредактировать "под себя".
В первую очередь нужно указать пути к ssh ключам. Если таковых нет - сгенерируйте их:
ssh-keygen -t rsa -C "your_email"
Ключи будут записаны в скрытый каталог .ssh вашей домашней директории, т.е. в Ubuntu это /home/YOUR_NAME/.ssh
, а в Windows 10 C:\Users\YOUR_NAME\.ssh
. Именно эти пути указаны в Homestead.yaml
, поэтому настройки ключей оставляем как есть. Более подробно останавливаться на этой тему не буду - не об этом речь - упомяну лишь, что ключи необходимы для авторизации на различных сервисах.
Теперь подумаем, где размещать проекты. Поскольку в Linux нет деления на диски, в Ubuntu в той же папке web
я создам каталог projects
. В Windows поступим по-другому. Если проекты будут лежать на диске С и слетит система, все труды уйдут в никуда вместе с ОС. Понятно, что важные работы наверняка будут запушены на Github/Gitlab/Bitbucket, но ведь наверняка будут и какие-то мелочи, для которых и репозитории создавать как бы ни к чему, но и потерять не хотелось бы. Посему, папку для проектов создадим на другом диске, например D.
Сразу создадим какой-нибудь проект для проверки. В директории projects
создаём папку test
, в которой, в свою очередь, создадим простенький файл index.php
с таким содержимым:
<?php
echo 'Yeap!';
Возвращаемся в Homestead.yaml
и редактируем пути. Вариант для Ubuntu:
folders:
- map: ~/web/projects
to: /home/vagrant/projects
sites:
- map: test.xx
to: /home/vagrant/projects/test
и для Windows:
folders:
- map: d:\web\projects
to: /home/vagrant/projects
sites:
- map: test.xx
to: /home/vagrant/projects/test
Для того, чтобы всё заработало надо также прописать хост. В Ubuntu открываем файл hosts
любым редактором (я воспользуюсь nano) и добавляем хост. Другими словами, в терминале даём команду:
sudo nano /etc/hosts
и дописываем строку:
192.168.10.10 test.xx
Если же работаем в Windows, от имени администратора открываем C:\Windows\System32\drivers\etc\hosts
и добавляем точно такую же строку. Сохраняемся и закрываем.
Всё готово к работе. Заходим в папку Homestead и запускаем Vagrant:
vagrant up
Теперь в адресной строке браузера пишем test.xx и, если всё было сделано правильно, увидим в браузере "Yeap!"
Создание базы данных, импорт таблиц
Поскольку проектов под Homestead скорее всего будет более одного, логично для каждого из них создать свою базу данных. Делается это чрезвычайно просто - нужно добавить название базы данных в файл Homestead.yaml
. Например, создадим БД test
:
databases:
- homestead
- test
Выполним команду:
vagrant provision
После того, как команда отработает, в выводе консоли среди прочих строк увидим:
==> homestead-7: Running provisioner: shell...
homestead-7: Running: script: Creating MySQL Database: test
==> homestead-7: Running provisioner: shell...
homestead-7: Running: script: Creating Postgres Database: test
То бишь, homestead создаст базу и в MySQL, и в PostgreSQL. Реквизиты доступа всё те же, но дабы избежать лишних вопросов, приведу все настройки соединения. Для MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=homestead
DB_PASSWORD=secret
Для PostgreSQL:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=test
DB_USERNAME=homestead
DB_PASSWORD=secret
Работа с БД из консоли
Разумеется, работать с базой надо внтури Homestead, поэтому выполним:
vagrant ssh
MySQL
Команда подключения такова:
mysql -u homestead -p
Далее вводим пароль (secret) и, грубо говоря, делаем что хотим - можем создавать, редактировать, удалять базы и таблицы. Пару простых команд:
show databases; // показать список баз данных
use db_name; // переключиться на бд db_name
create database db_name; // создать базу данных db_name
drop database db_name; // удалить базу данных db_name
exit // выйти из mysql-cli
PostgreSQL
Подключаемся следующим образом:
psql -U homestead -h localhost
Несколько самых простых команд:
\l // вывести список баз данных
\du // вывести список пользователей
create database db_name; // создать базу db_name
drop datatable db_name; // удалить базу db_name
\c db_name // подключиться к базе db_name
\q // выйти из psql
Импорт данных в БД
Предположим, что предварительно мы экспортировали данные в файл db.sql
. Этот файл просто закинем в корень проекта, например, в Ubuntu пусть это будет каталог ~/web/projects/test
. Находясь в командой строке бокса (т.е. ранее выполнив vagrant ssh
), переходим в корень проекта и запускаем команду:
// MySQL
mysql --user=homestead --password your_db_name < db.sql
// PostgreSQL
psql --user=homestead --password your_db_name < db.sql
ПО для работы с базами данных
Если для работы с БД больше нравится использовать инструменты с графическим интерфейсом - это тоже не проблема. Для MySQL можно использовать Workbench, а для PostgreSQL - pgAdmin. Установить можно прямо из Ubuntu Software, если речь о Windows - скачиваем инсталляторы и устанавливаем как любой другой софт. И есть ещё один очень неплохой инструмент - DBeaver, в котором можно работать не только с MySQL или PosgtreSQL, но и со многими другими базами.
Примечание: поскольку вышеуказанное ПО устанавливается НЕ внутри виртуалки, надо помнить о том, что при создании соединений следует изменить порты - 33060 вместо 3306 (MySQL) и 54320 вместо 5432 (PostgreSQL).
Для работы перечисленного софта более чем достаточно, но всё же рассмотрим, как можно работать с phpMyAdmin для MySQL.
Добавляется эта утилита как обычный сайт, т.е. скачиваем отсюда инсталлятор, распаковываем в директорию с проектами и, если в названии папки будет что-либо лишнее (версия и т.д.) переименуем на phpmyadmin. Снова отредактируем Homestead.yaml, добавив запись:
sites:
- map: test.xx
to: /home/vagrant/projects/test
- map: phpmyadmin.xx
to: /home/vagrant/projects/phpmyadmin
Как и ранее, также внесём изменения в файл hosts
:
192.168.10.10 phpmyadmin.xx
Внешние БД
Если всё-таки есть желание использовать внешнюю базу данных - меняем хост, порт и реквизиты. Например, на моём копмьютере установлен MySQL и я хочу подключиться к одноименной базе test
. В этом случае настройки выглядят так:
DB_CONNECTION=mysql
DB_HOST=10.0.2.2
DB_PORT=33060
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
Почему адрес 10.0.2.2? В моём случае виртуальный бокс видит машину-хост под таким IP. Когда выполняете vagrant ssh
, обратите внимание на то, что написано в консоли (опять-таки, в моём случае):
Last login: Sun Oct 21 09:34:28 2018 from 10.0.2.2
vagrant@homestead:~$
И последний важный нюанс - работайте с конфигами только внутри Homestead. Т.е., если изменили настройки, и всё равно летят ошибки - войдите в Homestead в директорию проекта и выполните:
php artisan config:clear
На этом на сегодня всё. Успехов!