PrestaShop: установка на VPS
PrestaShop — самостоятельная PHP-платформа для интернет-магазина, а не плагин к существующему сайту: она ставится на чистый сервер как отдельное приложение со своим веб-установщиком, своей структурой папок и своими правами доступа. Если вы до этого разворачивали WordPress с WooCommerce, часть логики покажется знакомой, но подход другой — и об этом стоит сказать сразу, пока вы не удивились на середине установки.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Чем PrestaShop отличается от WooCommerce
WooCommerce — это плагин, который превращает обычный WordPress-сайт в магазин: движок один (WordPress), плагин добавляет к нему товары, корзину и заказы поверх существующей темы и админки. PrestaShop — не надстройка ни над чем. Это отдельный движок на PHP, изначально написанный именно как e-commerce-платформа: у него собственное ядро, собственная система модулей (не путать с плагинами WordPress), собственная админка и собственная логика тем.
Практическая разница на сервере:
- Установка. WordPress+WooCommerce — сначала ставится WordPress, потом через админку доустанавливается плагин. PrestaShop ставится целиком через отдельный веб-установщик, который создаёт структуру каталога магазина, таблицы БД и конфиг за один проход.
- Права на файлы. У PrestaShop гораздо больше папок, куда движок сам пишет во время работы (кэш, экспорт, загрузки, темы, модули) — и ошибка с правами здесь встречается чаще, чем у типового WordPress.
- Обновления. WooCommerce обновляется как плагин из админки WordPress. PrestaShop обновляется либо через встроенный модуль автообновления, либо вручную заменой ядра — с более выраженной привязкой к версии PHP.
- Нагрузка на старте. PrestaShop из коробки тяжелее — сказывается количество таблиц и модулей, включённых по умолчанию (мультивалютность, налоги, доставка, платёжные методы-заглушки). На слабом тарифе это ощущается сильнее, чем на аналогичном WordPress.
Если вы уже сравнивали варианты и решили взять WordPress с магазинным плагином — это тоже рабочий путь, но эта статья именно про PrestaShop как самостоятельный движок.
Требования к серверу
Актуальные (на конец августа 2026 года) минимальные и рекомендуемые требования PrestaShop:
| Параметр | Минимум | Рекомендуется для боевого магазина |
|---|---|---|
| PHP | 8.1 | 8.2–8.3 |
| MySQL / MariaDB | MySQL 5.7+ / MariaDB 10.4+ | MySQL 8.0 / MariaDB 10.6+ |
| Веб-сервер | Apache 2.4 или Nginx | Nginx (как обратный прокси перед PHP-FPM) или Apache с mod_php/PHP-FPM |
| RAM | 2 ГБ | 4 ГБ и выше |
| Диск | 5 ГБ свободных (SSD) | SSD/NVMe, запас под каталог и бэкапы |
| PHP-расширения | curl, gd, intl, mbstring, pdo_mysql, xml, zip, opcache | те же + imagick при желании |
Каталог не резиновый: если у вас будет несколько тысяч товаров с изображениями и активным трафиком, закладывайте 4 ГБ ОЗУ и SSD/NVMe с запасом — PrestaShop активно кэширует и генерирует изображения товаров в разных размерах, это заметно ест диск и I/O.
Ниже пример для Ubuntu 24.04, но шаги аналогичны и для Debian/AlmaLinux — отличаются только имена пакетов и пути.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать VPSПодготовка сервера: стек LEMP/LAMP
Обновите систему и поставьте нужные компоненты. Пример для связки Nginx + PHP-FPM + MySQL:
sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx mysql-server \
php8.2-fpm php8.2-cli php8.2-mysql php8.2-curl php8.2-gd \
php8.2-intl php8.2-mbstring php8.2-xml php8.2-zip php8.2-opcache php8.2-bcmath
Если вам привычнее классическая связка Apache + mod_php, шаги установки самого PrestaShop будут те же, разница только в веб-сервере — этот вариант подробно разобран в статье про Apache с mod_php на VPS.
Создайте базу данных и отдельного пользователя (не root) для магазина:
sudo mysql -u root -p
CREATE DATABASE prestashop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'presta_user'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON prestashop.* TO 'presta_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Более подробно про саму настройку MySQL/MariaDB — в отдельной статье про установку и настройку MySQL на VPS, если делаете это впервые.
Скачивание и распаковка дистрибутива
Скачайте актуальную версию с официального сайта PrestaShop (проверьте номер версии на странице загрузок — на момент установки это может быть уже не та цифра, что вчера):
cd /var/www
sudo mkdir shop && cd shop
sudo wget https://download.prestashop.com/download/releases/prestashop_8.2.0.zip -O prestashop.zip
sudo apt install -y unzip
sudo unzip prestashop.zip -d /tmp/presta_extract
Внутри архива PrestaShop обычно два слоя: сам архив дистрибутива и внутренний prestashop.zip с исходниками движка — в некоторых релизах нужно распаковать ещё раз:
sudo unzip /tmp/presta_extract/prestashop.zip -d /var/www/shop
sudo rm -rf /tmp/presta_extract prestashop.zip
Проверьте, что в /var/www/shop появились папки admin, install, img, modules, themes и файл index.php — если структура плоская или чего-то не хватает, значит распаковка прошла не тем слоем и нужно повторить.
Настройка Nginx для PrestaShop
Создайте конфиг виртуального хоста:
sudo nano /etc/nginx/sites-available/shop.conf
server {
listen 80;
server_name shop.example.com;
root /var/www/shop;
index index.php;
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.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/shop.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Если у вас уже есть домен и DNS настроен — самое время выпустить SSL до того, как вы откроете магазин публично; порядок действий описан в статье про Let's Encrypt SSL на VPS. Технически веб-установщик PrestaShop отработает и по HTTP, но платёжные модули и часть JS-функциональности в браузере будут ругаться без HTTPS, так что лучше не откладывать.
Веб-установщик PrestaShop шаг за шагом
Откройте в браузере адрес вашего сервера или домена — откроется мастер установки PrestaShop. Он состоит из нескольких экранов:
- Выбор языка установщика и будущего магазина (можно добавить локали позже).
- Лицензионное соглашение — принимаете условия использования PrestaShop.
- Информация о системе — установщик сам проверяет версию PHP, наличие расширений и права на запись в ключевые папки. Если что-то красным — останавливайтесь и чините до перехода дальше, иначе поймаете ошибки на более поздних шагах.
- Конфигурация магазина — название магазина, страна по умолчанию, часовой пояс, данные администратора (email и пароль — задайте сразу надёжный, это единственный вход в админку).
- Настройка базы данных — здесь вводите те же данные, что создали выше: сервер
localhost, имя базыprestashop, пользовательpresta_user, пароль. Кнопка «Проверить соединение» должна пройти зелёным, прежде чем жать «Далее». - Установка — установщик разворачивает таблицы, наполняет демо-данными (если выбрали) или пустой каталог, генерирует конфигурационные файлы.
- Финальный экран — показывает адрес фронта магазина и адрес админки (папка со случайным именем вида
admin123xyz— обязательно запишите её, стандартного/adminтам нет специально).
Если на шаге проверки соединения с БД получаете ошибку доступа — почти всегда дело либо в неверном пароле пользователя MySQL, либо в том, что пользователю не выданы права на конкретную базу. Проверьте командой SHOW GRANTS FOR 'presta_user'@'localhost'; в MySQL-консоли.
Права доступа на папки после установки
Это самая частая ошибка новичков при установке PrestaShop — забыть выставить владельца и права после того, как файлы распакованы под root, а работать с ними должен пользователь веб-сервера (обычно www-data).
Симптомы неправильных прав: магазин открывается, но при попытке загрузить изображение товара, установить модуль или изменить тему — тишина или ошибка 500 без внятного текста.
Правильная последовательность:
sudo chown -R www-data:www-data /var/www/shop
sudo find /var/www/shop -type d -exec chmod 755 {} \;
sudo find /var/www/shop -type f -exec chmod 644 {} \;
Отдельным папкам, куда PrestaShop пишет постоянно (кэш, логи, загрузки, экспорт), можно оставить 755 на директории — этого достаточно, если владелец файлов правильный. Не выставляйте 777 «на всякий случай»: это распространённая, но плохая практика — при 777 записать в папку сможет любой процесс на сервере, а не только веб-сервер, что расширяет поверхность атаки при любой уязвимости в PHP-коде.
Если работаете через FTP/SFTP отдельным пользователем (не www-data), логичнее добавить этого пользователя в группу www-data и выставлять права группе, чем гонять владельца туда-обратно при каждом деплое.
Удаление папки install — обязательный шаг безопасности
После того как установка завершена и магазин открылся, папка /var/www/shop/install остаётся на диске и содержит рабочий мастер установки. Это дыра в безопасности: кто угодно, кто узнает или подберёт адрес /install, потенциально может попытаться повторно инициализировать установку или получить информацию о структуре сервера через диагностические скрипты внутри этой папки.
PrestaShop сам показывает предупреждение на финальном экране установщика с кнопкой «Удалить каталог install» — но она не всегда срабатывает корректно из-за прав доступа (см. предыдущий раздел), поэтому проверьте вручную:
sudo rm -rf /var/www/shop/install
Заодно убедитесь, что переименован (или защищён) файл admin — часть последних версий PrestaShop уже требует указать кастомное имя папки админки прямо на установке, но если у вас старая версия или миграция с другого сервера — проверьте, что путь к админке не совпадает с дефолтным /admin.
Дополнительно стоит закрыть прямой доступ к файлу config/settings.inc.php и папке config/ через веб-сервер — в конфиге Nginx выше это уже частично прикрыто блоком deny all для скрытых файлов, но для полной картины добавьте отдельный location для /config/ и /var/, запрещающий отдачу их содержимого браузеру.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать VPSНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли ставить PrestaShop на shared-хостинг вместо VPS?
Технически да, если хостер даёт доступ к нужной версии PHP и правам на изменение конфигов. На практике на VPS вы получаете полный контроль над PHP-настройками (лимиты памяти, время выполнения скриптов), что для PrestaShop критично при импорте больших каталогов товаров.
Установщик пишет, что не хватает прав, хотя chmod уже сделан — что не так?
Чаще всего папку распаковали и chmod применили от имени root, но веб-сервер работает от www-data — проверьте именно владельца (chown), а не только права доступа.
Нужно ли сразу ставить SSL или можно после установки магазина?
Лучше до открытия магазина для покупателей — часть модулей оплаты и внешних API PrestaShop требует HTTPS для корректной работы, а поисковики и браузеры сейчас маркируют HTTP-сайты как небезопасные.
Сколько RAM реально нужно для боевого магазина, а не для теста?
Однозначного числа нет — сильно зависит от количества товаров, посещаемости и включённых модулей. Для старта с несколькими сотнями товаров и умеренным трафиком 2 ГБ обычно хватает, но при росте каталога и добавлении модулей 4 ГБ — более комфортный ориентир, который избавит от лишних миграций на больший тариф.
PrestaShop сам подскажет, если что-то в системе не так?
Да, шаг «Информация о системе» в установщике проверяет версию PHP и расширения — но он не проверяет владельца файлов и права на запись содержательно, только базовую доступность, поэтому проблемы с правами часто всплывают уже после установки, а не на этом шаге.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →