Гид по технологиям

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

8 min read Электронная коммерция Обновлено 22 Nov 2025
Установка Shopware на CentOS 7 с NGINX
Установка Shopware на CentOS 7 с NGINX

Логотип Shopware и интерфейс магазина

Введение

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.

Содержание (кратко)

  1. Подготовка системы
  2. Установка PHP и расширений
  3. Опционально: IonCube Loader
  4. Установка MariaDB и создание БД
  5. Опционально: получение сертификатов Let’s Encrypt через acme.sh
  6. Установка и настройка NGINX
  7. Установка Shopware и финальная настройка
  8. Безопасность, оптимизация и отладка
  9. Контрольный список и чеклисты ролей
  10. Частые проблемы и решения

Требования (детально)

  • ОС: 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.

Предварительные действия

  1. Проверьте версию CentOS:
cat /etc/centos-release
  1. Установите часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
  1. Обновите пакеты:
sudo yum update -y
  1. Установите утилиты:
sudo yum install -y curl wget vim unzip socat epel-release git

Примечание: epel-release открывает доступ к дополнительным пакетам, необходимым для некоторых зависимостей.

Шаг 1 — Установка PHP и расширений

  1. Подключите репозиторий Webtatic (пример для PHP 7.2 в исходном руководстве):
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  1. Установите 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
  1. Проверьте установленные модули PHP:
php -m

Пример вывода (включая ctype, curl, fileinfo и др.).

  1. Проверьте версию PHP:
php --version
  1. Запустите и включите 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 и создание базы данных

  1. Установите MariaDB:
sudo yum install -y mariadb-server
  1. Запустите и включите службу:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
  1. Выполните скрипт безопасности:
sudo mysql_secure_installation

Ответьте на вопросы, рекомендуемые параметры: отключить анонимных пользователей, запрет удалённого входа root, удалить тестовую базу, перезагрузить таблицы привилегий.

  1. Подключитесь к 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

  1. Установите NGINX:
sudo yum install -y nginx
  1. Запустите и включите службу:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
  1. Создайте конфигурацию /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;
    }
}
  1. Проверьте синтаксис и перезагрузите NGINX:
sudo nginx -t
sudo systemctl reload nginx.service

Замечания по SSL: используйте корректные пути к pem/key файлам. В продакшне дополнительно настройте HSTS, OCSP Stapling и современные cipher suite.

Шаг 6 — Установка Shopware

  1. Создайте корневую директорию сайта и задайте владельца:
sudo mkdir -p /var/www/shopware
sudo chown -R {your_user}:{your_user} /var/www/shopware
cd /var/www/shopware
  1. Скачайте и распакуйте дистрибутив (пример для конкретной версии):
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, если есть новая версия.

  1. Измените владельца на nginx (если PHP-FPM работает под nginx):
sudo chown -R nginx:nginx /var/www/shopware
  1. Отредактируйте /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
  1. Отрегулируйте php.ini:
  • memory_limit = 256M
  • upload_max_filesize = 6M (увеличьте при необходимости для импорта больших файлов)
  • allow_url_fopen = On (если требуется)

После изменений перезагрузите PHP-FPM:

sudo systemctl reload php-fpm.service
  1. Откройте ваш домен в браузере и пройдите веб‑установщик. Админ-панель доступна по /backend: http://example.com/backend

Шаг 7 — Завершение установки через веб‑мастер

Мастер установки Shopware — выбор языка

Проверка системных требований для Shopware

Принятие лицензионного соглашения Shopware

Ввод параметров базы данных Shopware

Идёт установка таблиц базы данных

Успешная инициализация базы данных

Выбор лицензии Shopware

Заполнение основных настроек магазина

Установка завершена

Страница входа в панель администратора Shopware

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

Безопасность и жёсткая настройка

Рекомендации для безопасности производства:

  • Отключите доступ к /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

Краткая методология установки

  1. Подготовьте систему и обновите пакеты.
  2. Установите PHP и расширения.
  3. Настройте БД и получите сертификат.
  4. Настройте NGINX и права на файлы.
  5. Установите Shopware и пройдите веб‑мастер.
  6. Тестируйте, оптимизируйте и настройте мониторинг.

1‑строчный глоссарий

  • PHP-FPM — процессный менеджер PHP для обработки PHP-запросов.
  • NGINX — веб-сервер и reverse proxy.
  • acme.sh — shell-клиент для получения TLS-сертификатов от Let’s Encrypt.
  • IonCube — загрузчик, требуемый для некоторых коммерческих PHP-плагинов.

Быстрый контрольный список перед запуском в продакшн

  • TLS настроен и ОС обновлена
  • Резервные копии работают
  • Мониторинг и логирование настроены
  • Права файлов ограничены
  • План отката при обновлениях есть

Дополнительные ресурсы

Важно: перед любыми изменениями в продакшн-среде сделайте бэкап.

Итог

Установка Shopware на CentOS 7 с NGINX возможна и достаточно прямолинейна при соблюдении требований: правильно установленный PHP с нужными расширениями, настроенная БД и корректные права на файлы. После установки пройдите веб‑мастер и выполните базовую безопасную настройку и оптимизацию.

Примечание: держите систему и Shopware в актуальном состоянии и тестируйте обновления в изолированном окружении.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Отключить Google Password Manager в Chrome
Security

Отключить Google Password Manager в Chrome

Как работает swappiness в Linux — мифы и рекомендации
Linux

Как работает swappiness в Linux — мифы и рекомендации

Как безопасно смотреть солнечное затмение
Наука

Как безопасно смотреть солнечное затмение

Полезные советы по Ring Doorbell
Умный дом

Полезные советы по Ring Doorbell

NPR на iPhone: обзор и советы
Обзоры

NPR на iPhone: обзор и советы

Калибровка нескольких мониторов — пошагово
Hardware

Калибровка нескольких мониторов — пошагово