Laravel Homestead: інсталяція, налаштування, створення / імпортування БД

Laravel Homestead: інсталяція, налаштування, створення / імпортування БД

Коротко розглянемо як встановити та налаштувати 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

 

На цьому на сьогодні все. Успіхів!