Установка PrestaShop на Debian 9.1 — пошаговое руководство
Обзор
PrestaShop — свободная Open Source платформа для электронной коммерции, написанная на PHP. Это руководство показывает, как установить и настроить последнюю версию PrestaShop (серии 1.7.x на момент релиза исходного текста) на сервере с Debian 9.1. Оно ориентировано на администратора сервера или инженера по развёртыванию, но содержит также шаги для владельца магазина и разработчика.
Ключевые моменты:
- Вариант с Apache и PHP 7.0 (Debian 9 комплектует PHP 7.0).
- MariaDB как backend базы данных.
- Настройка SSL (self-signed и рекомендации по Let’s Encrypt).
- Права доступа, безопасность, тесты и базовые приёмо-сдаточные критерии.
Основные требования
- Debian 9 (stretch) минимальная установка на физическом хосте или VPS.
- Статический IP или корректная настройка DNS для домена.
- Доступ с sudo или root.
- Домен (опционально) с A/AAAA и, при необходимости, CNAME-записями.
- Резервная копия данных перед началом (если это обновление существующей установки).
Возможные варианты: если вы предпочитаете Nginx + PHP-FPM — в разделе “Альтернативные подходы” есть инструкции и рекомендации.
Предварительная конфигурация системы
Обновите списки пакетов и систему перед установкой.
apt updateapt upgrade
Установите полезные утилиты для работы в консоли.
apt install wget bash-completion zip unzip
Задайте понятное имя хоста для сервера (замените shop на своё имя хоста).
hostnamectl set-hostname shopПроверьте имя хоста и файл /etc/hosts.
hostnamectlcat /etc/hostnamehostname -shostname -f
Перезагрузите систему, если были обновления ядра или изменения, требующие перезагрузки.
systemctl rebootВажно: перезагрузка завершит вашу сессию SSH — подключайтесь снова после старта.
Установка Apache, PHP и требуемых модулей
PrestaShop требует веб-сервер и PHP с набором расширений. Для Debian 9 пример установки Apache и PHP 7.0:
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-xml php7.0-gd php7.0-json php7.0-zip php7.0-intl php7.0-mcrypt php7.0-curl php7.0-opcacheПроверьте, слушает ли Apache порт 80. Если netstat отсутствует, установите net-tools.
apt install net-toolsnetstat -tlpn
Альтернатива: используйте ss, он уже установлен в Debian 9.
ss -tlpnЕсли у вас работает брандмауэр UFW, пропустите HTTP и HTTPS (далее пример):
ufw allow WWWили
ufw allow 80/tcpДля iptables-пользователей:
apt-get install -y iptables-persistentiptables -I INPUT -p tcp --destination-port 80 -j ACCEPTsystemctl iptables-persistent savesystemctl iptables-persistent reloadВключите модуль rewrite и перезапустите Apache.
a2enmod rewritesystemctl restart apache2Проверьте страницу по IP или домену:
http://your_domain.tld
Иногда полезно установить дополнительные модули (headers, expires) для кэширования и безопасности:
a2enmod headers expires sslsystemctl restart apache2Включение и настройка SSL в Apache
Для тестирования можно включить модуль SSL и стандартный виртуальный хост default-ssl. Это создаст self-signed сертификат и позволит протестировать HTTPS.
a2enmod ssla2ensite default-ssl.confОткройте SSL-конфигурацию и включите AllowOverride для /var/www/html, чтобы работать с .htaccess и правилами перезаписи.
nano /etc/apache2/sites-enabled/default-ssl.confДобавьте (или убедитесь), что есть:
Options +FollowSymlinks
AllowOverride All
Require all granted
Измените строку VirtualHost на:

Также отредактируйте 000-default.conf и добавьте те же директивы для /var/www/html:
nano /etc/apache2/sites-enabled/000-default.confВставьте после DocumentRoot:
Options +FollowSymlinks
AllowOverride All
Require all granted

Перезапустите Apache:
systemctl restart apache2Для принятия самоподписанного сертификата посетите https://yourdomain.tld и подтвердите исключение в браузере.
Если UFW блокирует HTTPS, добавьте правило:
ufw allow 'WWW Full'или
ufw allow 443/tcpДля iptables:
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPTsystemctl iptables-persistent savesystemctl iptables-persistent reloadРекомендация: для production используйте сертификат Let’s Encrypt (см. раздел ниже).
Настройка PHP для PrestaShop
Перед установкой нужно настроить php.ini: сделайте резервную копию, отредактируйте настройки и при необходимости добавьте OPCache.
cp /etc/php/7.0/apache2/php.ini{,.backup}nano /etc/php/7.0/apache2/php.iniПроверьте и измените следующие параметры (указываются рекомендуемые значения):
file_uploads = On
allow_url_fopen = On
memory_limit = 128M
upload_max_filesize = 64M
date.timezone = Europe/LondonЗамените date.timezone на вашу зону — список доступных зон в документации PHP: http://php.net/manual/en/timezones.php
OPcache ускоряет обработку PHP и рекомендуется для production. Добавьте в конец php.ini:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1Примените изменения:
systemctl restart apache2Создайте phpinfo файл для контроля настроек и таймзоны:
echo ''| tee /var/www/html/info.phpОткройте https://domain.tld/info.php и убедитесь, что настройки применились.

После теста удалите info.php из webroot.
Установка и настройка MariaDB
PrestaShop хранит данные в реляционной базе — MariaDB/MySQL. Установите MariaDB и PHP-модуль:
apt install mariadb-server php7.0-mysql
Проверьте, что сервер слушает порт 3306:
netstat -tlpn | grep mysqlЗатем залогиньтесь под root (локально) и выполните команды, отключающие плагин аутентификации unix_socket, если требуется:
mysql -h localhostuse mysql;
update user set plugin='' where user='root';
flush privileges;
exit
Запустите встроенный скрипт для защиты сервера MariaDB:
sudo mysql_secure_installationСледуйте подсказкам: задайте пароль для root, удалите анонимных пользователей, запретите удалённый доступ для root и удалите тестовую базу — обычно безопасно отвечать «y» на все вопросы в production.
После скрипта попробуйте войти с паролем:
mysql -h localhost -u root -p
Создайте базу данных и отдельного пользователя для PrestaShop (замените my_shop, shop_user, shop_password своими значениями):
mysql -u root -p
create database my_shop;
grant all privileges on my_shop.* to 'shop_user' identified by 'shop_password';
flush privileges;
exit
Перезапустите службы MySQL и Apache и проверьте их статус:
systemctl restart mysql apache2systemctl status mysql apache2Скачивание и распаковка PrestaShop
Перейдите на страницу релизов PrestaShop на GitHub и скачайте zip-архив последней стабильной версии. Пример wget для версии 1.7.2.3 (в исходном тексте):
wget https://github.com/PrestaShop/PrestaShop/releases/download/1.7.2.3/prestashop_1.7.2.3.zip
Удалите индекс по умолчанию и ранее созданный info.php, распакуйте архив в webroot и проверьте содержимое:
rm /var/www/html/index.htmlrm /var/www/html/info.phpunzip prestashop_1.7.2.3.zip -d /var/www/html/ls /var/www/html/
Установите владельца файлов в www-data (пользователь Apache) и проверьте права:
chown -R www-data:www-data /var/www/html/ls -al /var/www/html/
Запуск веб-инсталлятора PrestaShop
Откройте в браузере https://yourdomain.tld (или http если SSL ещё не настроен). Инсталлятор распакует содержимое prestashop.zip и проведёт серию проверок совместимости.
https://yourdomain.tld
После распаковки можно вернуться в консоль и убедиться в наличии файлов:
ls -la /var/www/html/
Далее выберите язык, примите лицензию и проследуйте через экран проверки системы. Исправьте ошибки, если появятся. В нормальном случае вы увидите зелёную индикаторную подсказку об успешной проверке.

Укажите имя магазина, контактный email и пароль администратора.

На экране с базой данных укажите host (обычно localhost), имя базы, пользователя и пароль. Нажмите “Test your database connection now”.

Подождите, пока установщик заполнит базу и завершит процесс. По окончании установщик покажет ссылки для Back Office и Front Office.


Завершение установки и права доступа
После завершения установщик предложит перейти в Back Office. Перед входом обязательно удалите директорию install из webroot:
rm -rf /var/www/html/install/Перезагрузите страницу Back Office и войдите под логином администратора, указанным при установке.

При первом входе увидите приветствие и быстрый доступ к добавлению товара.


Фронтенд магазина доступен по домену:

Включение SSL в PrestaShop
Чтобы включить HTTPS в админке выполните: Configure -> Shop parameters -> General -> “Please click here to check if your shop supports HTTPS”. Затем включите “Enable SSL” и сохраните. Для фронтенда включите “Enable SSL on all pages” и сохраните.



Проверьте, что домашняя страница доступна по HTTPS. Если вы используете self-signed сертификат — браузер покажет предупреждение.

Рекомендация: в production используйте доверенные сертификаты (Let’s Encrypt — бесплатно) или платный CA.
Рекомендации по безопасности и hardening
- Установите SSL от доверенного CA. Для автоматизации можно использовать certbot (Let’s Encrypt).
- Отключите показ ошибок PHP в production (display_errors = Off).
- Ограничьте доступ к /admin через IP (если возможно) или включите двухфакторную аутентификацию для администратора модулей.
- Регулярно обновляйте систему, PHP и PrestaShop.
- Настройте регулярное резервное копирование базы и файлов (см. раздел резервного копирования).
- Проверьте права доступа: webroot — владелец www-data, файлы 644, каталоги 755; исключения — логично дать запись только там, где требуется.
Let’s Encrypt (короткая инструкция)
Установка certbot для Apache на Debian 9 (пример):
apt install certbot python-certbot-apachecertbot --apache -d yourdomain.tld -d www.yourdomain.tldCertbot сам изменит конфигурацию Apache и обновит сертификат автоматически.
Альтернативные подходы и совместимость
- Nginx + PHP-FPM: Nginx даёт более высокую производительность в ряде сценариев. Вместо libapache2-mod-php используйте php7.0-fpm и настройте сокет/порт в конфигурации Nginx. Для PrestaShop требуется корректная обработка .htaccess (в Nginx нужно прописывать правила вручную).
- Версии PHP: Debian 9 поставляется с PHP 7.0; новые версии PrestaShop могут требовать PHP 7.1+ или 7.2. Перед установкой сверяйтесь с требованиями версии PrestaShop.
- База данных: MariaDB 10.x рекомендуется. Для больших магазинов рассмотрите тюнинг my.cnf (innodb_buffer_pool_size и др.).
Резервное копирование и восстановление
Минимальный набор шагов для бэкапа:
- Бэкап базы данных:
mysqldump -u shop_user -p my_shop > /root/backups/my_shop-$(date +%F).sql- Бэкап файлов сайта:
tar -czf /root/backups/prestashop-www-$(date +%F).tar.gz /var/www/html/- Храните бэкапы вне сервера (S3, удалённый NAS, rsync на отдельный хост).
Восстановление:
- Распакуйте архив с файлами в /var/www/html (предварительно сохранив текущую копию).
- Восстановите базу данных:
mysql -u root -p my_shop < /root/backups/my_shop-YYYY-MM-DD.sqlРекомендация: перед восстановлением отключите cron и создайте maintenance-страницу.
Отладка и частые проблемы
- 500 Internal Server Error — проверьте логи Apache (/var/log/apache2/error.log) и права доступа к файлам.
- Ошибки соединения с базой данных — проверьте правильность хоста, пользователя и пароля; убедитесь, что MySQL слушает нужный интерфейс.
- Проблемы с модулем PHP (отсутствует GD, Intl) — установите соответствующие пакеты и перезапустите Apache.
- Ошибки времени выполнения скриптов — увеличьте memory_limit и max_execution_time в php.ini при необходимости.
Тесты и критерии приёмки
Критерии приёмки:
- Веб-инсталлятор PrestaShop открывается по HTTPS.
- Страница магазина (Front Office) загружается и отображает товары по умолчанию.
- Вход в Back Office проходит по указанному логину/паролю.
- Раздел “Advanced Parameters -> Performance” показывает включённый OPCache при соответствующей настройке.
- Информация о PHP (phpinfo) показывает заданную timezone и загруженные расширения (gd, intl, pdo_mysql).
- RDBMS подключение успешно, таблицы созданы, и можно добавлять продукты через админку.
Роль‑ориентированные чеклисты
Системный администратор:
- Обновил систему и установил пакеты.
- Настроил Apache/Nginx и PHP.
- Настроил и защитил MariaDB.
- Настроил SSL и брандмауэр.
- Настроил резервные копии и расписание cron.
Владелец магазина (merchant):
- Зарегистрировал домен и указал DNS.
- Создал e‑mail администратора для доступа в Back Office.
- Проверил внешний вид магазина и способы оплаты.
- Настроил политики доставки и возврата.
Разработчик / интегратор:
- Проверил совместимость модулей с версией PrestaShop.
- Настроил среду отладки и тестирования.
- Создал и проверил копии/миграции данных.
Playbook для отката или восстановления после неудачной установки
- Остановите веб-сервер.
systemctl stop apache2- Восстановите файлы из архива резервной копии.
- Восстановите базу данных из дампа.
- Проверьте права и владельца файлов:
chown -R www-data:www-data /var/www/html/
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;- Запустите веб-сервер и проверьте логи.
systemctl start apache2
journalctl -u apache2 -n 200- Если установка ломает сайт, временно включите maintenance mode в базе данных (из таблицы) или переименуйте папку themes/current_theme в целях диагностики.
Мини‑методология для обновлений PrestaShop
- Клонировать продакшн-сайт в staging (файлы + дамп базы).
- Прогнать тесты совместимости модулей и шаблонов.
- Провести обновление PrestaShop на staging, проверить функциональность.
- Согласовать с владельцем магазина окно обслуживания.
- Сделать полный бэкап production перед обновлением.
- Обновить production строго по заданной инструкции.
Советы по производительности
- Включите OPCache и настройте параметры памяти.
- Рассмотрите Varnish или Nginx кэширование для фронтенда.
- Настройте CDN для статических ресурсов (изображения, CSS, JS).
- Для больших каталогов настраивайте индексы и оптимизируйте конфигурацию MariaDB (innodb_buffer_pool_size и параметры соединений).
Короткая галерея крайних случаев и решения
- Если после распаковки файлы находятся внутри подпапки prestashop вместо корня — переместите их в /var/www/html.
- Если инсталлятор не запускается из-за прав — дайте временную запись для www-data, затем сужайте права.
- Если backup дамп большой и не восстанавливается из-за ограничений памяти — используйте mysql client на сервере и отключите если необходимо foreign_key_checks во время восстановления.
1‑строчный глоссарий
- Back Office — админ-панель магазина.
- Front Office — публичная часть магазина.
- OPCache — кеш байткода PHP.
- CA — поставщик сертификатов (Certificate Authority).
Заключение
Вы прошли полный цикл установки PrestaShop на Debian 9.1: от подготовки системы до включения SSL и базовых мер безопасности. Для production рекомендуем:
- Получить доверенный SSL-сертификат (Let’s Encrypt или платный CA).
- Настроить регулярные бэкапы и мониторинг.
- Прогонять обновления на staging перед прямым применением в production.
Если требуется миграция с другой платформы, интеграция платежных шлюзов или тонкая настройка производительности — внизу приведены краткие направления для следующего шага и ссылки на официальную документацию.
Внешняя документация: http://doc.prestashop.com/display/PS17/Installing+PrestaShop
Похожие материалы
Почта в RSS и публикация на сайте
Вставить PDF в Word — простые способы
Письма для мобильных: 7 ключевых правил
Добавить функцию Snooze в Gmail без приложений
Автообновление контейнеров с Podman