Хостинг для 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 выбирайте отличный хостинг от HyperHost

Как установить 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 на хостинг абсолютно бесплатно, что гораздо удобнее по сравнению с предыдущим вариантом.

Перенести сайт бесплатно