Установка и запуск веб-сервера с Laravel на Ubuntu

Используемые термины: Laravel , Ubuntu , Linux .

В инструкции мы рассмотрим базовую установку, настройку и запуск фреймворка Laravel на Linux Ubuntu.

Наша программная инфраструктура будет включать:

  • Веб-сервер NGINX.
  • Интерпретатор PHP + PHP-FPM + PHP Composer.
  • Сервер баз данных MariaDB.

Пошагово, мы изучим:

Предварительная настройка системы

Нам нужно выполнить небольшие действия для подготовки сервера.

Обновление пакетов

В 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!»:

Заголовок 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 (phpinfo)

* в данном примере на скриншоте 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 .

2. Получение бесплатного SSL сертификата Let’s Encrypt .

EnglishRussianUkrainian