Laravel — это один из самых популярных фреймворков для разработки веб-приложений и веб-сайтов на PHP. Он объективно-ориентированный, соблюдает модель MVC, поддерживает работу с несколькими базами данных, а также имеет множество инструментов для развёртывания ваших приложений и для упрощения процесса разработки.
В этой статье мы разберём, как выполняется установка Laravel Ubuntu 18.04 с помощью утилиты composer. Это намного проще, чем скачивать исходникии и устанавливать их вручную. Но для работы фреймворка вам будет необходимо иметь установленную базу данных, например MariaDB, и веб-сервер, например Nginx или Apache. Подробнее про установку всех этих компонентов читайте в статье установка LAMP в Ubuntu или как настроить веб-сервер на собственном компьютере.
Установка Laravel в Ubuntu 18.04
Пред тем, как мы перейдём непосредственно к установке, нам нужно ещё установить несколько компонентов. Сначала поставьте Composer, если его ещё нет:
sudo apt install composer
Я предполагаю, что интерпретатор php у вас уже установлен, но дополнительно нам понадобятся такие библиотеки:
sudo apt install php-mysql php-mbstring php-tokenizer php-xml php-json php-common
Теперь можно установить Laravel. Сначала перейдите в папку, где у вас будут находится веб-сайты. По умолчанию в Ubuntu это /var/www:
cd /var/www/sites
Для установки всего необходимого достаточно выполнить одну команду:
sudo composer create-project --prefer-dist laravel/laravel laravelapp
Словосочетание laravelapp замените на название проекта и папки, в которой будет расположен ваш новый проект. Утилита автоматически скачает сам фреймворк и все его зависимости. После завершения установки вам нужно только выставить правильные права на файлы фреймворка. Их владельцем должен быть тот пользователь, от имени которого запускается веб-сервер и php. По умолчанию это www-data:
sudo chown -R www-data:www-data laravelapp
Для полноценной работы фреймворка нужна база данных. В этом примере мы настроим базу данных MariaDB. Подключитесь к базе данных и создайте новую таблицу:
sudo mysql -u root -p
Затем создайте пользователя для этой базы данных и дайте ему все права на неё:
Далее обновите таблицу привилегий:
По умолчанию Laravel настроен на использование нужной нам базы данных, но вам надо указать правильные параметры доступа к ней. Откройте файл config/database.php и найдите там секцию mysql:
vi config/database.php
Синтаксис здесь очень простой. Это обычный массив php, особенность здесь в том, что программа пытается брать нужную конфигурацию из переменных окружения с помощью функции env. Если переменная окружения не задана, то берётся второй аргумент. Его вам и следует изменить. Измените имя базы данных (database), имя пользователя (username) и пароль пользователя (password). Если база данных расположена на этом же хосте, адрес хоста и порт можно оставить как есть.
Настройка веб-сервера для Laravel
Осталось проверить, как всё работает. Вы можете запустить Laravel без внешнего веб-сервера, только средствами встроенной утилиты artisan:
php artisan serve
Эта команда запускает собственный веб-сервер, который доступен по адресу 127.0.0.1:8000:
Но такой подход не очень практичен. Обычно нам необходимо запускать веб-приложения в Apache или Nginx. В Apache никаких особых настроек не нужно. Достаточно создать виртуальный хост для директории, где находится laravel и включить для него поддержку AllowOverride. Например, создайте такой файл в директории sites-available:
sudo vi /etc/apache2/sites-available/laravelapp.conf
Здесь мы используем домен lavarelapp.ru и наши файлы расположены в директории /var/www/sites/laravelapp. Теперь нужно активировать этот сайт в apache:
sudo a2ensite laravelapp
sudo systemctl restart apache2
Домен laravelapp.ru виртуальный, он мне не принадлежит и вам, думаю, тоже, поэтому нужно добавить такую строчку в файл /etc/hosts, чтобы на локальной машине всё работало:
sudo vi /etc/hosts
На производственном сервере просто указывайте реальный домен в настройках веб-сервера. Дальше ваш сайт будет доступен на выбранном домене:
Конфигурация веб-сервера Nginx выглядит немного по-другому. Здесь не поддерживаются файлы .httaccess, поэтому нам нужно включить перенаправение всех запросов на index.php в основном конфигурационном файле:
sudo vi /etc/nginx/sites-available/laravelapp.conf
Дальше вам нужно активировать этот сайт и перезапустить nginx. Также отметьте, что настройки php в nginx я здесь не привожу, но они тоже должны присутствовать.