PrestaShop — европейская платформа для электронной коммерции с открытым исходным кодом, на которой работает более 300 тысяч интернет-магазинов по всему миру. Начиналась как студенческий проект в парижской IT-школе в 2005 году, сегодня это полноценная система управления магазином с поддержкой 60 языков и тысячами готовых модулей.
В отличие от облачных решений вроде Shopify где вы арендуете платформу, PrestaShop устанавливается на собственный сервер. Полный контроль над данными, никаких комиссий с продаж, неограниченные возможности кастомизации. Но нужен VPS с правильной конфигурацией — об этом подробно в статье.
Почему PrestaShop выбирают для интернет-магазинов
PrestaShop занимает особое место среди платформ электронной коммерции. Не самая простая как WooCommerce, не такая тяжёлая как Magento. Золотая середина для серьёзных магазинов малого и среднего размера.
Основная аудитория — европейский рынок. Платформа разработана во Франции, сильнее всего представлена в Европе и странах СНГ. Для продаж в России, Украине, Казахстане PrestaShop отличный выбор — локализация на уровне, русскоязычное сообщество активное, модули для местных платёжных систем есть.
Функциональность из коробки впечатляет. Управление каталогом товаров с вариациями, система скидок и акций, мультиязычность, несколько валют, интеграция с десятками платёжных систем и служб доставки. Для небольшого магазина хватит стандартных возможностей, для крупного — добавите модули.
Производительность PrestaShop зависит от хостинга больше чем от самой платформы. На правильно настроенном VPS магазин с тысячами товаров работает быстро. На слабом shared-хостинге даже сотня товаров тормозит. VPS с NVMe-дисками вроде THE.Hosting даёт PrestaShop возможность раскрыться полностью.
Сообщество и экосистема огромные. Официальный маркетплейс Addons предлагает больше 5000 модулей и тем. Большинство платные ($50-300), но качественные. Бесплатные модули тоже есть, для базовых задач достаточно. Документация подробная, форумы активные, разработчиков PrestaShop найти несложно.
PrestaShop 9: что нового в последней версии
PrestaShop 9.0 вышла в июне 2025 года и принесла значительные улучшения. Миграция на Symfony 6.4 и PHP 8.4 даёт заметный прирост производительности и безопасности. Платформа стала быстрее обрабатывать запросы, использует меньше памяти.
Новая тема Hummingbird заточена под мобильные устройства. 70% покупок онлайн происходит со смартфонов — тема оптимизирована именно под это. Загрузка страниц быстрее, интерфейс адаптивный, checkout процесс упрощённый.
Admin API открывает возможности для интеграций. Раньше подключение внешних систем (CRM, ERP, складской учёт) требовало костылей. Теперь есть REST API для всех основных операций — создание заказов, управление товарами, клиенты, статистика.
Улучшенные SEO-инструменты помогают с продвижением. Управление URL стало гибче, канонические теги настраиваются правильно, редиректы работают без плагинов. Для магазинов где SEO критично это существенный плюс.
Механизм обновлений переработан. Раньше обновление PrestaShop с 1.6 на 1.7 превращалось в квест с потенциальной поломкой магазина. Теперь процесс безопаснее, откатиться можно быстрее, миграция данных надёжнее.
Системные требования для PrestaShop 9
PrestaShop требователен к ресурсам сервера. Минимальные требования для запуска есть, но для комфортной работы магазина нужно больше.
Операционная система:
- Ubuntu 22.04 или 24.04 LTS (рекомендуется)
- Debian 11 или 12
- AlmaLinux 9 или Rocky Linux 9
- CentOS Stream 9
Ubuntu 24.04 LTS оптимальный выбор — свежие пакеты, долгая поддержка до 2029 года, большое сообщество. На THE.Hosting VPS Ubuntu доступна из коробки при заказе сервера.
Веб-сервер:
- Apache 2.4+ с mod_rewrite
- Nginx 1.20+ (быстрее Apache)
- LiteSpeed (коммерческий, но быстрый)
Nginx рекомендуется для production. Обрабатывает статику быстрее Apache, использует меньше памяти, легче масштабируется. Для PrestaShop магазина с высокой посещаемостью Nginx критичен.
PHP:
- PHP 8.1, 8.2 или 8.3 (8.3 рекомендуется)
- Расширения: curl, gd, intl, mbstring, xml, zip, json, PDO MySQL
PHP 8.3 даёт прирост производительности 20-30% над PHP 7.4. PrestaShop 9 полностью совместима с PHP 8.3. Использование старых версий PHP замедляет магазин и создаёт дыры в безопасности.
База данных:
- MySQL 5.7+ (минимум)
- MySQL 8.0+ (рекомендуется)
- MariaDB 10.6+ (альтернатива MySQL)
MariaDB 10.11 — оптимальный выбор для PrestaShop. Производительность выше MySQL 8.0 на некоторых операциях, лицензия свободнее, совместимость полная. THE.Hosting VPS поставляется с MariaDB по умолчанию.
Аппаратные ресурсы:
Минимальная конфигурация (до 1000 товаров, 100 заказов/день):
- 2 ГБ RAM
- 2 CPU cores
- 20 ГБ SSD
Рекомендуемая конфигурация (до 10000 товаров, 500 заказов/день):
- 4 ГБ RAM
- 4 CPU cores
- 40 ГБ NVMe SSD
Для крупных магазинов (100000+ товаров, 2000+ заказов/день):
- 8+ ГБ RAM
- 6+ CPU cores
- 80+ ГБ NVMe SSD
NVMe-диски критичны для PrestaShop. База данных магазина активно читается и пишется при каждом заказе. Обычные SSD дают 500 МБ/с, NVMe — 3000+ МБ/с. Разница ощутима при высоких нагрузках.
Дополнительные инструменты:
- Git для управления версиями
- Composer для зависимостей PHP
- Node.js и npm для фронтенд разработки (опционально)
- Redis или Memcached для кэширования (критично для производительности)
Подготовка VPS THE.Hosting для PrestaShop
VPS THE.Hosting идеально подходит для PrestaShop магазинов. NVMe-диски дают скорость работы базы данных, IPv4 адрес включён (нужен для SSL), датацентры в Европе обеспечивают низкую задержку для покупателей из СНГ.
Выбор конфигурации
Для стартующего магазина (до 500 товаров, первые продажи) подойдёт:
- 2 vCPU
- 4 ГБ RAM
- 40 ГБ NVMe
- 1 IPv4
Стоимость около 500-700 руб/мес. Этого хватит на первые месяцы работы. Когда продажи пойдут — апгрейд до 4 ГБ RAM одним кликом в панели управления.
Для растущего бизнеса (1000-5000 товаров, стабильные продажи):
- 4 vCPU
- 8 ГБ RAM
- 80 ГБ NVMe
- 1 IPv4
Такая конфигурация выдержит 500-1000 заказов в день без проблем. Масштабирование вертикальное (больше ресурсов одному серверу) или горизонтальное (несколько серверов за load balancer).
Первоначальная настройка сервера
После заказа VPS получаете root-доступ по SSH. IP адрес и пароль приходят на email. Подключаемся:
ssh root@ваш-IP-адрес
Первым делом обновляем систему:
apt update && apt upgrade -y
Ubuntu установит последние патчи безопасности и обновления пакетов. Процесс занимает 5-10 минут в зависимости от количества обновлений.
Создаём отдельного пользователя (работать под root небезопасно):
adduser prestashop
usermod -aG sudo prestashop
Пароль запросит интерактивно. Используйте сложный — сервер доступен из интернета, bruteforce атаки обычное дело.
Настраиваем базовый firewall:
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Разрешаем SSH (22 порт), HTTP (80) и HTTPS (443). Всё остальное блокируется. Fail2ban для защиты от bruteforce установим позже.
Настраиваем часовой пояс (важно для корректной работы заказов):
timedatectl set-timezone Europe/Moscow
Замените Europe/Moscow на ваш часовой пояс. Список доступных зон: timedatectl list-timezones.
Установка LEMP стека для PrestaShop
LEMP — Linux, Nginx, MySQL (MariaDB), PHP. Классический стек для PHP-приложений. Собираем его с нуля для полного контроля над конфигурацией.
Установка Nginx
apt install nginx -y
systemctl start nginx
systemctl enable nginx
Проверяем что Nginx запустился:
systemctl status nginx
Откройте браузер, введите IP вашего VPS. Увидите стандартную страницу Nginx "Welcome to nginx!" — значит веб-сервер работает.
Установка MariaDB
apt install mariadb-server mariadb-client -y
systemctl start mariadb
systemctl enable mariadb
Запускаем скрипт начальной настройки безопасности:
mysql_secure_installation
Скрипт задаст вопросы:
- Enter current password for root: нажмите Enter (пароля ещё нет)
- Switch to unix_socket authentication: n (нет)
- Change the root password: y (да), введите сложный пароль
- Remove anonymous users: y (да)
- Disallow root login remotely: y (да)
- Remove test database: y (да)
- Reload privilege tables: y (да)
Создаём базу данных для PrestaShop:
mysql -u root -p
В консоли MySQL:
CREATE DATABASE prestashop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'prestashop_user'@'localhost' IDENTIFIED BY 'сильный_пароль_здесь';
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Замените сильный_пароль_здесь на реальный пароль. Сохраните учётные данные — понадобятся при установке PrestaShop.
Установка PHP 8.3 и расширений
Ubuntu 24.04 поставляется с PHP 8.3 в репозиториях:
apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-intl \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap \
php8.3-readline php8.3-opcache -y
Проверяем версию PHP:
php -v
Должно показать PHP 8.3.x.
Настраиваем PHP для PrestaShop. Редактируем /etc/php/8.3/fpm/php.ini:
nano /etc/php/8.3/fpm/php.ini
Находим и меняем параметры:
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 10000
date.timezone = Europe/Moscow
Эти значения оптимальны для PrestaShop. memory_limit 512M нужен для импорта больших каталогов товаров. max_input_vars 10000 критичен — без этого админка PrestaShop не сохранит изменения на больших страницах.
Перезапускаем PHP-FPM:
systemctl restart php8.3-fpm
Настройка Nginx для PrestaShop
Создаём конфигурацию виртуального хоста. Файл /etc/nginx/sites-available/prestashop:
nano /etc/nginx/sites-available/prestashop
Вставляем конфигурацию:
server {
listen 80;
server_name ваш-домен.ru www.ваш-домен.ru;
root /var/www/prestashop;
index index.php;
access_log /var/log/nginx/prestashop_access.log;
error_log /var/log/nginx/prestashop_error.log;
# Защита от доступа к чувствительным файлам
location ~ /\. {
deny all;
}
location ~ ^/(app|bin|cache|classes|config|controllers|docs|localization|override|src|tests|tools|translations|travis-scripts|vendor|var)/ {
deny all;
}
# PrestaShop rewrite rules
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP обработка
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
# Кэширование статики
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html|woff|woff2|ttf|svg|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# Gzip сжатие
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/jаvascript application/json application/jаvascript application/xml+rss application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml;
}
Замените ваш-домен.ru на реальный домен. Если домена пока нет, используйте IP адрес сервера.
Активируем конфигурацию:
ln -s /etc/nginx/sites-available/prestashop /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx
Команда nginx -t проверяет синтаксис конфигурации. Если ошибок нет — перезагружаем Nginx.
Установка PrestaShop 9
Скачиваем последнюю версию PrestaShop с официального сайта. Создаём директорию для магазина:
mkdir -p /var/www/prestashop
cd /var/www/prestashop
Загружаем PrestaShop:
wget https://github.com/PrestaShop/PrestaShop/releases/download/9.0.0/prestashop_9.0.0.zip
Если ссылка не работает (версия обновилась), проверьте актуальный релиз на GitHub: https://github.com/PrestaShop/PrestaShop/releases
Устанавливаем unzip если его нет:
apt install unzip -y
Распаковываем архив:
unzip prestashop_9.0.0.zip
rm prestashop_9.0.0.zip
PrestaShop распакуется в текущую директорию. Внутри будет установочный файл и структура папок.
Устанавливаем правильные права доступа:
chown -R www-dаta:www-data /var/www/prestashop
find /var/www/prestashop -type d -exec chmod 755 {} \;
find /var/www/prestashop -type f -exec chmod 644 {} \;
Пользователь www-data — это пользователь под которым работает Nginx и PHP-FPM. Без правильных прав PrestaShop не сможет писать файлы (кэш, загруженные изображения, модули).
Запуск веб-установщика
Откройте браузер и перейдите по адресу http://ваш-домен.ru (или http://ваш-IP). Загрузится установщик PrestaShop.
Шаг 1: Выбор языка
Установщик предложит выбрать язык. Выбирайте русский если планируете магазин для русскоязычной аудитории. Язык установщика не влияет на языки магазина — их настроите позже.
Шаг 2: Лицензия
PrestaShop использует лицензию Open Software License (OSL). Прочитайте и примите условия. Без этого установка не продолжится.
Шаг 3: Проверка совместимости
Установщик проверит что сервер соответствует требованиям:
- PHP версия 8.1+
- Нужные расширения PHP установлены
- Права на запись в директории
Если что-то красное — значит проблема. Зелёные галочки — всё хорошо. При правильной настройке LEMP стека все проверки пройдут.
Шаг 4: Информация о магазине
Заполняете базовые данные:
- Название магазина: как будет называться ваш магазин
- Основная деятельность: выбираете категорию из списка
- Страна: страна где расположен бизнес
- Имя: ваше имя
- Фамилия: фамилия
- Email: email администратора (для входа)
- Пароль: сложный пароль для админки
PrestaShop требует пароль минимум 8 символов, с буквами в разном регистре, цифрами и спецсимволами. Не используйте простые пароли — админка доступна из интернета.
Шаг 5: Настройка базы данных
Вводите учётные данные созданной ранее базы:
- Адрес сервера базы данных: localhost
- Имя базы данных: prestashop
- Логин: prestashop_user
- Пароль: пароль который задали при создании пользователя
Нажимаете "Проверить соединение с базой данных". Если данные правильные — появится зелёная галочка. Если ошибка — проверьте учётные данные, убедитесь что MariaDB запущена (systemctl status mariadb).
Опция "Удалить существующие таблицы": оставьте отключённой если база пустая. Включайте только при переустановке PrestaShop в ту же базу.
Префикс таблиц: по умолчанию ps_. Можно оставить или изменить на уникальный. Префикс добавляется ко всем таблицам в базе (ps_product, ps_customer и т.д.). Полезно если в одной базе несколько PrestaShop магазинов (не рекомендуется, но технически возможно).
Тестовые данные: установщик предложит загрузить демо-товары, категории, пользователей. Для ознакомления с интерфейсом полезно. Для production магазина отключите — удалять демо-данные дольше чем добавлять свои.
Шаг 6: Процесс установки
PrestaShop создаст структуру базы данных, скопирует файлы, настроит конфигурацию. Процесс занимает 2-5 минут. Прогресс-бар показывает текущий этап.
Не закрывайте вкладку браузера во время установки. Прерванная установка оставит базу данных в неконсистентном состоянии — придётся очищать и начинать заново.
Шаг 7: Завершение
После успешной установки увидите сообщение с двумя важными пунктами:
- Удалите папку install: критично для безопасности. Команда:
rm -rf /var/www/prestashop/install
Без удаления папки install любой может переустановить ваш магазин. PrestaShop не даст открыть админку пока install не удалена.
- Переименуйте папку admin: по умолчанию админка доступна по адресу
/admin. Злоумышленники знают это и пытаются взломать. Переименовываем:mv /var/www/prestashop/admin /var/www/prestashop/admin_уникальное_имя
Замените уникальное_имя на случайную строку. Примеры: admin_x7k2m9, admin_secret, backoffice_shop. Запомните новое имя — это будет адрес админки.
После этих действий магазин готов к работе. Витрина доступна по адресу http://ваш-домен.ru, админка — http://ваш-домен.ru/admin_уникальное_имя.
Первоначальная настройка PrestaShop
После установки магазин работает, но требует настройки для продаж. Проходимся по ключевым разделам админки.
Основные параметры магазина
Раздел Настройки магазина → Параметры.
Общие настройки:
- Включите SSL если планируете его устанавливать (об этом ниже)
- Установите правильный часовой пояс
- Выберите валюту по умолчанию
- Настройте единицы измерения (вес, расстояние)
Настройки заказов:
- Минимальная сумма заказа (если нужно)
- Включить гостевой checkout (покупка без регистрации)
- Условия использования (политика возврата)
- Статусы заказов (можно оставить стандартные или добавить свои)
Настройки клиентов:
- Обязательные поля при регистрации
- Можно ли создавать аккаунт b2b (для оптовиков)
- Политика приватности (требуется по GDPR)
Настройка языков и локализации
Раздел Международное → Локализация.
PrestaShop изначально поддерживает десятки языков. Для магазина в России установите русский:
- Перейдите в Языки
- Нажмите Добавить язык
- Выберите Русский из списка
- Импортируйте языковой пакет
После установки русского языка весь интерфейс (витрина и админка) переключится. Английский можно оставить для международных клиентов или удалить если не нужен.
Валюты:
Добавьте валюты которые принимаете. Для России обязательно рубль (RUB). Если продаёте в другие страны — добавьте доллар (USD), евро (EUR).
Курсы валют обновляются вручную или автоматически. Настройте автообновление если используете несколько валют — курсы меняются ежедневно.
Налоги:
Настройка налогов зависит от страны. Для России:
- Создайте налог НДС 20%
- Примените к товарам где НДС включён
- Укажите нужно ли показывать цены с НДС или без
PrestaShop автоматически рассчитает налоги при оформлении заказа.
Настройка способов оплаты
Раздел Модули → Менеджер модулей, категория Платёжные модули.
PrestaShop включает базовые методы оплаты:
- Банковский перевод: клиент переводит деньги напрямую на ваш счёт
- Оплата при получении: наложенный платёж
- Чек: редко используется в России
Для приёма банковских карт нужны сторонние модули. Популярные для России:
ЮKassa (Яндекс.Касса):
- Поддержка карт Visa, MasterCard, МИР
- Электронные кошельки (ЮMoney, Qiwi)
- Installement-платежи
- Комиссия 2.8-3.5% от суммы
Модуль бесплатный, скачивается с сайта ЮKassa. Установка: загружаете zip через админку PrestaShop, вводите Shop ID и Secret Key из личного кабинета ЮKassa.
Робокасса:
- Альтернатива ЮKassa
- Чуть выше комиссия (3.5-4%)
- Поддержка криптовалют
PayPal:
- Для международных продаж
- Комиссия 3.4% + $0.30 за транзакцию
- В России работает с ограничениями
Установка платёжных модулей стандартная: качаете zip, загружаете через админку, настраиваете API ключи.
Настройка доставки
Раздел Доставка → Способы доставки.
PrestaShop позволяет настроить несколько методов доставки с разными тарифами.
Курьерская доставка:
- Фиксированная стоимость
- Расчёт по весу товара
- Расчёт по сумме заказа (бесплатная доставка от 5000₽)
- Расчёт по региону
Самовывоз:
- Указываете адрес пункта выдачи
- Стоимость 0₽
- Покупатель получает уведомление когда заказ готов
Интеграция со службами доставки:
Для России популярны:
- СДЭК: модуль для расчёта стоимости и сроков доставки в реальном времени
- Boxberry: пункты выдачи по всей России
- Почта России: EMS и обычная почта
- DPD: для крупногабаритных грузов
Модули платные ($20-50), скачиваются с PrestaShop Addons или с сайтов служб доставки. Установка аналогична платёжным модулям — загружаете zip, вводите API ключи.
Установка SSL-сертификата для безопасности
HTTPS обязателен для интернет-магазинов. Браузеры показывают предупреждение на сайтах без SSL. Покупатели не вводят данные карты на незащищённом сайте. Поисковики понижают сайты без HTTPS в выдаче.
Let's Encrypt предоставляет бесплатные SSL-сертификаты с автоматическим продлением. Устанавливаем Certbot:
apt install certbot python3-certbot-nginx -y
Получаем сертификат для домена:
certbot --nginx -d ваш-домен.ru -d www.ваш-домен.ru
Certbot задаст вопросы:
- Email: для уведомлений об истечении сертификата
- Terms of Service: согласитесь с условиями
- Redirect HTTP to HTTPS: выберите 2 (да, перенаправлять)
Certbot автоматически настроит Nginx, получит сертификат, настроит авто-продление. Процесс занимает минуту.
После установки SSL редактируем конфигурацию PrestaShop. Файл /var/www/prestashop/app/config/parameters.php:
nano /var/www/prestashop/app/config/parameters.php
Находим строку:
'ps_ssl_enabled' => false,
Меняем на:
'ps_ssl_enabled' => true,
'ps_ssl_enabled_everywhere' => true,
Сохраняем файл. Теперь PrestaShop работает только через HTTPS.
Проверяем автоматическое продление сертификата:
certbot renew --dry-run
Если команда выполнилась без ошибок — продление настроено. Let's Encrypt продлевает сертификаты за 30 дней до истечения автоматически через systemd timer.
Оптимизация производительности PrestaShop
Из коробки PrestaShop работает, но медленно. Оптимизация критична для конверсии — каждая секунда загрузки страницы снижает продажи на 7%.
Включение встроенного кэша
Раздел Производительность в админке PrestaShop.
Smarty (кэш шаблонов):
- Установите "Перекомпилировать шаблоны если файлы были обновлены"
- Включите кэш Smarty
- Выберите "Файловая система" как метод кэша
CCC (Combine, Compress, Cache):
- Включите "Объединить, сжать и кэшировать CSS файлы"
- Включите "Объединить, сжать и кэшировать jаvascript файлы"
CCC объединяет десятки CSS/JS файлов в один, сжимает через gzip, кэширует в браузере. Количество HTTP запросов уменьшается с 50-100 до 5-10.
Оптимизация изображений:
- Включите "Использовать сжатие изображений на лету"
- Выберите формат WebP для современных браузеров
- Настройте качество JPEG (80-85% оптимально)
После включения CCC обязательно очистите кэш PrestaShop кнопкой "Очистить кэш" на той же странице.
Установка Redis для кэширования объектов
Redis кэширует запросы к базе данных в памяти. Вместо выполнения SQL запроса каждый раз PrestaShop берёт результат из Redis. Прирост производительности 50-300%.
Устанавливаем Redis:
apt install redis-server php-redis -y
systemctl enable redis-server
systemctl start redis-server
Настраиваем PrestaShop для использования Redis. Файл /var/www/prestashop/app/config/parameters.php:
nano /var/www/prestashop/app/config/parameters.php
Добавляем или изменяем:
'cache_class_prefix' => 'pref_',
'cache_dir' => '/var/www/prestashop/var/cache',
'database_engine' => 'InnoDB',
'ps_cache_enable' => true,
'ps_caching' => 'CacheMemcache',
'ps_cache_default_lifetime' => 3600,
'ps_cache_server' => '127.0.0.1',
'ps_cache_port' => 6379,
Перезапускаем PHP-FPM:
systemctl restart php8.3-fpm
Проверяем что Redis работает:
redis-cli ping
Должно вернуть "PONG". Теперь PrestaShop кэширует данные в Redis вместо файловой системы.
Настройка OPcache для PHP
OPcache кэширует скомпилированный bytecode PHP. Без OPcache PHP компилирует скрипты каждый раз. С OPcache компиляция происходит один раз, затем используется кэш.
OPcache уже установлен с PHP, нужно правильно настроить. Файл /etc/php/8.3/fpm/conf.d/10-opcache.ini:
nano /etc/php/8.3/fpm/conf.d/10-opcache.ini
Оптимальные настройки для PrestaShop:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.max_wasted_percentage=5
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.save_comments=1
opcache.enable_cli=0
Параметр opcache.validate_timestamps=0 критичен для production. PHP не проверяет изменения файлов, всегда использует кэш. После обновления файлов нужно очищать OPcache вручную:
systemctl reload php8.3-fpm
Перезапускаем PHP-FPM:
systemctl restart php8.3-fpm
Оптимизация MySQL/MariaDB
База данных — узкое горлышко PrestaShop. Оптимизация MySQL/MariaDB даёт заметный прирост.
Редактируем /etc/mysql/mariadb.conf.d/50-server.cnf:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Добавляем в секцию [mysqld]:
# InnoDB настройки
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
# Query cache (для MariaDB 10.6+)
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M
# Connections
max_connections = 150
thread_cache_size = 50
table_open_cache = 4000
tmp_table_size = 64M
max_heap_table_size = 64M
Значение innodb_buffer_pool_size должно быть 50-70% от RAM сервера. Для VPS с 4 ГБ RAM ставьте 2G, с 8 ГБ — 4G.
Перезапускаем MariaDB:
systemctl restart mariadb
Проверяем что MariaDB запустилась:
systemctl status mariadb
CDN для статики
Content Delivery Network раздаёт изображения, CSS, JS с серверов близких к посетителю. Покупатель из Владивостока получает файлы с сервера в Азии вместо Москвы — загрузка быстрее.
Cloudflare предоставляет бесплатный CDN. Регистрируетесь на cloudflare.com, добавляете домен, меняете NS записи у регистратора. Cloudflare автоматически кэширует статику.
В PrestaShop укажите CDN URL в разделе Производительность → Media servers. Формат: https://cdn.ваш-домен.ru. Все ссылки на изображения будут использовать CDN домен.
Безопасность PrestaShop магазина
Интернет-магазины — частая цель атак. Данные покупателей, платёжная информация, доступ к базе — всё это привлекает хакеров. Безопасность критична.
Базовые меры защиты
Обновления:
Следите за обновлениями PrestaShop. Уязвимости находят регулярно, патчи выходят быстро. Раздел Модули → Module Manager, вкладка Обновления показывает доступные обновления платформы и модулей.
Перед обновлением обязательно сделайте бэкап. Процесс обновления может сломать несовместимые модули или темы.
Сложные пароли:
Админка, FTP, база данных, SSH — везде используйте уникальные сложные пароли. Минимум 16 символов, буквы в разном регистре, цифры, спецсимволы. Используйте менеджер паролей (Bitwarden, KeePass).
Двухфакторная аутентификация:
Установите модуль 2FA для админки PrestaShop. Даже если пароль украли, без кода из приложения войти не получится. Модули есть на PrestaShop Addons, много бесплатных.
Защита админки
Переименование директории:
После установки переименовали /admin в уникальное имя. Это базовая защита, но эффективная — автоматические боты не найдут админку.
Ограничение доступа по IP:
Если администрируете магазин с постоянного IP, запретите доступ к админке с других адресов. В конфигурации Nginx для админ-директории:
location ~ ^/admin_уникальное_имя {
allow ваш.IP.адрес.здесь;
deny all;
# Остальная конфигурация...
}
Перезагружаете Nginx — админка доступна только с вашего IP. С других адресов вернётся 403 Forbidden.
Лимит попыток входа:
Модули вроде "Login Protection" ограничивают количество попыток входа. После 5 неудачных попыток IP блокируется на 30 минут. Защищает от bruteforce атак.
Fail2ban для защиты сервера
Fail2ban мониторит логи и блокирует IP адреса с подозрительной активностью.
Установка:
apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
Настраиваем защиту Nginx. Файл /etc/fail2ban/jail.local:
nano /etc/fail2ban/jail.local
Вставляем:
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
[nginx-noscript]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 6
bantime = 3600
findtime = 600
[nginx-badbots]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2
bantime = 86400
findtime = 600
Перезапускаем Fail2ban:
systemctl restart fail2ban
Проверяем статус:
fail2ban-client status
Покажет активные jails. Fail2ban теперь защищает сервер от bruteforce SSH и HTTP атак.
Регулярные бэкапы
Бэкапы — последняя линия защиты. Взломали магазин, удалили данные, установили вредоносный код — с бэкапом восстановитесь быстро.
Что бэкапить:
- База данных MySQL
- Файлы PrestaShop (/var/www/prestashop)
- Конфигурации Nginx (/etc/nginx)
- Сертификаты SSL (/etc/letsencrypt)
Скрипт автоматического бэкапа:
#!/bin/bash
BACKUP_DIR="/backups/prestashop"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="prestashop"
DB_USER="prestashop_user"
DB_PASS="ваш_пароль_базы"
mkdir -p "$BACKUP_DIR"
# Дамп базы данных
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_DIR/db_${DATE}.sql.gz"
# Архив файлов
tar -czf "$BACKUP_DIR/files_${DATE}.tar.gz" /var/www/prestashop
# Удаление старых бэкапов (старше 7 дней)
find "$BACKUP_DIR" -name "*.gz" -mtime +7 -delete
echo "Backup completed: $DATE"
Сохраните скрипт как /usr/local/bin/prestashop_backup.sh, сделайте исполняемым:
chmod +x /usr/local/bin/prestashop_backup.sh
Добавьте в cron для ежедневного выполнения:
crontab -e
Добавьте строку:
0 3 * * * /usr/local/bin/prestashop_backup.sh
Бэкап будет создаваться каждую ночь в 3:00. Храните бэкапы не только локально — выгружайте на отдельный сервер, S3, или другое удалённое хранилище.
Обслуживание и мониторинг магазина
PrestaShop требует регулярного обслуживания. Магазин не работает сам по себе — нужен мониторинг, обновления, оптимизация.
Мониторинг производительности
Uptime Robot или аналогичные сервисы проверяют доступность магазина каждые 5 минут. Если сайт упал — получаете уведомление на email/SMS. Бесплатный план позволяет мониторить 50 сайтов.
Внутренний мониторинг через логи Nginx:
tail -f /var/log/nginx/prestashop_access.log
Смотрите на коды ответов. 200 — OK, 404 — страница не найдена, 500 — внутренняя ошибка сервера. Частые 500-е ошибки означают проблемы с PHP или базой данных.
Google Analytics или Matomo для аналитики продаж. Отслеживайте:
- Конверсию (процент посетителей оформивших заказ)
- Среднее время загрузки страниц
- Брошенные корзины (добавили товары но не купили)
- Популярные товары и категории
Обновление PrestaShop
PrestaShop выпускает обновления безопасности ежемесячно, мажорные версии — раз в год-два. Обновляться критично для безопасности и производительности.
Процесс обновления:
- Создайте полный бэкап (база + файлы)
- Обновите модули через Module Manager
- Скачайте архив обновления с официального сайта PrestaShop
- Загрузите через админку раздел "Параметры" → "Обновление"
- Запустите мастер обновления
- Проверьте магазин после обновления
Обновление major версий (1.7 → 8.0 → 9.0) рискованное. Кастомные темы и модули могут сломаться. Тестируйте на копии магазина перед обновлением production.
Minor обновления (9.0.0 → 9.0.1) безопасные. Обычно только патчи безопасности и багфиксы, совместимость сохраняется.
Оптимизация базы данных
Со временем база PrestaShop раздувается логами, старыми записями, фрагментированными таблицами. Регулярная оптимизация ускоряет магазин.
Очистка логов PrestaShop:
Раздел Расширенные параметры → Логи, удалите старые логи (старше месяца). Логи занимают гигабайты и не несут пользы после анализа.
Оптимизация таблиц MySQL:
mysqlcheck -u root -p --optimize --all-databases
Команда дефрагментирует таблицы, пересобирает индексы. Для большой базы процесс занимает 10-30 минут. Запускайте ночью когда магазин наименее загружен.
Удаление неиспользуемых данных:
- Старые версии товаров (если ведёте историю изменений)
- Старые корзины (незавершённые покупки старше 30 дней)
- Логи поисковых запросов (аналитика за прошлые месяцы)
PrestaShop не удаляет это автоматически. Либо вручную через базу данных, либо модули для очистки (доступны на Addons).
Масштабирование PrestaShop под рост бизнеса
Магазин растёт — нужно больше ресурсов. Масштабирование вертикальное (больше мощности одному серверу) или горизонтальное (несколько серверов).
Вертикальное масштабирование
На THE.Hosting VPS можно апгрейдить ресурсы без переустановки:
- 4 ГБ RAM → 8 ГБ: кнопка в панели управления, сервер перезагружается, доступны новые ресурсы
- 2 vCPU → 4 vCPU: аналогично
- 40 ГБ NVMe → 80 ГБ: расширение диска без потери данных
Вертикальное масштабирование работает до определённого момента. Один сервер не может обрабатывать бесконечную нагрузку. Для крупных магазинов (10000+ заказов/день) нужно горизонтальное масштабирование.
Горизонтальное масштабирование
Несколько серверов за load balancer. Структура:
- Load Balancer: Nginx принимает запросы, распределяет между веб-серверами
- Веб-серверы (2-5 штук): PrestaShop файлы, PHP-FPM
- Database сервер: отдельный VPS только для MySQL/MariaDB
- Redis/Memcached сервер: кэш в памяти
- NFS/GlusterFS: общее файловое хранилище для изображений товаров
Такая архитектура выдерживает десятки тысяч посетителей одновременно. Настройка сложнее одного VPS, но для крупного бизнеса необходимость.
THE.Hosting VPS позволяет собрать такую инфраструктуру. Заказываете несколько VPS, настраиваете приватную сеть между ними (VLAN), конфигурируете load balancing.
Преимущества размещения PrestaShop на VPS THE.Hosting
Shared-хостинг для интернет-магазина не подходит. Ограничения ресурсов, медленные диски, десятки соседей на одном сервере. PrestaShop требует выделенных ресурсов.
VPS THE.Hosting решает эти проблемы:
NVMe-диски вместо обычных SSD:
PrestaShop активно работает с базой данных. Каждый просмотр товара — запросы к MySQL. Каждый заказ — запись в базу. NVMe диски дают скорость чтения/записи в 5-7 раз выше обычных SSD. База данных работает моментально, страницы грузятся быстро.
Выделенные ресурсы:
2 vCPU и 4 ГБ RAM только для вашего магазина. Никаких соседей которые могут загрузить сервер. Трафик десятка покупателей одновременно обрабатывается без лагов.
IPv4 адрес включён:
Для SSL-сертификата нужен выделенный IP. На shared-хостинге это доп.плата. VPS THE.Hosting включает IPv4 бесплатно. Установили Let's Encrypt — магазин работает по HTTPS без дополнительных затрат.
Датацентры в Европе:
Серверы THE.Hosting расположены в Европе. Для покупателей из России, Украины, Казахстана задержка минимальная (20-50 мс). Страницы грузятся мгновенно. Для SEO это плюс — Google учитывает скорость загрузки.
Root-доступ и полный контроль:
Устанавливаете что хотите, настраиваете как нужно. Нет ограничений хостинг-провайдера на модули PHP, конфигурацию сервера, версии софта. PrestaShop требует специфичных настроек — на VPS делаете всё сами.
Масштабируемость:
Магазин растёт — апгрейдите ресурсы в панели управления. Нужен второй сервер для базы данных — заказываете дополнительный VPS, настраиваете репликацию. На shared-хостинге такое невозможно.
Техническая поддержка 24/7:
Проблемы с сервером решаются быстро. Не нужно ждать день-два ответа от хостинг-провайдера. Поддержка THE.Hosting отвечает в течение часа, помогает с базовой настройкой.
Частые проблемы и их решение
PrestaShop показывает белую страницу
Причина: ошибка PHP, обычно нехватка памяти или фатальная ошибка в коде.
Решение:
- Включите debug режим в /var/www/prestashop/config/defines.inc.php:
define('_PS_MODE_DEV_', true); - Обновите страницу — увидите текст ошибки
- Если ошибка "Memory exhausted", увеличьте memory_limit в php.ini
- После исправления отключите debug режим (PS_MODE_DEV = false)
Админка не открывается после обновления
Причина: кэш Smarty не обновился или модуль несовместим с новой версией.
Решение:
rm -rf /var/www/prestashop/var/cache/*
rm -rf /var/www/prestashop/app/cache/*
Очистите кэш через SSH. Если не помогло — отключите модули по одному, ищите несовместимый.
Медленная загрузка товаров с большим количеством изображений
Причина: изображения не оптимизированы, кэш не настроен.
Решение:
- Включите WebP формат для изображений
- Настройте CDN (Cloudflare)
- Включите lazy loading для изображений (модули есть на Addons)
- Оптимизируйте существующие изображения через ImageMagick:
find /var/www/prestashop/img -name "*.jpg" -exec jpegoptim --max=85 {} \;
Ошибки 504 Gateway Timeout при импорте товаров
Причина: PHP не успевает обработать большой CSV файл за 300 секунд.
Решение: Увеличьте таймауты в Nginx. Файл /etc/nginx/sites-available/prestashop:
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
В php.ini:
max_execution_time = 600
Перезапустите Nginx и PHP-FPM.
Готовы запустить интернет-магазин на PrestaShop?
VPS THE.Hosting с NVMe-дисками и выделенными ресурсами — оптимальная платформа для PrestaShop. Full root-доступ, IPv4 включён, датацентры в Европе.
Часто задаваемые вопросы
Сколько стоит содержание PrestaShop магазина?
PrestaShop бесплатна, но нужен хостинг, домен, модули. VPS 4 ГБ RAM стоит 500-1000₽/мес, домен 200-500₽/год, платёжные модули $0-100 разово, тема $50-300. Итого старт от 1000₽/мес + разовые затраты на настройку.
Можно ли перенести магазин с другого хостинга?
Да, миграция стандартная. Создаёте дамп базы данных, копируете файлы через SFTP, импортируете базу на новом сервере, обновляете конфигурацию (URL, пути). Процесс занимает 1-3 часа для среднего магазина.
Нужны ли знания программирования для PrestaShop?
Для базовой работы нет. Установка, настройка, добавление товаров — всё через админку. Для кастомизации тем и модулей нужны PHP, jаvascript, CSS. Можно нанять разработчика для сложных задач.
Какие модули обязательны для PrestaShop?
Минимум: платёжный модуль (ЮKassa, Робокасса), доставка (СДЭК, Почта России), Google Analytics, резервное копирование, защита от спама. Остальное зависит от специфики магазина.
Сколько товаров выдерживает PrestaShop?
На правильно настроенном VPS — десятки тысяч товаров без проблем. Магазины с 100000+ товарами работают, но требуют оптимизации базы данных, хорошего кэширования, мощного сервера (8+ ГБ RAM).