Гид по технологиям

Установка AbanteCart на Debian 11 — пошаговое руководство

9 min read Электронная коммерция Обновлено 27 Nov 2025
AbanteCart на Debian 11 — установка и настройка
AbanteCart на Debian 11 — установка и настройка

TL;DR

AbanteCart — свободное PHP-приложение для интернет-магазина. В руководстве описаны подготовка сервера Debian 11, установка PHP 8.0, MySQL, Nginx, получение SSL через Let’s Encrypt и финальная настройка AbanteCart. Следуйте шагам по порядку, делайте резервные копии и проверяйте права доступа.

Важно: перед началом создайте снапшоты или резервные копии и убедитесь, что у вас есть доступ по SSH с пользователем с sudo.


Схема развёртывания AbanteCart на сервере Debian 11

AbanteCart — это бесплатное и открытое приложение для электронной коммерции с богатым набором функций. Оно написано на PHP и использует современные технологии: HTML5, Bootstrap, MVC и другие. Одна установка может обслуживать несколько магазинов. Поддерживаются цифровые и физические товары, интеграция с платежными шлюзами и валютами, мультиязычность, купоны, балансы магазина и панель клиента. В AbanteCart можно настроить email-маркетинг и баннеры для вовлечения пользователей. Приложение оптимизировано для SEO, поддерживает дружелюбные URL, аналитические платформы и плагины.

В этом руководстве вы шаг за шагом установите AbanteCart на сервер с Debian 11.

Предварительные требования

  • Сервер под управлением Debian 11.
  • Неразовый пользователь с правами sudo.
  • Обновлённая система. Выполните:
$ sudo apt update && sudo apt upgrade
  • Набор необходимых пакетов:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y

Некоторые из перечисленных пакетов могут уже быть установлены.


Шаг 1 — Настройка брандмауэра

Debian поставляется с ufw (Uncomplicated Firewall). Сначала проверьте статус:

$ sudo ufw status

Ожидаемый ответ:

Status: inactive

Разрешите доступ по SSH, чтобы не потерять подключение после включения брандмауэра:

$ sudo ufw allow OpenSSH

Разрешите HTTP и HTTPS:

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

Включите ufw:

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Проверьте статус снова:

$ sudo ufw status

Ожидаемый вывод содержит правила для OpenSSH, 80/tcp и 443/tcp.

Примечание: если вы используете нестандартный SSH-порт, разрешите его вместо OpenSSH.


Шаг 2 — Установка PHP

AbanteCart поддерживает PHP 8.0. Для установки используем репозиторий Ondřej Surý.

Добавьте репозиторий:

$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

Добавьте GPG-ключ:

$ wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

Обновите индексы и установите PHP 8.0 и расширения:

$ sudo apt update
$ sudo apt install php8.0-cli php8.0-fpm php8.0-mysql php8.0-gd php8.0-common php8.0-curl php8.0-xml php8.0-mbstring

Важно: удостоверитесь, что версия PHP совпадает с требованиями текущей версии AbanteCart.


Шаг 3 — Установка MySQL

Установим MySQL 8.0 из официального репозитория.

Из-за бага в Debian необходимо сначала запустить gpg отдельно:

$ sudo gpg

Нажмите Ctrl+C чтобы выйти. Затем импортируйте ключ и сохраните в /usr/share/keyrings:

$ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/mysql8.0-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --brecv-keys 3A79BD29

Добавьте репозиторий MySQL:

$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mysql8.0-archive-keyring.gpg] http://repo.mysql.com/apt/debian/ `lsb_release -cs` mysql-8.0" \
    | sudo tee /etc/apt/sources.list.d/mysql-8.list

Обновите и установите MySQL:

$ sudo apt update
$ sudo apt install mysql-server

Во время установки задайте надёжный пароль для root. Установка предложит экраны конфигурации и выбор способа аутентификации.

Установка пароля root для MySQL

Информация об аутентификации MySQL

Выбор метода аутентификации MySQL

Совет: если планируете подключаться из приложений, проверьте, что выбранный метод аутентификации совместим с вашими библиотеками.


Шаг 4 — Установка Nginx

Debian может поставлять старую версию. Для актуальной версии подключим официальный репозиторий Nginx.

Импорт ключа подписи:

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
     | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий стабильной ветки Nginx:

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
    http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Установите Nginx:

$ sudo apt update
$ sudo apt install nginx

Проверьте версию (используйте sudo при выполнении команд Nginx):

$ sudo nginx -v
nginx version: nginx/1.20.2

Включите автозапуск сервиса:

$ sudo systemctl enable nginx

Примечание: в некоторых окружениях предпочтительнее оставить Apache и настроить его как бэкенд. Здесь мы ориентируемся на Nginx.


Шаг 5 — Настройка MySQL для AbanteCart

Укрепите инсталляцию MySQL:

$ sudo mysql_secure_installation

Следуйте подсказкам. Для проверки силы пароля можно включить Validate Password Plugin и выбрать уровень STRONG (2).

Пример диалога:

VALIDATE PASSWORD COMPONENT can be used to test passwords
... Press y|Y for Yes, any other key for No: Y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

При подсказках, кроме смены root-пароля (если не требуется), отвечайте Y для удаления анонимных пользователей, удаления тестовой базы и запрета удалённого логина root.

Затем войдите в MySQL и создайте пользователя и базу для AbanteCart:

$ mysql -u root -p
mysql> CREATE USER 'abcart'@'localhost' IDENTIFIED BY 'Your_password2';
mysql> CREATE DATABASE abantecart;
mysql> GRANT ALL PRIVILEGES ON abantecart.* TO 'abcart'@'localhost';
mysql> exit

Важно: используйте надёжный пароль, соответствующий выбранной политике валидации. Запишите данные подключения в безопасном месте.


Шаг 6 — Установка AbanteCart

Скачайте последнюю версию с GitHub и распакуйте её:

$ wget https://github.com/abantecart/abantecart-src/archive/master.zip
$ unzip master.zip

Создайте каталог веб-рута и скопируйте публичные файлы:

$ sudo mkdir /var/www/html/abantecart -p
$ sudo cp -r abantecart-src-master/public_html /var/www/html/abantecart/

Настройте права доступа. В примере мы используем пользователя nginx для PHP-FPM:

$ sudo chown -R nginx:nginx /var/www/html/abantecart

На этом пока что базовая часть установки завершена. Дальше настроим SSL и Nginx.


Шаг 7 — Установка SSL через Let’s Encrypt

Для получения сертификата установим Certbot через snapd.

Установите snapd и обновите core:

$ sudo apt install snapd
$ sudo snap install core && sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте версию certbot:

$ certbot --version
certbot 1.22.0

Получите сертификат (замените email и домен на свои):

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d abantecart.example.com

Сертификаты будут в /etc/letsencrypt/live/abantecart.example.com.

Создайте Diffie-Hellman параметры для повышения безопасности:

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Создайте webroot для автоматического обновления сертификатов:

$ sudo mkdir -p /var/lib/letsencrypt

Добавьте ежедневную задачу для автообновления сертификатов. Создайте файл /etc/cron.daily/certbot-renew и поместите в него:

#!/bin/sh
certbot renew --cert-name abantecart.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Сделайте его исполняемым:

$ sudo chmod +x /etc/cron.daily/certbot-renew

Проверка и отладка сертификатов:

  • Если certbot не может захватить порт 80, временно остановите Nginx: sudo systemctl stop nginx.
  • Для автоматического обновления убедитесь, что webroot доступен и файлы challenge создаются в /var/lib/letsencrypt.

Шаг 8 — Настройка PHP-FPM и Nginx

Настройка PHP-FPM

Отредактируйте пул www для PHP-FPM, чтобы процессы запускались от пользователя nginx:

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

В файле замените строки user/group и listen.owner/listen.group на nginx:

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx

Отключите opcache (рекомендуется для установки, затем можно включить при проверке совместимости):

$ sudo nano /etc/php/8.0/fpm/conf.d/10-opcache.ini

Добавьте:

opcache.enable=0

Перезапустите PHP-FPM:

$ sudo systemctl restart php8.0-fpm

Настройка Nginx

Создайте конфигурацию сайта:

$ sudo nano /etc/nginx/conf.d/abantecart.conf

Вставьте следующий блок (замените abantecart.example.com на ваш домен):

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  abantecart.example.com;

    access_log  /var/log/nginx/abantecart.access.log;
    error_log   /var/log/nginx/abantecart.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/abantecart.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/abantecart.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/abantecart.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;
    
    root /var/www/html/abantecart;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    # Pass PHP Scripts To FastCGI Server
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Depends On The PHP Version
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
        try_files $uri =404;
    }
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    
    location ~* \\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
        deny all;
    }
    
    location ~ /\\. {
        deny all;
        access_log off;
        log_not_found off;
    }
    
    ### Retina images handler. Check cookie and looking for file with @2x at the end of name
    location ~* ^(.*)\\.(jpg|jpeg|png|gif|webp)$ {
        set $hidpi_uri $1@2x.$2;
        if ($http_cookie !~ 'HTTP_IS_RETINA=1') {
          break;
        }
        try_files $hidpi_uri $uri =404;
    }

    location ~*  \\.(jpg|jpeg|png|gif|css|js|ico|webp)$ {
        expires max;
        log_not_found off;
    }
    
    location ~ /(system/logs|resources/download) {
      deny all;
      return 403;
    }
    
    location /admin/ {
        location ~ .*\.(php)?$ {
          deny all;
          return 403;
        }
    }
    
    #rewrite for images for retina-displays
    location ~ / {
        if (!-e $request_filename){
            rewrite ^/(.*)\?*$ /index.php?_route_=$1 last;
        }
    }
}
# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  abantecart.example.com;
    return 301   https://$host$request_uri;
}

Сохраните файл и добавьте строку server_names_hash_bucket_size в /etc/nginx/nginx.conf перед include:

server_names_hash_bucket_size  64;

Проверьте синтаксис:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Запустите Nginx:

$ sudo systemctl start nginx

Важно: проверьте логи при ошибках: /var/log/nginx/abantecart.error.log и системные журналы для php-fpm.


Шаг 9 — Завершение установки через веб-интерфейс

Откройте в браузере:

https://abantecart.example.com

Вы увидите экран лицензии. Отметьте согласие и нажмите Continue. Установщик проверит системные требования.

Экран лицензии AbanteCart

Проверка системных требований AbanteCart

Если проверки успешны, введите учётные данные базы данных и создайте администратора. При желании оставьте галочку Demo data для установки демо-данных.

Конфигурация базы данных AbanteCart

Нажмите Continue. Установщик завершит настройку и покажет экран успешной установки.

Завершение установки AbanteCart

Для безопасности удалите установщик:

$ sudo rm -rf /var/www/html/abantecart/install

Войдите в панель управления и завершите первоначальную настройку магазина.

Панель управления AbanteCart

Мастер настройки магазина AbanteCart

Панель управления AbanteCart


Безопасность и жёсткая настройка

Важно: безопасность — непрерывный процесс. Минимальный набор действий после установки:

  • Удалить/переименовать каталог установщика (мы уже удалили /install).
  • Включить обновления безопасности для Debian: sudo unattended-upgrades.
  • Ограничить доступ к панели администратора по IP (через Nginx или VPN).
  • Ограничить права на файлы, разрешить запись только для необходимых каталогов.
  • Отключить доступ по root через SSH и использовать ключи.
  • Установить fail2ban для защиты от брутфорса.

Пример прав для веб-каталога:

$ sudo find /var/www/html/abantecart -type d -exec chmod 755 {} \;
$ sudo find /var/www/html/abantecart -type f -exec chmod 644 {} \;
# Каталоги, требующие записи (пример)
$ sudo chown -R nginx:nginx /var/www/html/abantecart/system /var/www/html/abantecart/resources

Совет: давайте права только тем каталогам и файлам, которые требуют записи. Излишняя открытость файловой системы — распространённая уязвимость.


Производительность и тюнинг

Короткие рекомендации для увеличения скорости:

  • PHP-FPM: настройте pm = dynamic/ondemand и опытные параметры pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers в зависимости от ОЗУ.
  • MySQL: увеличьте innodb_buffer_pool_size до 50–75% доступной памяти для выделенного сервера MySQL.
  • Включите кеширование на уровне приложения или используйте внешний кеш (Redis, Memcached) при поддержке AbanteCart.
  • Включите gzip и HTTP/2 в Nginx.
  • Используйте CDN для статических ресурсов.

Пример базовой настройки gzip в /etc/nginx/nginx.conf:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Замечание: после внесения изменений в конфигурации перезапустите сервисы и проверьте логи.


Резервное копирование и обновления

Перед обновлением AbanteCart всегда выполняйте резервное копирование:

  • Полная дамп БД: mysqldump –single-transaction –quick –lock-tables=false -u root -p abantecart > abantecart_$(date +%F).sql
  • Снимок файлов: tar -czf abantecartfiles$(date +%F).tar.gz /var/www/html/abantecart

Обновления приложения выполняйте в отдельной тестовой среде. Для обновления:

  1. Создайте резервную копию БД и файлов.
  2. Тестируйте обновление на staging сервере.
  3. Обновите файлы, примените миграции и проверьте логи.

Отладка и типичные проблемы

  1. Ошибка 502 Bad Gateway после настройки PHP-FPM
  • Проверьте, что сокет /run/php/php8.0-fpm.sock существует и доступен.
  • Проверьте статус сервиса: sudo systemctl status php8.0-fpm
  • Посмотрите логи nginx и php-fpm: /var/log/nginx/*.log и /var/log/php8.0-fpm.log
  1. Проблемы с подключением к MySQL
  • Проверьте, что MySQL слушает локальные соединения.
  • Убедитесь, что пользователь и пароль верны.
  • Проверьте метод аутентификации; при использовании auth_socket или caching_sha2_password могут потребоваться настройки клиента.
  1. Certbot не может получить сертификат
  • Убедитесь, что порт 80 открыт и направлен на сервер.
  • Если Nginx уже использует 80, используйте certbot –webroot с указанным -w или временно остановите Nginx.
  1. Права доступа блокируют запись
  • Проверьте владельца и права каталогов, требующих записи.
  • Избегайте назначения 777 — это небезопасно.
  1. Проблемы с загрузкой изображений или маршрутизацией
  • Проверьте правила try_files и rewrite в конфигурации Nginx.
  • Убедитесь, что модуль изображений и обработчики установлены и права установлены корректно.

Когда этот вариант не подходит

  • Если вам нужен SaaS-магазин без поддержки серверного администрирования, выбирайте облачные решения.
  • Если команда предпочитает Apache, настройка будет отличаться (VirtualHost, mod_rewrite и пр.).
  • Для многокластера с балансировщиком нагрузки может потребоваться централизованное хранилище для сессий и файлов (NFS, S3).

Альтернативные подходы

  • Использовать Docker-контейнеры для каждого компонента (Nginx, PHP-FPM, MySQL). Это упрощает переносимость и откат.
  • Поставить MariaDB вместо MySQL. MariaDB совместима во многих случаях, но проверьте совместимость с AbanteCart.
  • Запускать AbanteCart на Apache + PHP-FPM, если нужны специфические модули Apache.

Методология развёртывания (мини-метод)

  1. Подготовка: резервные копии, пользователь sudo, firewall.
  2. Установка и базовая конфигурация сервисов (PHP, MySQL, Nginx).
  3. Установка приложения и базовая проверка через локальный доступ.
  4. Настройка SSL и безопасность.
  5. Стресс- и функциональное тестирование в staging.
  6. Перевод в production и мониторинг.

Ролевые чек-листы

Системный администратор:

  • Настроить обновления и брандмауэр.
  • Установить PHP, MySQL, Nginx.
  • Настроить SSL и автообновление Certbot.
  • Настроить резервное копирование и мониторинг.

Разработчик/интегратор:

  • Проверить зависимости PHP и расширения.
  • Настроить права на файлы и каталоги.
  • Протестировать точки интеграции платежных шлюзов и вебхуки.

Владелец магазина:

  • Проверить работоспособность витрины и панели администратора.
  • Настроить методы оплаты и доставки.
  • Провести тестовый заказ и оплату.

Критерии приёмки

  • Домен корректно открывается по HTTPS без предупреждений.
  • Вход в панель администратора успешен и доступен.
  • Создание и оформление тестового заказа прошло без ошибок.
  • Логи веб-сервера и PHP не содержат критических ошибок.
  • Выполнен тест работоспособности платежного шлюза в sandbox.

Факт-бокс

  • Операционная система: Debian 11 (Bullseye)
  • Рекомендуемая версия PHP: 8.0
  • Примерная версия Nginx, использованная в примере: 1.20.2
  • Certbot: 1.22.0
  • База данных: MySQL 8.0 (официальный репозиторий)

Пример диаграммы принятия решения (Mermaid)

flowchart TD
  A[Новая установка] --> B{Есть опыт с Docker?}
  B -- Да --> C[Развернуть контейнеры: nginx, php-fpm, mysql]
  B -- Нет --> D{Нужен быстрый запуск?}
  D -- Да --> E[Использовать VPS с Debian и следовать инструкциям]
  D -- Нет --> F[Рассмотреть PaaS или управляемый хостинг]

Тестовые случаи

  1. Доступ по HTTPS открыт и сертификат валиден.
  2. Панель администратора отвечает, можно создать товар.
  3. Оформление заказа до стадии оплаты проходит без ошибок.
  4. Демонстрационные данные (если установлены) отображаются корректно.
  5. Файлы логов не содержат ошибок уровня error или critical.

Заключение

Вы настроили AbanteCart на Debian 11: от подготовки сервера до финального запуска через веб-интерфейс. Следующие шаги — настроить платежи, заполнить каталог товаров, протестировать рабочие процессы и обеспечить регулярное резервное копирование и мониторинг.

Если у вас возникли вопросы по конкретным шагам — опишите окружение и ошибки, и вы получите целевые рекомендации.


Дополнительно: сохраняйте конфигурационные файлы и секреты в зашифрованном хранилище (Vault, gpg) и обновляйте зависимости по расписанию.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка пересылки SMS на Mac и iPad
Инструкции

Настройка пересылки SMS на Mac и iPad

Fast Laughs в Netflix — как пользоваться
Streaming

Fast Laughs в Netflix — как пользоваться

Как сделать фотоколлаж на компьютере
Фото

Как сделать фотоколлаж на компьютере

Отключить Google Password Manager в Chrome
Security

Отключить Google Password Manager в Chrome

Как работает swappiness в Linux — мифы и рекомендации
Linux

Как работает swappiness в Linux — мифы и рекомендации

Как безопасно смотреть солнечное затмение
Наука

Как безопасно смотреть солнечное затмение