Хостинг для 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 новий 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 техпідтримкою хостинг-провайдера
Ми вже переконалися у складності процесу переїзду веб-ресурсу, особливо без його розробників. Розуміючи це, багато хостерів можуть надавати на платній або навіть безкоштовній основі послугу перенесення. Розглянемо послідовність кроків щодо її здійснення.
На сайті хостера вибираємо послугу Замовити перенесення (див. скрін).
Клацаємо по кнопці Подати запит на перенесення.