Установка Shopware на CentOS 7 с NGINX

Введение
Shopware — современная open source платформа для электронной коммерции. Она опирается на такие технологии, как Symfony, Doctrine и Zend Framework. В этом руководстве показана установка Shopware CE на CentOS 7 с использованием NGINX в качестве веб-сервера.
Кому это руководство подходит:
- Системным администраторам, которым нужно развернуть Shopware на VPS или выделенном сервере.
- Девопс-инженерам, которые автоматизируют развёртывание PHP-приложений.
- Разработчикам, устанавливающим локальную или тестовую среду на CentOS 7.
Важно: в примерах мы используем PHP 7.2, MariaDB и NGINX. В продакшне рекомендуется PHP 7.1+ (или выше при поддержке Shopware) и отдельный сервер базы данных.
Быстрая проверка требований
Перед началом убедитесь, что у вас есть:
- CentOS 7 (64‑бит).
- Непользователь root с sudo-привилегиями.
- Минимум 4 ГБ свободного диска.
- Веб-сервер NGINX (или Apache) и возможность настроить cron.
- PHP 5.6.4+ с перечисленными расширениями; PHP 7.1/7.2+ рекомендованы.
- MariaDB/MySQL 5.5+.
Критические PHP-расширения: ctype, gd, curl, dom, hash, iconv, zip, json, mbstring, openssl, session, simplexml, xml, zlib, fileinfo, pdo/mysql.
Содержание (кратко)
- Подготовка системы
- Установка PHP и расширений
- Опционально: IonCube Loader
- Установка MariaDB и создание БД
- Опционально: получение сертификатов Let’s Encrypt через acme.sh
- Установка и настройка NGINX
- Установка Shopware и финальная настройка
- Безопасность, оптимизация и отладка
- Контрольный список и чеклисты ролей
- Частые проблемы и решения
Требования (детально)
- ОС: CentOS 7 x86_64.
- Веб-сервер: NGINX или Apache 2.x (с mod_rewrite).
- PHP: 5.6.4+ (рекомендуется 7.1/7.2).
- БД: MySQL/MariaDB 5.5+.
- Рекомендуемая память для PHP: memory_limit ≥ 256M.
- Хранилище: минимум 4 ГБ свободного места.
- (Опционально) IonCube Loader 5.0+ для платных модулей.
Важно: Shopware на момент этого руководства совместим с PHP 7.2.x.
Предварительные действия
- Проверьте версию CentOS:
cat /etc/centos-release- Установите часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'- Обновите пакеты:
sudo yum update -y- Установите утилиты:
sudo yum install -y curl wget vim unzip socat epel-release gitПримечание: epel-release открывает доступ к дополнительным пакетам, необходимым для некоторых зависимостей.
Шаг 1 — Установка PHP и расширений
- Подключите репозиторий Webtatic (пример для PHP 7.2 в исходном руководстве):
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm- Установите PHP и обязательные расширения:
sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-mysql php72w-curl php72w-json php72w-zip php72w-gd php72w-xml php72w-mbstring php72w-opcache- Проверьте установленные модули PHP:
php -mПример вывода (включая ctype, curl, fileinfo и др.).
- Проверьте версию PHP:
php --version- Запустите и включите PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceВажно: убедитесь, что PHP-FPM слушает сокет или порт, который вы укажете в конфигурации NGINX (в примере — 127.0.0.1:9000).
Шаг 2 — Установка IonCube Loader (опционально)
Если вам нужны платные плагины Shopware, может потребоваться IonCube. Пример установки для PHP 7.2:
cd /tmp && wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfz ioncube_loaders_lin_*.gz
php -i | grep extension_dir
sudo cp /tmp/ioncube/ioncube_loader_lin_7.2.so /usr/lib64/php/modules
sudo vim /etc/php.iniДобавьте в /etc/php.ini строку:
zend_extension = /usr/lib64/php/modules/ioncube_loader_lin_7.2.soПерезапустите PHP-FPM:
sudo systemctl restart php-fpm.serviceПримечание: путь к .so и имя файла зависят от версии PHP. Используйте php -i чтобы найти extension_dir.
Шаг 3 — Установка MariaDB и создание базы данных
- Установите MariaDB:
sudo yum install -y mariadb-server- Запустите и включите службу:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service- Выполните скрипт безопасности:
sudo mysql_secure_installationОтветьте на вопросы, рекомендуемые параметры: отключить анонимных пользователей, запрет удалённого входа root, удалить тестовую базу, перезагрузить таблицы привилегий.
- Подключитесь к MariaDB и создайте базу и пользователя:
sudo mysql -u root -p
mysql> CREATE DATABASE shopware_db;
mysql> GRANT ALL ON shopware_db.* TO 'shopware_user' IDENTIFIED BY 'strong_password';
mysql> FLUSH PRIVILEGES;
mysql> exitЗамените имена и пароль на собственные. Храните credentials в защищённом месте.
Шаг 4 — Получение TLS-сертификата через acme.sh (опционально)
Let’s Encrypt рекомендует HTTPS для магазинов. acme.sh — лёгкий клиент на shell.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
exitВыпуск сертификатов (standalone):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Установка сертификатов в /etc/letsencrypt:
mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_ecc
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"Важно: для production-домена убедитесь, что порт 80 открыт и домен указывает на сервер. Для тестирования используйте –staging.
Шаг 5 — Установка и конфигурация NGINX
- Установите NGINX:
sudo yum install -y nginx- Запустите и включите службу:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service- Создайте конфигурацию /etc/nginx/conf.d/shopware.conf (пример ниже):
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/shopware;
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
index shopware.php index.php;
location / {
try_files $uri $uri/ /shopware.php$is_args$args;
}
location /recovery/install {
index index.php;
try_files $uri /recovery/install/index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}- Проверьте синтаксис и перезагрузите NGINX:
sudo nginx -t
sudo systemctl reload nginx.serviceЗамечания по SSL: используйте корректные пути к pem/key файлам. В продакшне дополнительно настройте HSTS, OCSP Stapling и современные cipher suite.
Шаг 6 — Установка Shopware
- Создайте корневую директорию сайта и задайте владельца:
sudo mkdir -p /var/www/shopware
sudo chown -R {your_user}:{your_user} /var/www/shopware
cd /var/www/shopware- Скачайте и распакуйте дистрибутив (пример для конкретной версии):
wget https://releases.shopware.com/install_5.5.8_d5bf50630eeaacc6679683e0ab0dcba89498be6d.zip?_ga=2.141661361.269357371.1556739808-1418008019.1556603459 -O shopware.zip
unzip shopware.zip
rm shopware.zipПримечание: обновите URL, если есть новая версия.
- Измените владельца на nginx (если PHP-FPM работает под nginx):
sudo chown -R nginx:nginx /var/www/shopware- Отредактируйте /etc/php-fpm.d/www.conf и установите user/group = nginx. Создайте директорию сессий PHP:
sudo mkdir -p /var/lib/php/session && sudo chown -R nginx:nginx /var/lib/php/session- Отрегулируйте php.ini:
- memory_limit = 256M
- upload_max_filesize = 6M (увеличьте при необходимости для импорта больших файлов)
- allow_url_fopen = On (если требуется)
После изменений перезагрузите PHP-FPM:
sudo systemctl reload php-fpm.service- Откройте ваш домен в браузере и пройдите веб‑установщик. Админ-панель доступна по /backend: http://example.com/backend
Шаг 7 — Завершение установки через веб‑мастер










После завершения вы сможете войти в админку и начать настройку каталога, платежных методов и тем.
Безопасность и жёсткая настройка
Рекомендации для безопасности производства:
- Отключите доступ к /recovery и /engine/ директориям через внешние IP, где это возможно.
- Храните файлы конфигурации и пароли в защищённых хранилищах (Vault, SSM).
- Регулярно обновляйте систему и зависимости: OS, PHP, Shopware.
- Настройте firewall (firewalld/iptables) и разрешите только нужные порты (80, 443, SSH).
- Используйте fail2ban для защиты SSH и администратора.
- Ограничьте права файловой системы: минимальные разрешения для web-контента (обычно 755/644).
- Настройте автоматические бэкапы базы данных и файлов.
Примечание: HSTS и TLS 1.2+ обязательны для онлайн-магазина.
Оптимизация производительности
Базовые рекомендации:
- Включите opcode-кеширование (OPcache) в PHP.
- Используйте Redis/вар/OPcache для кэша, если Shopware поддерживает.
- Отделите базу данных на отдельный хост при росте нагрузки.
- Настройте gzip/deflate в NGINX и правильные заголовки Cache-Control для статических ресурсов.
- Используйте CDN для доставки статики (изображения, JS, CSS).
Технические чек-листы по ролям
Администратор сервера:
- Установлен и обновлён CentOS 7.
- Непользователь root с sudo.
- Установлен NGINX, PHP-FPM.
- MariaDB запущен и настроен.
- TLS-сертификаты установлены.
- Firewall и fail2ban настроены.
Разработчик/Dev:
- Локальная копия конфигурации окружения.
- Переменные окружения/пароли вынесены в безопасное хранилище.
- Тестовый стенд с копией БД для проверки изменений.
Оператор/DevOps:
- Мониторинг (CPU, память, диск) и алерты для ключевых метрик.
- План бэкапов и восстановление (backup retention).
- План отката при обновлении Shopware/плагинов.
Критерии приёмки
- Сайт отвечает на HTTP/HTTPS запросы и возвращает главную страницу.
- Админ-панель доступна по /backend.
- Shopware подключилась к базе и установила таблицы без ошибок.
- TLS-сертификат действителен и браузер не показывает ошибок.
- Логи NGINX и PHP-FPM не содержат критических ошибок при базовой навигации.
Частые проблемы и их решения
Проблема: 502 Bad Gateway
- Причина: PHP-FPM не запущен или слушает другой сокет/порт.
- Решение: sudo systemctl status php-fpm; проверьте fastcgi_pass и сокет.
Проблема: Ошибки прав при записи кэша/загрузки изображений
- Причина: неверные владельцы/права файлов.
- Решение: chown -R nginx:nginx /var/www/shopware и права 755 для директорий, 644 для файлов.
Проблема: Не проходит проверка требований в мастере установки
- Причина: отсутствуют PHP-расширения или неверные значения php.ini.
- Решение: php -m покажет отсутствующие расширения; откройте /etc/php.ini и скорректируйте memory_limit и upload_max_filesize.
Когда этот метод не подходит
- У вас управляемый хостинг без доступа к системным пакетам. В этом случае используйте панели хостинга или Docker-контейнеры, если провайдер их поддерживает.
- Вам нужно масштабировать магазин горизонтально: рекомендуется архитектура с балансировщиком нагрузки, отдельными сервисами (отдельная БД, файловое хранилище, кеш).
Альтернативные подходы
- Apache + mod_php/mod_fcgid вместо NGINX + PHP-FPM.
- Контейнеризация: Docker/Kubernetes с преднастроенным образом Shopware.
- Облачные managed DB/Load Balancer (AWS RDS/ALB, DigitalOcean Managed DB).
Советы по миграции и совместимости
- При обновлении Shopware проверяйте совместимость плагинов и PHP-версии.
- Перед миграцией делайте полную копию БД и файлов.
- Тестируйте обновления в тестовом окружении, а не сразу на продуктиве.
Таблица принятых настроек (ключевые параметры)
- PHP memory_limit: 256M или выше
- upload_max_filesize: зависит от импорта, минимум 6M
- PHP-FPM user/group: nginx
- NGINX root: /var/www/shopware
- DB: отдельный пользователь с ограниченными правами кроме нужных для Shopware
Краткая методология установки
- Подготовьте систему и обновите пакеты.
- Установите PHP и расширения.
- Настройте БД и получите сертификат.
- Настройте NGINX и права на файлы.
- Установите Shopware и пройдите веб‑мастер.
- Тестируйте, оптимизируйте и настройте мониторинг.
1‑строчный глоссарий
- PHP-FPM — процессный менеджер PHP для обработки PHP-запросов.
- NGINX — веб-сервер и reverse proxy.
- acme.sh — shell-клиент для получения TLS-сертификатов от Let’s Encrypt.
- IonCube — загрузчик, требуемый для некоторых коммерческих PHP-плагинов.
Быстрый контрольный список перед запуском в продакшн
- TLS настроен и ОС обновлена
- Резервные копии работают
- Мониторинг и логирование настроены
- Права файлов ограничены
- План отката при обновлениях есть
Дополнительные ресурсы
- Официальный сайт Shopware: https://en.shopware.com/
- GitHub: https://github.com/shopware/shopware
Важно: перед любыми изменениями в продакшн-среде сделайте бэкап.
Итог
Установка Shopware на CentOS 7 с NGINX возможна и достаточно прямолинейна при соблюдении требований: правильно установленный PHP с нужными расширениями, настроенная БД и корректные права на файлы. После установки пройдите веб‑мастер и выполните базовую безопасную настройку и оптимизацию.
Примечание: держите систему и Shopware в актуальном состоянии и тестируйте обновления в изолированном окружении.