Установка и запуск веб-сервера с 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.

# Ubuntu # Интернет # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет