Установка и запуск веб-сервера с Laravel на Ubuntu
Используемые термины: 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.