MAATRIX / Блог / Как установить и настроить Bagisto на VPS

Как установить и настроить Bagisto на VPS

MAATRIX

Если вы искали open-source движок для интернет-магазина и устали от тяжести Magento, но WooCommerce и OpenCart кажутся слишком простыми — присмотритесь к Bagisto. Это бесплатная платформа на Laravel с мультимагазинностью, каналами продаж и админкой на Vue из коробки. Ниже — рабочий путь установки на чистый VPS: от голой Ubuntu до магазина, доступного по HTTPS.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Bagisto и кому он подходит

Bagisto — open-source e-commerce фреймворк на Laravel и Vue.js, впервые выпущенный компанией Webkul. По архитектуре он ближе к Magento (гибкая система атрибутов, мультисклады, мультиканальность), но кода и зависимостей заметно меньше, а порог входа для PHP-разработчика — ниже, потому что весь стек стандартный для Laravel-экосистемы.

Плюсы: бесплатная лицензия, активное сообщество, готовые модули (маркетплейс, подписки, мультивендор), REST/GraphQL API, разумные требования к серверу по сравнению с Magento. Минусы: документация местами отстаёт от кода, часть плагинов платная, а для тяжёлого каталога (десятки тысяч товаров) без Elasticsearch и очередей на Redis производительность просядет.

Если вам нужна витрина попроще — посмотрите на установку OpenCart или PrestaShop. Если каталог небольшой и хочется WordPress-экосистему — статья про установку WooCommerce. Bagisto имеет смысл, когда вы уже комфортно работаете с Laravel и хотите гибкость без цены Magento Commerce.

Требования к серверу и что подготовить заранее

Минимальный работающий VPS для тестового магазина — 2 vCPU и 4 ГБ RAM, но под живую нагрузку с несколькими сотнями заказов в день комфортнее брать от 4 vCPU / 8 ГБ RAM, особенно если планируете держать на той же машине MySQL, Redis и очереди. Диск — SSD/NVMe от 40 ГБ, дальше зависит от объёма медиафайлов каталога.

Стек, который потребуется:

  • Ubuntu 24.04 LTS (или Debian 12) — актуальная LTS на конец августа 2026;
  • PHP 8.2 или 8.3 с расширениями для Laravel;
  • MySQL 8.0+ или MariaDB 10.6+;
  • Composer 2.x;
  • Node.js 18/20 LTS и npm — фронтенд Bagisto собирается через Vite;
  • Nginx как веб-сервер;
  • Redis — опционально, но настоятельно рекомендуется для кэша, сессий и очередей;
  • Supervisor — для фоновых воркеров очередей.

Точные минимальные версии PHP и Node у Bagisto меняются от релиза к релизу — перед установкой стоит свериться с composer.json в репозитории, который вы разворачиваете, чтобы не упереться в конфликт зависимостей.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка LEMP-стека и зависимостей

Обновите систему и поставьте базовый набор:

apt update && apt upgrade -y
apt install -y nginx mysql-server curl git unzip software-properties-common

PHP 8.3 с нужными расширениями (репозиторий Ondřej Surý для свежих версий на Ubuntu):

add-apt-repository ppa:ondrej/php -y
apt update
apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-xml php8.3-mbstring \
  php8.3-curl php8.3-zip php8.3-gd php8.3-bcmath php8.3-intl php8.3-redis

Composer:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer --version

Node.js 20 LTS через NodeSource:

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
node -v && npm -v

Redis, если планируете использовать его для кэша и очередей (детали — в статье про установку Redis на VPS):

apt install -y redis-server
systemctl enable --now redis-server

Создайте базу данных для магазина. Если ранее не разворачивали MySQL — сначала пройдите базовую настройку из статьи про установку MySQL на VPS:

CREATE DATABASE bagisto CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'bagisto_user'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON bagisto.* TO 'bagisto_user'@'localhost';
FLUSH PRIVILEGES;

Установка самого Bagisto

Создайте проект через Composer в каталоге веб-сервера:

cd /var/www
composer create-project bagisto/bagisto bagisto
cd bagisto

Скопируйте .env и сгенерируйте ключ приложения:

cp .env.example .env
php artisan key:generate

В .env пропишите доступ к базе и базовый URL магазина:

APP_NAME=Bagisto
APP_URL=https://shop.example.com
APP_ENV=production
APP_DEBUG=false

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bagisto
DB_USERNAME=bagisto_user
DB_PASSWORD=СЛОЖНЫЙ_ПАРОЛЬ

Дальше — установочная команда, которая прогоняет миграции, сидит демо-данные и настраивает валюты/локали в интерактивном режиме:

php artisan bagisto:install

Если предпочитаете ручной контроль вместо мастера — можно выполнить шаги по отдельности:

php artisan migrate
php artisan db:seed
php artisan storage:link

Соберите фронтенд-ассеты (Bagisto использует Vite):

npm install
npm run build

Права на каталоги для записи (кэш, логи, загружаемые файлы):

chown -R www-data:www-data /var/www/bagisto
find /var/www/bagisto -type f -exec chmod 644 {} \;
find /var/www/bagisto -type d -exec chmod 755 {} \;
chmod -R 775 storage bootstrap/cache

Настройка Nginx и SSL

Как и любое Laravel-приложение, Bagisto отдаётся из каталога public/. Конфиг для Nginx — стандартный для PHP-FPM (общий разбор паттерна reverse proxy и типичных ошибок nginx есть в статье про Nginx как reverse proxy, но здесь Nginx отдаёт файлы напрямую, без проксирования на другой сервис):

server {
    listen 80;
    server_name shop.example.com;
    root /var/www/bagisto/public;
    index index.php index.html;

    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$ {
        expires 30d;
        access_log off;
    }
}

Проверьте конфиг и перезапустите Nginx:

nginx -t
systemctl reload nginx

SSL-сертификат выпускается через Certbot стандартным образом (подробный разбор — в статье про Let's Encrypt SSL на VPS):

apt install -y certbot python3-certbot-nginx
certbot --nginx -d shop.example.com

После выпуска сертификата обновите APP_URL в .env на https:// и очистите кэш конфигурации:

php artisan config:clear
php artisan cache:clear

Очереди, кэш и cron — без этого магазин будет тормозить

Bagisto по умолчанию отправляет письма, обрабатывает импорт/экспорт и часть событий каталога через очереди Laravel. Если оставить драйвер очереди sync, тяжёлые операции (массовый импорт товаров, отправка уведомлений) будут блокировать запрос пользователя — магазин будет ощутимо подвисать на таких действиях.

Переключите очередь и кэш на Redis в .env:

CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

Запустите воркер очереди через Supervisor, чтобы он держался постоянно и перезапускался при падении:

; /etc/supervisor/conf.d/bagisto-worker.conf
[program:bagisto-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/bagisto/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
numprocs=2
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/bagisto-worker.log
supervisorctl reread
supervisorctl update
supervisorctl start bagisto-worker:*

Планировщик Laravel отвечает за отложенные задачи (очистка старых токенов, плановые уведомления). Он должен запускаться каждую минуту через системный cron — общий разбор настройки cron на VPS есть в статье про cron-задачи на сервере:

crontab -e -u www-data
* * * * * cd /var/www/bagisto && php artisan schedule:run >> /dev/null 2>&1

Для боевого режима также стоит закэшировать конфигурацию и роуты Laravel — это заметно ускоряет холодный старт запроса:

php artisan config:cache
php artisan route:cache
php artisan view:cache

Важный нюанс: после любого изменения .env нужно сначала выполнить php artisan config:clear, иначе Laravel продолжит читать закэшированные старые значения — частая причина «настройка не применилась» на проде.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Нужен ли Elasticsearch для Bagisto?

Не обязательно — базовый поиск работает через MySQL. Elasticsearch имеет смысл подключать при каталоге от нескольких тысяч товаров, когда поиск по MySQL-индексам начинает заметно тормозить; настройка похожа на любую другую Laravel-интеграцию с Elasticsearch.

Какая версия PHP нужна Bagisto в 2026 году?

Актуальные релизы ориентируются на PHP 8.2–8.3. Перед установкой конкретной версии Bagisto стоит свериться с composer.json в репозитории — требования по минорным версиям иногда меняются между релизами.

Можно ли обойтись без Redis?

Технически да — Laravel по умолчанию может работать с файловым кэшем и sync-очередью. Но на боевом магазине с реальными заказами это быстро аукнется тормозами при массовых операциях, поэтому Redis лучше ставить сразу.

Как обновить Bagisto до новой версии?

Через Composer: composer update bagisto/bagisto с последующим php artisan migrate и пересборкой фронтенда (npm run build). Перед обновлением на проде обязательно снимите бэкап базы и файлов.

Почему после установки не грузятся стили и картинки админки?

Чаще всего забыли выполнить php artisan storage:link или npm run build, либо у Nginx неверно настроен root на каталог public/. Проверьте оба пункта по очереди.

Bagisto подходит для мультивендорного маркетплейса?

Да, через официальный модуль Marketplace (платный или доступный в расширенных сборках) — базовая архитектура мультиканальности заложена в ядро с самого начала.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →