Установка Bagisto на Debian 11 (PHP-FPM, Nginx, MariaDB)
О чём эта инструкция
Эта статья объясняет, как развернуть Bagisto — open-source eCommerce на базе Laravel и Vue.js — на Debian 11 (Bullseye) с использованием PHP-FPM, Nginx и MariaDB. Подробно описаны требования, команды, настройки конфигурационных файлов, часто возникающие ошибки и практические советы для продуктивного деплоя.
Важно: инструкция предполагает, что вы работаете с сервером под управлением Debian 11, имеете пользователя с sudo-привилегиями и домен, указывающий на IP сервера.
Ключевые понятия в одну строку
- Bagisto — eCommerce-платформа на Laravel; требует PHP, веб-сервера и СУБД.
- PHP-FPM — менеджер процессов PHP для Nginx.
- Composer — менеджер зависимостей PHP.
- MariaDB — форк MySQL, СУБД для хранения данных магазина.
Предварительные условия
- Сервер с Debian 11 Bullseye (свежая актуализация репозиториев).
- Пользователь с root/sudo правами.
- Домен, указывающий на IP сервера (A-запись).
- Резервная копия важных данных перед изменением конфигурации.
1. Установка LEMP-стека
Bagisto требует PHP 7.4+ и MariaDB 10.2.17+. Пример команд для установки необходимых пакетов и расширений PHP (сохраняйте эти блоки как есть):
sudo apt updatesudo apt install nginx-full mariadb-server php-fpm php-cli php-common php-zip php-mysql php-gd php-intl php-curl php-imap php-mbstring php-xml php-json libpcre3 git unzip -yПосле установки отредактируйте оба php.ini (FPM и CLI). В Debian 11 путь к PHP 7.4 может отличаться, проверьте установленную версию и скорректируйте путь при необходимости.
sudo nano /etc/php/7.4/fpm/php.ini
sudo nano /etc/php/7.4/cli/php.iniИзмените опции под ваш сервер:
memory_limit = 512M
max_execution_time = 360
date.timezone = Europe/MoscowПерезапустите сервис PHP-FPM:
sudo systemctl restart php7.4-fpmПримечание: если у вас другая версия PHP (8.x), замените пути и сокет (php8.0-fpm.sock и т.д.).
Important: Используйте актуальную версию PHP в репозиториях Debian или из официальных PPA, если вам нужна версия выше 7.4.
2. Базовая защита MariaDB
Запустите вспомогательную утилиту для безопасной настройки MariaDB:
mysql_secure_installationОтветы в процессе (рекомендуемые):
- Настройка аутентификации root: нажмите ENTER (или следуйте подсказкам).
- Переключение на unix_socket_authentication: Y
- Установка пароля root: Y и укажите сильный пароль.
- Удаление анонимных пользователей: Y
- Отключение удалённого входа root: Y
- Удаление тестовой базы: Y
- Перезагрузка привилегий: Y


Эти действия снижают риски и необходимы для продуктивного сервера.
3. Создание базы и пользователя для Bagisto
Войдите в консоль MariaDB под root и создайте БД и пользователя:
mysql -u root -pВнутри MariaDB выполните (подставьте надёжный пароль и название БД по вашему стандарту):
CREATE DATABASE bagisto;
CREATE USER bagistouser@localhost IDENTIFIED BY 'BagistoPassword';
GRANT ALL ON bagisto.* TO bagistouser@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Совет: используйте парольный менеджер и не оставляйте пароли в открытых скриптах.
4. Установка Composer
Composer нужен для установки зависимостей PHP-проекта.
Скачайте и проверьте инсталлятор (хеш может измениться — берите актуальный с getcomposer.org):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"Установите и переместите бинарник:
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composerПроверьте версию от имени www-data (так как Bagisto будет запускаться от этого пользователя):
sudo -u www-data composer --version
Если возникнут ошибки сети, проверьте доступ к getcomposer.org и настройки прокси/фаервола.
5. Установка Bagisto через Composer
Создайте директории для кеша и конфигурации Composer и назначьте владельца:
mkdir -p /var/www/{.cache,.config}
sudo chown -R www-data:www-data /var/www/{.cache,.config}Создайте рабочую директорию для проекта и назначьте владельца:
mkdir -p /var/www/project; sudo chown -R www-data:www-data /var/www/projectПерейдите в неё и установите Bagisto:
cd /var/www/project
sudo -u www-data composer create-project bagisto/bagisto
Перейдите в каталог проекта и отредактируйте файл .env:
cd /var/www/project/bagisto
sudo nano .envОбновите ключевые параметры:
APP_NAME=Bagisto
APP_ENV=production
APP_DEBUG=false
APP_URL=https://www.example.io
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bagisto
DB_USERNAME=bagistouser
DB_PASSWORD=BagistoPassword
DB_PREFIX=Сохраните файл и выполните инсталляцию Bagisto:
sudo -u www-data php artisan bagisto:installПодтвердите установку, набрав “yes” при запросах. Вы увидите уведомления о деплое в production и данные административной учётной записи.

После завершения убедитесь в правах на файлы:
sudo chown -R www-data:www-data /var/www/project/bagistoСовет: если ваш веб-директориум отличается (например /var/www/html/bagisto), используйте соответствующие пути в конфигурации Nginx и .env.
6. Настройка Nginx
Создайте серверный блок Nginx для вашего домена:
sudo nano /etc/nginx/sites-available/bagistoВставьте конфигурацию, заменив example.io на ваш домен и пути к SSL-сертификатам:
server {
listen 80;
server_name example.io;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.io;
root /var/www/bagisto/public;
index index.php;
ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
client_max_body_size 100M;
autoindex off;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}Сохраните, активируйте и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/bagisto /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Если nginx -t показывает Syntax OK, перезапуск должен пройти без ошибок.
Замечание: путь root в конфигурации должен указывать на папку public внутри установленных файлов Bagisto. При рассинхронизации путей получите 404 или ошибку 403.
7. Проверка работы
Откройте браузер и перейдите по адресу вашего сайта:

Перейдите в админ-панель:
Авторизация по умолчанию: admin / admin123 (рекомендуется изменить сразу после входа).


Частые проблемы и способы их решения
- 502 Bad Gateway после перезапуска Nginx
- Проверьте статус php-fpm: sudo systemctl status php7.4-fpm.
- Убедитесь, что fastcgi_pass указывает на существующий сокет (php7.4-fpm.sock) или порт.
- Ошибки прав доступа (403)
- Убедитесь, что владелец документов www-data и что директории имеют права 755, а файлы 644.
- Примеры команд:
sudo chown -R www-data:www-data /var/www/project/bagisto
sudo find /var/www/project/bagisto -type f -exec chmod 644 {} \;
sudo find /var/www/project/bagisto -type d -exec chmod 755 {} \;- Ошибки миграций или при выполнении artisan
- Запускайте artisan от имени www-data: sudo -u www-data php artisan migrate
- Composer зависает или падает
- Проверьте сетевые правила и настройки proxy. Добавьте параметр –prefer-dist при create-project для ускорения.
Рекомендации по безопасности и производительности
- TLS: используйте Let’s Encrypt для бесплатных сертификатов и автоматического обновления с certbot.
- HTTP headers: добавьте Content-Security-Policy при необходимости.
- Rate limiting: настройте nginx limit_req для защиты от брутфорса.
- Backups: автоматизируйте дампы БД (mysqldump) и архивацию /var/www.
- Мониторинг: ставьте базовые SLI/SLO для времени ответа и доступности.
Пример быстрой настройки certbot (Debian):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.io -d www.example.io
sudo systemctl reload nginxSecurity hardening — чеклист:
- Отключить root SSH-login и использовать SSH-ключи.
- Регулярно обновлять систему: sudo apt update && sudo apt upgrade.
- Настроить ufw: разрешить 22/80/443 и включить firewall.
Пример правил UFW:
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enableАльтернативные подходы к развёртыванию
- Docker: контейнеризация Bagisto упрощает переносимость и управление зависимостями.
- Apache + mod_php: возможный вариант, но для производительности Nginx+PHP-FPM чаще предпочтительнее.
- Managed hosting: использовать VPS с преднастроенными LEMP-стеками.
План обновления (миграция/апгрейд)
- Создайте снапшот или полную резервную копию файлов и БД.
- Проверяйте совместимость PHP и зависимостей Bagisto с новой версией.
- Локально протестируйте обновление на staging.
- Примените обновление на production в окно обслуживания.
Роли и задачи — краткие чеклисты
Системный администратор:
- Установить и настроить LEMP.
- Настроить бэкапы и firewall.
- Настроить мониторинг и алерты.
Разработчик:
- Настроить окружение dev/staging.
- Управлять зависимостями с Composer.
- Писать и тестировать модули/темы для Bagisto.
Маркетолог / менеджер контента:
- Добавить продукты, категории, описания и изображения.
- Настроить валюты и локализации.
Тесты и критерии приёмки
- Сайт доступен по HTTPS и корневая страница возвращает 200.
- Страница /admin доступна, логин работает с заданными данными администратора.
- Добавление товара и просмотр карточки товара работают без ошибок.
- Миграции базы данных применяются успешно.
Короткий глоссарий
- Bagisto — платформа eCommerce на Laravel.
- PHP-FPM — FastCGI Process Manager для PHP.
- Composer — менеджер зависимостей PHP.
- .env — файл окружения Laravel.
Часто задаваемые вопросы
Как сменить пароль администратора?
В админ-панели перейдите в Users → Edit или выполните artisan команду для смены пароля.
Что делать при ошибке 500?
Проверьте логи Nginx и Laravel: /var/log/nginx/*.error.log и storage/logs/laravel.log. Убедитесь, что APP_DEBUG=false для production, но включите на время отладки.
Можно ли использовать другую СУБД?
Bagisto официально поддерживает MySQL/MariaDB. Использование других СУБД не гарантируется.
Заключение
Поздравляем — вы установили Bagisto на Debian 11 с PHP-FPM, Nginx и MariaDB. Следующие шаги: изменить пароль администратора, настроить SSL, добавить продукты и плагин оплаты, настроить резервное копирование и мониторинг.
Ключевые рекомендации:
- Не храните пароли в открытых скриптах; используйте менеджер паролей.
- Тестируйте обновления в staging перед production.
- Внедрите регулярные бэкапы и мониторинг.
Дополнительно: если вы хотите контейнеризовать Bagisto или использовать CI/CD, можно подготовить Dockerfile и docker-compose для изолированной среды разработки и автоматических деплоев.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента