Используемые термины: Laravel , Ubuntu , Linux .
В инструкции мы рассмотрим базовую установку, настройку и запуск фреймворка Laravel на Linux Ubuntu.
Наша программная инфраструктура будет включать:
- Веб-сервер NGINX.
- Интерпретатор PHP + PHP-FPM + PHP Composer.
- Сервер баз данных MariaDB.
Пошагово, мы изучим:
Подготовка системы к развертыванию Laravel
Настройка веб-сервера
NGINX
PHP
NGINX + PHP
PHP Composer
MariaDB
Создание и настройка проекта Laravel
Настройка URL в NGINX
Дополнительные материалы
Предварительная настройка системы
Нам нужно выполнить небольшие действия для подготовки сервера.
Обновление пакетов
В Ubuntu очень важно вручную обновлять кэш репозитория. В противном случае могут возникать ошибки во время установки пакетов.
Выполняем команду:
apt update
Если сервер новый, то можно также обновить пакеты:
apt upgrade
Настройка брандмауэра
По умолчанию, в Ubuntu фаервол настроен пропускать все пакеты, и настройка не требуется. Однако, если в вашей системе брандмауэр блокирует входящие, нам нужно будет открыть порт 80.
Как правило, это делается с помощью утилиты iptables командой:
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
Для сохранения правил используем iptables-persistent:
apt install iptables-persistent
netfilter-persistent save
Развертывание веб сервера
Laravel является веб-приложением. Для его работы нам нужно развернуть соответствующий сервер. Как было сказано выше, в данной инструкции мы рассмотрим связку NGINX + PHP + MariaDB. Рассмотрим установку и настройку компонентов по шагам.
NGINX
Устанавливаем NGINX:
apt install nginx
Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://<IP-адрес сервера> . В итоге мы должны увидеть заголовок «Welcome to nginx!»:
* в зависимости от версии операционной системы или сборки, данная страница может различаться.
Установка PHP и необходимых компонентов
На странице документации laravel изучаем системные требования . Нам нужно обратить внимание на версию PHP. На момент обновления инструкции для актуальной версии фреймворка требовался PHP версии 8.2.
Посмотреть, какая версия будет установлена из репозитория системы можно командой:
apt search —names-only ‘^php[.0-9]{3}$’
а) Если из нативного репозитория будет устанавливаться нужная нам версия, то выполняем команду:
apt install php php-fpm php-mysql php-bcmath php-mbstring php-xml php-zip php-common php-curl —no-install-recommends
б) Если нужной версии нет, то сначала подключим репозиторий для PHP:
apt install software-properties-common
add-apt-repository ppa:ondrej/php
Для удобства зададим переменную с версией, необходимой нам (согласно системным требованиям):
export PHP_VER=8.2
После выполняем уже установку:
apt install php${PHP_VER} php${PHP_VER}-fpm php${PHP_VER}-mysql php${PHP_VER}-bcmath php${PHP_VER}-mbstring php${PHP_VER}-xml php${PHP_VER}-zip php${PHP_VER}-common php${PHP_VER}-curl —no-install-recommends
PHP развернут. Настроим его связку с веб-сервером.
Настройка связки NGINX + PHP
Открываем файл для настройки виртуального домена по умолчанию:
vi /etc/nginx/sites-enabled/default
В секции location или server редактируем параметр index на следующее значение:
…
index index.php index.html index.htm;
…
* в данном случае мы сказали серверу сначала искать индексный файл index.php , затем остальные по списку.
Также отредактируем параметр root:
root /var/www/laravel ;
* предполагается, что наше веб-приложение будет располагаться в каталоге /var/www/laravel .
А внутри секции server добавим следующее:
location ~ .php$ {
set $root_path /var/www/laravel;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
* где:
- /var/www/html — корневой путь хранения скриптов;
- /run/php/php8.2-fpm.sock — путь до сокетного файла для взаимодействия с php-fpm. Обратите еще раз внимание, что если в вашей системе будет установлена другая версия php, необходимо внести соответствующую корректировку.
Проверяем правильность настроек nginx и перезагружаем его:
nginx -t && nginx -s reload
Создаем каталог, который мы указали в nginx как root:
mkdir /var/www/laravel
Теперь заходим в него:
cd /var/www/laravel
Создаем index.php со следующим содержимым:
vi index.php
<?php phpinfo(); ?>
Открываем браузере и переходим по адресу http://<IP-адрес сервера> . Мы должны увидеть сводную информацию по PHP и его настройкам:
* в данном примере на скриншоте php версии 7.4. Вы же должны увидеть свою версию.
Идем дальше.
PHP Composer
Для развертывания laravel может использовать PHP Composer. Он позволяет создать проект и установить необходимые зависимости, а также подготовить среду для приложения. Нам необходимо установить сам композер.
Для этого скачиваем установщик:
curl -s https://getcomposer.org/installer -o /tmp/composer-setup.php
Запускаем его:
php /tmp/composer-setup.php —install-dir=/usr/local/bin —filename=composer
* в нашем примере установка composer будет выполнена в директорию /usr/local/bin .
Проверить корректность работы композера можно командой:
composer -V
Мы готовы двигаться дальше.
Установка СУБД
В данной статье мы установим MariaDB. Установка выполняется следующей командой:
apt install mariadb-server
Сервер готов к работе. Создадим базу и учетную запись, под которой будет подключаться к базе наше приложение.
Подключаемся к оболочке SQL:
mysql
Создаем базу:
> CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* в данном примере база будет с именем laravel .
Создаем пользователя и даем ему права на созданную базу:
> CREATE USER ‘laravel’@’localhost’ IDENTIFIED BY ‘laravel_123’;
> GRANT ALL ON laravel.* TO ‘laravel’@’localhost’;
* мы создали пользователя с именем laravel и паролем laravel_123 .
Веб-сервер готов к работе.
Создание проекта Laravel
Ранее, мы установили композер PHP. С его помощью можно создать Laravel-проект.
Переходим в каталог, который мы планировали использовать для приложения:
cd /var/www/laravel
Создаем проект:
composer create-project —prefer-dist laravel/laravel project1
* данная команда создаст проект с именем project1 для приложения laravel/laravel .
В текущем каталоге будет создана папка project1 . Перейдем в нее:
cd project1
Откроем на редактирование конфигурационный файл и отредактируем настройки подключения к базе данных:
vi .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel_123
* где для нас важны следующие параметры:
- DB_HOST — имя или адрес сервера баз данных. В нашем примере используется локальный хост.
- DB_DATABASE — имя базы, которую мы создали.
- DB_USERNAME — имя учетной записи MySQL, которой мы дали права для работы с базой laravel.
- DB_PASSWORD — пароль от учетной записи.
Сгенерируем ключ приложения Laravel:
php artisan key:generate —ansi
* данный ключи будет использоваться для защиты сеансов пользователя.
Выставим владельца www-data для файлов в laravel каталоге:
chown -R www-data:www-data /var/www/laravel
Почистим старый кэш и создадим новый:
php artisan config:cache
Выполняем незавершенные миграции для базы:
php artisan migrate
Готово. Можно попробовать перейти в браузере по адресу http://<IP-адрес сервера>/project1/public/ — мы должны увидеть стартовую страницу Laravel.
Настройка пути до проекта в NGINX
Можно доработать нашу конфигурацию веб-сервера, чтобы нам не пришлось дописывать путь до каталога портала.
Открываем конфигурационный файл:
vi /etc/nginx/sites-enabled/default
Меняем пути, где находятся файлы проекта:
root /var/www/laravel/project1/public ;
location ~ .php$ {
set $root_path /var/www/laravel/project1/public ;
Проверяем конфигурацию и перечитываем ее:
nginx -t && nginx -s reload
Теперь на сайт можно перейти по адресу http://<IP-адрес сервера>/ .
Читайте также
Возможно, данный инструкции тоже буду интересны в дополнение к инструкции:
1. Пример docker-compose для развертывания веб-сервера с Laravel .