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

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. Установка предложит экраны конфигурации и выбор способа аутентификации.



Совет: если планируете подключаться из приложений, проверьте, что выбранный метод аутентификации совместим с вашими библиотеками.
Шаг 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. Установщик проверит системные требования.


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

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

Для безопасности удалите установщик:
$ sudo rm -rf /var/www/html/abantecart/install
Войдите в панель управления и завершите первоначальную настройку магазина.



Безопасность и жёсткая настройка
Важно: безопасность — непрерывный процесс. Минимальный набор действий после установки:
- Удалить/переименовать каталог установщика (мы уже удалили /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
Обновления приложения выполняйте в отдельной тестовой среде. Для обновления:
- Создайте резервную копию БД и файлов.
- Тестируйте обновление на staging сервере.
- Обновите файлы, примените миграции и проверьте логи.
Отладка и типичные проблемы
- Ошибка 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
- Проблемы с подключением к MySQL
- Проверьте, что MySQL слушает локальные соединения.
- Убедитесь, что пользователь и пароль верны.
- Проверьте метод аутентификации; при использовании auth_socket или caching_sha2_password могут потребоваться настройки клиента.
- Certbot не может получить сертификат
- Убедитесь, что порт 80 открыт и направлен на сервер.
- Если Nginx уже использует 80, используйте certbot –webroot с указанным -w или временно остановите Nginx.
- Права доступа блокируют запись
- Проверьте владельца и права каталогов, требующих записи.
- Избегайте назначения 777 — это небезопасно.
- Проблемы с загрузкой изображений или маршрутизацией
- Проверьте правила 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.
Методология развёртывания (мини-метод)
- Подготовка: резервные копии, пользователь sudo, firewall.
- Установка и базовая конфигурация сервисов (PHP, MySQL, Nginx).
- Установка приложения и базовая проверка через локальный доступ.
- Настройка SSL и безопасность.
- Стресс- и функциональное тестирование в staging.
- Перевод в 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 или управляемый хостинг]Тестовые случаи
- Доступ по HTTPS открыт и сертификат валиден.
- Панель администратора отвечает, можно создать товар.
- Оформление заказа до стадии оплаты проходит без ошибок.
- Демонстрационные данные (если установлены) отображаются корректно.
- Файлы логов не содержат ошибок уровня error или critical.
Заключение
Вы настроили AbanteCart на Debian 11: от подготовки сервера до финального запуска через веб-интерфейс. Следующие шаги — настроить платежи, заполнить каталог товаров, протестировать рабочие процессы и обеспечить регулярное резервное копирование и мониторинг.
Если у вас возникли вопросы по конкретным шагам — опишите окружение и ошибки, и вы получите целевые рекомендации.
Дополнительно: сохраняйте конфигурационные файлы и секреты в зашифрованном хранилище (Vault, gpg) и обновляйте зависимости по расписанию.
Похожие материалы
Настройка пересылки SMS на Mac и iPad
Fast Laughs в Netflix — как пользоваться
Как сделать фотоколлаж на компьютере
Отключить Google Password Manager в Chrome
Как работает swappiness в Linux — мифы и рекомендации