Создание нового проекта на Laravel может происходить двумя способами: через composer, либо через установщик Laravel, который также придется установить через composer. Начнем со второго способа. Инсталлер Laravel устанавливается через composer с помощью команды:

composer global require laravel/installer

Далее чтобы создать проект Laravel можно просто выполнить команду

laravel new project_name

При этом в текущем каталоге будет создан каталог проекта с указанным именем. И в этом каталоге будет создано все необходимое для старта проекта.

При создании проекта через инсталлер есть одна особенность - устанавливается последняя версия фреймворка, и изменить это не получится (по крайней мере поиск по интернету рабочего решения не дал). Это создает некоторые проблемы при работе, так как новые версии фреймворка требует повышения версии PHP, а это не всегда возможно.

Обойти эту проблему возможно через установку проекта через composer. При этом способе установки возможно указать используемую версию фреймворка в параметрах команды. Команда для создания проекта через composer следующая:

composer create-project --prefer-dist laravel/laravel project_name "6.*"

После установки проекта с помощью одного из вышеописанных способов, можно запустить и посмотреть результат в браузере. Для этого нужно зайти в каталог проекта и в нем выполнить команду:

php artisan serve

При этом запустится локальный веб-сервер проекта и будет ждать запросов к нему через порт 8000. Вводим в браузере адрес http://localhost:8000 и любуемся результатом:

Небольшое примечание. Для того чтобы выполнилась эта команда, у вас должен быть установлен php, и путь к нему должен быть прописан в системной переменной PATH (для ОС Windows). Также если у вас уже занят порт 8000, сервер не сможет на нем запуститься и будет пробовать следующие номера - 8001, 8002. Все это будет написано в консоли при запуске.

Настраиваем соединение с базой данных

В файле .env, который находится в корне проекта, есть блок параметров, относящийся к настройкам соединения с базой данных.

Первый параметр - DB_CONNECTION. В нем указывается с каким типом базы данных мы будем соединяться. Возможные варианты прописаны в файле config/database.php и изначально могут быть следующими: mysqlsqlite, pgsql, sqlsrv.

Следующие параметры - DB_HOST и DB_PORT. В них указывается соответственно IP-адрес сервера и порт, где находится база данных. Обычно база данных и веб сервер находятся на одном сервере, так что указывается локальный адрес 127.0.0.1. И для БД MySQL указывается порт 3306. Эти значения уже будут изначально прописаны в файле после установки Laravel.

Далее следуют параметры - DB_DATABASEDB_USERNAME и DB_PASSWORD. Это соответственно имя базы данных, имя пользователя и пароль пользователя.

Также, если это необходимо, для работы с базой данных в файле config/database.php следует прописать нужные настройки. Например для базы данных MySQL я прописываю движок 'engine' => 'InnoDB', кодировку 'charset' => 'utf8' и параметры сравнения 'collation' => 'utf8_general_ci'.

После настройки соединения можно запустить миграции с помощью команды:

php artisan migrate

При этом в базе данных создастся таблица миграций migrations, а также таблицы users, password_resets и fialed_jobs.

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

php artisan migrate:fresh

Добавляем аутентификацию

Теперь, когда у нас есть настроенная база данных с таблицей пользователей, можно подключить встроенную аутентификацию пользователя. Для этого достаточно выполнить несколько команд:

composer require laravel/ui="1.*"
php artisan ui vue --auth
npm install
npm run dev

После выполнения этих команд у нас в проекте появятся все необходимые компоненты для регистрации пользователей в системе, и для их аутентификации через указание электронной почты и пароля.

На главной странице появятся ссылки на страницы входа и регистрации в системе:

Теперь можно регистрироваться новым пользователям, входить в систему и выходить из нее. Но у нас еще не настроена отсылка электронных писем. Это нужно, например, для того, чтобы пользователь мог сбросить свой пароль.

Настраиваем отсылку email

Для настройки отправки почты в файле .env есть блок параметров, начинающихся на "MAIL_".

Первый из них - это MAIL_DRIVER, по-умолчанию установлено значение smtp.

Следующие параметры - это MAIL_HOST и MAIL_PORT. Это имя хоста и порт почтового сервера, который будет отвечать за отправку почты.

Параметры MAIL_USERNAME и MAIL_PASSWORD - имя пользователя и пароль от учетной записи почтового сервера.

В параметре MAIL_ENCRYPTION указывается способ шифрования при пересылке почты.

Следующие два параметра MAIL_FROM_ADDRESS и MAIL_FROM_NAME должны содержать соответственно адрес отправителя и имя отправителя. Имя отправителя по-умолчанию соответствует имени приложения (APP_NAME).

Например, для яндекс почты настройки будут следующими:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.ru
MAIL_PORT=587
MAIL_USERNAME=user@site.ru
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=admin@server.ru
MAIL_FROM_NAME="${APP_NAME}"

Для проверки правильности настроек почты можно попробовать отослать письмо. Это легко делается с помощью tinker - специальной среды выполнения, идущей в составе Laravel. Для запуска tinker выполните команду:

php artisan tinker

Далее в этой среде нужно выполнить следующее:

Mail::send('welcome', [], function($message) {
    $message->to('user@site.ru')->from('admin@server.ru')->subject('Test email'); 
})

После выполнения этой команды, если все настройки указаны верно, на адрес user@site.ru должно придти электронное письмо с темой "Test email". Для выхода из среды tinker используйте команду exit.

Теперь у пользователей будет возможность сбросить свой пароль в случае, когда он его забыл.

Резюме

В результате вышеперечисленных действий у нас получился готовый к работе проект на Laravel, в котором уже есть регистрация и аутентификация пользователей, подключено и настроено соединение с базой данных, а также настроена отправка электронных писем.