Хостинг для Laravel
Фреймворк Laravel, последняя версия которого вышла в марте текущего года, предоставляет разработчикам среду разработки веб-приложений нового поколения. Он включает расширенные возможности по управлению зависимостями в PHP-приложениях за счёт его максимальной интеграции с пакетным менеджером Docker Composer. В свою очередь, сложность архитектуры требует профессионального подхода к выбору хостинга, а также методов установки и развёртывания Фреймворка Laravel на хостинге. Рассмотрим в нашей статье более детально решение этой задачи.
Выбор хостинга для Laravel
Выбор вида хостинга для установки Laravel, прежде всего, обусловлен выдвигаемыми платформой требованиями к безотказной работе всех её компонентов и расширений. В первую очередь это касается версии языка разработки и поддержки его расширений, обеспечивающих связь приложения со сторонними технологиями, например, такими как, DOM, XML и многими другими.
В Таблице 1. приведены оптимальные значения характеристик хостинга для возможности эффективной работы Фреймворка на всех этапах разработки и тестирования веб-приложения.
Таблица 1. Характеристики хостинга для поддержки Laravel.
Версия Laravel | 11 |
Версия PHP | >= 8.2 |
Веб-сервер | Apache, Nginx |
Расширения PHP (Extension) | DOM PHP Ctype Hash Fileinfo cURL Filter PCRE Mbstring Session OpenSSL XML PDO Tokenizer |
Поддержка баз данных | MySQL 5.7+ SQLite 3.35.0+ MariaDB 10.3+ SQL Server 2017+ PostgreSQL 10.0+ |
Пакетный менеджер | Docker Composer v2 + |
ОС | Windows (WSL2) Linux MacOS |
Платформа поддерживает любую из перечисленных выше баз данных. По умолчанию, в конфигурационном файле приложения настроена связь с базой MySQL, но эти настройки всегда можно изменить.
Как установить Laravel на хостинг
Рассмотрим процесс установки, развёртывания и оптимизации Фреймворка на Ubuntu, подключившись к хосту по SSH-протоколу.
Установка и развёртывание
Перед началом установки Laravel на хостинг мы должны проверить соответствие программного окружения нашего хостинга требованиям платформы, представленным нами в Таблице 1.
Проверка версии языка разработки:
$ php -v
Проверка наличия и версии пакетного менеджера:
$ composer
Если результат выполнения команды положительный, то можно начинать установку и развёртывание Фреймворка. Для этого можно воспользоваться одним из двух подходов.
Первый подход позволяет создать проект средствами Composer. К примеру, команда создания проекта с именем oneproject-app будет выглядеть следующим образом:
$ composer create-project laravel/laravel:^11.0 oneproject-app
Второй подход предусматривает глобальную установку инсталлятора Laravel на хостинге:
$ composer global require laravel/installer
Теперь необходимо объявить путь к исполняемому файлу для возможности его запуска из любого места нашей системы:
$ export PATH="$PATH:~/.config/composer/vendor/bin"
И уже после этого можно создать сам проект:
$ laravel new oneproject-app
После того, как проект будет создан, нужно перейти в рабочий каталог и запустить сервер разработки Artisan. Это можно сделать с помощью следующих команд:
$ cd oneproject-app
$ php artisan serve
После этого наш проект станет доступным в браузере по адресу хоста.
Настройка веб-сервера Nginx
В случае, если в качестве веб-сервера на хостинге будет выбран Nginx, то в этом случае разработчики платформы рекомендуют использовать следующий файл конфигурации веб-сервера:
server {
listen 80;
listen [::]:80;
server_name newproject.com;
root /srv/newproject.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Здесь newproject.com – произвольное имя сервера.
Настройка базы данных
Само собой, современное веб-приложение не может быть полноценным без использования какой-либо базы данных. Поэтому настройка базы занимает далеко не самое последнее место в процессе конфигурирования приложения. Рассмотрим этот вопрос более детально.
Конфигурация сервисов БД Фреймворка Laravel находится в файле config/database.php приложения. Здесь можно определить все возможные соединения с базой, а также указать соединение, используемое системой по умолчанию. Большая часть параметров здесь определяется значениями переменных программной среды окружения веб-проекта. Здесь также представлены примеры выставляемых значений параметров для подключения.
Приведём один из возможных примеров настройки соединений базы данных на чтение и запись данных, приводимых разработчиками платформы:
'mysql' => [
'read' => [
'host' => [
'192.168.1.7',
'196.168.1.8',
],
],
'write' => [
'host' => [
'196.168.1.9',
],
],
'sticky' => true,
'database' => env('DB_DATABASE', 'newlaravel'),
'username' => env('DB_USERNAME', 'admin'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_0900_ai_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
В указанном примере добавлены ключи на запись, чтение и прикрепление. В качестве значения в ключах на чтение и запись используется IP-адрес хоста. Другие параметры соединений объединяются из массива конфигурации базы MySQL.
Оптимизация процесса развёртывания приложений
Для оптимизации процесса развёртывания целесообразно воспользоваться механизмом распределённого кэширования, предоставляемым платформой. Это позволяет настроить кэширование файлов конфигурации, маршрутов, событий и представлений.
Приведём некоторые из основных средств управления этим процессом. Для начала необходимо запустить команду оптимизации:
$ php artisan optimize
В результате работы команды будет наполнен кэш, который необходимо очищать. Для этого можно воспользоваться опцией clear:
$ php artisan optimize:clear
Команда кэширования конфигураций позволяет объединить все конфигурационные файлы Laravel в один кэш. Это позволит уменьшить число обращений ядра Фреймворка к файловой системе, а, значит, ускорить скорость его работы. Выглядит она следующим образом:
$ php artisan config:cache
Команда кэширования событий обеспечит автоматизацию процесса их обнаружения во время развёртывания приложения. Выглядит она так:
$ php artisan event:cache
Команда кэширования маршрутов позволяет оптимизировать процесс развёртывания крупных приложений, имеющих множество маршрутов. Она сводит все их многочисленные регистрации к единственному вызову метода в кеше, что способствует значительному росту производительности системы при наличии сотен и тысяч маршрутов. Приведём эту команду:
$ php artisan route:cache
При кэшировании представлений Blade происходит их компиляция, что увеличивает производительность выполнения запросов при возвращении представлений. Соответствующая команда представлена ниже.
$ php artisan view:cache
Автоматизация процесса установки Laravel на хостинг
Мы убедились, что процесс установки и развёртывания Фреймворка является задачей нетривиальной, требующей исключительно профессионального подхода со стороны Администратора системы. Для того, чтобы упростить этот процесс разработчики Laravel предоставили ряд инструментов, базирующихся на разных концепциях. Рассмотрим их по отдельности.
Laravel Forge
Этот инструмент обеспечивает автоматическое создание и настройку сервера на базе предоставленной инфраструктуры от AWS, DigitalOcean и других поставщиков. Он способен в автоматическом режиме произвести установку и настройку любой службы или компонента системы – веб-сервера, базы данных, настроить распределённое кэширование и выполнить другие действия.
Laravel Vapor
Инструмент даёт возможность получить абсолютно безсерверную платформу развёртывания Фреймворка на базе инфраструктуры, предоставляемой AWS. Её основное преимущество – простота и высокий уровень масштабируемости системы.
Установка Laravel на хостинг из своего аккаунта
Хостинг-провайдер стремится максимально упростить для клиентов пользование предоставляемыми ими сервисами. И Фреймворк Laravel не исключение. Способ реализации установщика зависит от технологических решений, используемых конкретным хостинг-провайдером. Установить его со своего аккаунта теперь может любой владелец сайта. К примеру, в CPanel выход к установщику можно получить через Softaculous Apps Installer в блоке Программное обеспечение (см. скрин).
После перехода по Softaculous Apps Installer попадаем в список доступных установщиков CMS и Фреймворков (см. скрин ниже).
При выборе Laravel попадаем в окно установки, где есть возможность выбрать вид установки – быстрая или расширенная (см. скрин).
Например, при выборе быстрой установки мы попадаем в окно запуска, представленное ниже.
Здесь мы должны указать имя домена и версию программы, после чего активировать процесс инсталляции с помощью кнопки Установка в нижней части окна. Все операции по созданию и конфигурированию служб сервера будут выполнены в автоматическом режиме. Нам нужно будет лишь указать такие данные, как имя базы, пароль доступа и т. д.
Как перенести проект на Laravel
Любое современное веб-приложение представляет собой сложный программный комплекс со своими характеристиками. И поэтому по любым вопросам, связанным с переносом сайта на другой хостинг, необходимо консультироваться с его разработчиками, или же при переносе сайта к нам на хостинг, можно воспользоваться бесплатной опцией переноса сайта. Однако существуют общие подходы к переносу Laravel на хостинг. Приведём эти подходы.
Клонирование
В случае, если ваш проект находится на Git можно воспользоваться возможностью его переноса путём клонирования. Для этого необходимо подключиться к хосту по SSH и ввести в терминале следующую команду:
$ git clone http://github.com/oneproject/oneproject_site/
Перенос самостоятельно «вручную»
В этом случае для выполнения переноса нужно выполнить следующие действия:
- Загрузить файлы сайта на сервер;
- Создать базу;
- Настроить подключение к базе;
- Обновить зависимости;
- Запустить процесс миграции на хостинге;
- Направить домен на хостинг.
Рассмотрим выполнение каждого из шагов по отдельности.
Загрузку файлов можно выполнить с помощью файл Менеджера (см. скрины) или любого FTP-клиента в своём аккаунте на хостинге.
Для создания базы данных можно воспользоваться одним из встроенных сервисов в CPanel на хостинге: phpMyAdmin или помощником баз данных MySQL, как показано ниже.
В созданную базу с помощью приведённых выше инструментов нужно импортировать дамп с данными. После этого остаётся настроить к ней подключение, скорректировав параметры предыдущего хостинга в конфигурационном файле сайта. Очень часто хостеры предоставляют соответствующие инструкции для этого.
Для возможности обновления зависимостей и всех пакетов нужно перейти в каталог вашего проекта:
$ cd ~/oneproject.com/www/
После чего запустить следующую команду в терминале:
PATH=/usr/local/php80/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
composer install
Теперь с помощью опции migrate можно запустить процесс миграции данных:
/usr/local/php80/bin/php artisan migrate
Когда всё будет готово можно выполнить перенаправление домена на новый хостинг, которое заключается в смене NS-серверов в личном кабинете Регистратора, которые предоставляются хостинг-провайдером.
Перенос проекта Laravel техподдержкой хостинг-провайдера
Мы уже убедились в сложности процесса переезда веб-ресурса, в особенности без участия его разработчиков. Понимая это, многие хостеры могут предоставлять на платной или даже бесплатной основе услугу переноса. Рассмотрим последовательность шагов для её осуществления.
На сайте хостера выбираем услугу Заказать перенос (см. скрин).
Кликаем по кнопке Подать запрос на перенос.
В появившемся окне заполняем все поля формы запроса на перенос сайта и нажимаем кнопку Подать запрос на перенос в нижней части окна.
После оформления заявки и её подтверждения специалисты хостинговой компании перенесут проект на Laravel на хостинг абсолютно бесплатно, что гораздо удобнее по сравнению с предыдущим вариантом.