
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.yaml
і hosts
, необхідно виконати команду:
vagrant provision
Створення бази даних, імпорт таблиць
Оскільки проектів під 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
На цьому на сьогодні все. Успіхів!