Установка Magento 2.1 на CentOS 7 с Nginx, PHP-FPM и MySQL 5.7
К чему готовиться
Magento — это платформа для электронной коммерции с архитектурой MVC, написанная на PHP и использующая MySQL/MariaDB. В этом руководстве показана установка Magento 2.1 на CentOS 7, используя Nginx, PHP-FPM 7 и MySQL 5.7; предполагается, что у вас есть root-доступ или эквивалент sudo.
Важно: Magento 2.1 устарела по сравнению с новыми релизами. Инструкции полезны для тестовой среды или поддержки старых проектов; для продакшена рекомендуется рассмотреть более свежие версии Magento и PHP.
План статьи
- Установка Nginx
- Установка и настройка PHP-FPM
- Установка MySQL 5.7
- Установка и настройка Magento
- Настройка SELinux и firewalld
- Тестирование и восстановление
- Рекомендации по безопасности и эксплуатационные чек-листы
- Отладка и распространённые ошибки
- Критерии приёмки и тесты
Шаг 1 — Установка Nginx
В этом шаге мы установим Nginx из репозитория EPEL. На CentOS EPEL не включён по умолчанию, поэтому сначала установим epel-release.
Установите репозиторий EPEL:
yum -y install epel-releaseУстановите Nginx:
yum -y install nginxЗапустите Nginx и добавьте его в автозагрузку:
systemctl start nginx
systemctl enable nginxNginx слушает порт 80; проверить можно с помощью netstat:
netstat -plntu
Если команда возвращает “command not found”, установите net-tools:
yum -y install net-toolsВажно: на современных серверах netstat заменяется ss. Альтернатива:
ss -plntuШаг 2 — Установка и настройка PHP-FPM
Мы будем использовать PHP-FPM 7 (php70w из webtatic в исходном примере). Если вы работаете в текущем окружении, рассмотрите репозитории с более свежими пакетами (Remi, SCL или официальные сборки). В данном руководстве используется webtatic как в оригинале.
Добавьте репозиторий webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmУстановите PHP-FPM и расширения, необходимые Magento 2.1:
yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soapПосле установки отредактируйте php.ini и конфигурацию PHP-FPM.
Откройте php.ini:
vim /etc/php.iniИзмените параметры:
cgi.fix_pathinfo=0
memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On
session.save_path = "/var/lib/php/session"Сохраните и выйдите.
Отредактируйте конфигурацию pool в php-fpm (www.conf):
vim /etc/php-fpm.d/www.confИзмените пользователя и группу на nginx:
user = nginx
group = nginxНастройка прослушивания через Unix-сокет:
listen = /var/run/php/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660Добавьте переменные окружения (если закомментированы):
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmpСоздайте каталоги для сессий и сокета и установите владельца:
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
mkdir -p /run/php/
chown -R nginx:nginx /run/php/Запустите php-fpm и добавьте в автозагрузку:
systemctl start php-fpm
systemctl enable php-fpmПроверьте, что php-fpm слушает сокет:
netstat -pl | grep php-fpm.sockПримечание: если netstat недоступен, используйте ss:
ss -xl | grep php-fpm.sockВажно: убедитесь, что PHP расширения соответствуют требованиям Magento 2.1; некоторые модули могут называться иначе в других репозиториях.
Шаг 3 — Установка MySQL 5.7
Magento 2.1 поддерживает MySQL 5.6 и 5.7. Здесь мы установим MySQL 5.7 из официального репозитория.
Добавьте репозиторий и установите сервер:
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
yum install mysql-community-serverЗапустите сервер и включите автозагрузку:
systemctl start mysqld
systemctl enable mysqldMySQL создаёт временный root-пароль, который записан в лог mysqld.log. Найти его можно так:
grep 'temporary' /var/log/mysqld.logПодключитесь к shell MySQL с временным паролем:
mysql -u root -p
# Введите временный парольИзмените пароль root на надёжный:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hakase-labs123@';
flush privileges;
Создайте базу и пользователя для Magento (пример):
create database magentodb;
create user magentouser@localhost identified by 'Magento123@';
grant all privileges on magentodb.* to magentouser@localhost identified by 'Magento123@';
flush privileges;
Примечание: используйте сильные пароли и, при необходимости, ограничьте доступ по IP или через socket.
Шаг 4 — Установка и настройка Magento
В веб-корне используем /var/www/magento2. Для установки пакетов требуется composer.
Установка Composer:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
composer -v
Скачайте исходники Magento 2.1 и распакуйте:
cd /var/www/
wget https://github.com/magento/magento2/archive/2.1.zip
yum -y install unzip
unzip 2.1.zip
mv magento2-2.1 magento2Установите зависимости через composer:
cd /var/www/magento2
composer install -v
Настройка виртуального хоста Nginx. Создайте конфигурацию /etc/nginx/conf.d/magento.conf:
cd /etc/nginx/
vim conf.d/magento.confВставьте:
upstream fastcgi_backend {
server unix:/run/php/php-fpm.sock;
}
server {
listen 80;
server_name magento.hakase-labs.com;
set $MAGE_ROOT /var/www/magento2;
set $MAGE_MODE developer;
include /var/www/magento2/nginx.conf.sample;
}Проверьте конфигурацию и перезапустите Nginx:
nginx -t
systemctl restart nginxУстановка Magento через командную строку. Зайдите в каталог /var/www/magento2 и выполните setup:install с параметрами вашей среды:
cd /var/www/magento2
bin/magento setup:install --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \
--db-user="magentouser" \
--db-password="Magento123@" \
--language="en_US" \
--currency="USD" \
--timezone="America/New_York" \
--use-rewrites=1 \
--use-secure=0 \
--base-url="http://magento.hakase-labs.com" \
--base-url-secure="https://magento.hakase-labs.com" \
--admin-user=adminuser \
--admin-password=admin123@ \
[email protected] \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-databaseПояснение параметров: измените –key, –db-, –base-url, –admin- на ваши значения.

После успешной установки задайте права и владельца:
chmod 700 /var/www/magento2/app/etc
chown -R nginx:nginx /var/www/magento2Добавьте cron для Magento (чтобы индексаторы и задачи работали корректно). Создаётся crontab для пользователя nginx:
crontab -u nginx -eДобавьте:
* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.logШаг 5 — Настройка SELinux и firewalld
Мы сохраняем SELinux в режиме Enforcing. Проверьте статус:
sestatus
Установите утилиту управления SELinux:
yum -y install policycoreutils-pythonУстановите контексты безопасности для директорий Magento:
cd /var/www/
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/app/etc(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/var(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/media(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/static(/.*)?'
restorecon -Rv '/var/www/magento2/'SELinux конфигурация завершена.
Настройка firewalld:
yum -y install firewalld
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --list-all
Шаг 6 — Тестирование
Откройте браузер и перейдите по base-url, например:
magento.hakase-labs.com
Вы должны увидеть домашнюю страницу Magento.

Панель администратора доступна по адресу adminlogin (в примере):
magento.hakase-labs.com/adminlogin
Войдите под admin-пользователем.


Поздравляем — Magento 2.1 установлена с Nginx, PHP-FPM 7 и MySQL 5.7 на CentOS 7.
Отладка и распространённые ошибки
Важно: ниже — распространённые симптомы и быстрые решения.
Ошибка 502 Bad Gateway в Nginx
- Причина: php-fpm не запущен или сокет отличается.
- Проверка: systemctl status php-fpm; ss -xl | grep php-fpm.sock
- Решение: скорректируйте listen в /etc/php-fpm.d/www.conf и upstream в конфигурации Nginx, затем перезапустите php-fpm и nginx.
Ошибки прав доступа (403) при попытке открыть статические файлы
- Причина: права файлов/директорий или SELinux контекст.
- Решение: chown -R nginx:nginx /var/www/magento2; restorecon -Rv /var/www/magento2/; проверьте права каталога pub.
Не выполняются cron-задачи (индексация не работает)
- Причина: cron не запущен от правильного пользователя или PHP CLI недоступен.
- Проверка: sudo -u nginx crontab -l
- Решение: убедитесь, что маршруты /usr/bin/php корректны, и crontab добавлен для nginx.
Ошибки composer (память/таймаут)
- Решение: composer install можно запускать с увеличенным memory_limit (php -d memory_limit=2G /usr/bin/composer install) или использовать swap.
MySQL соединение отклонено
- Причина: MySQL слушает только socket или bind-address настроен.
- Решение: проверьте my.cnf, разрешите соединения с localhost через TCP или используйте socket в DSN.
Альтернативные подходы и совместимость
- Apache + PHP-FPM: проще, если команда привыкла к .htaccess. Nginx даёт лучший контроль над проксированием и производительностью статических ресурсов.
- MariaDB вместо MySQL: совместима с Magento 2.1, широко используется в продакшне.
- Использовать более новые версии PHP (7.2, 7.3 и выше) и Magento 2.3/2.4 для лучшей безопасности и поддержки.
- Контейнеризация: Docker-контейнеры или Kubernetes ускоряют повторяемость развёртывания.
Чек-листы по ролям
Администратор сервера (Sysadmin)
- Проверить доступы root/sudo
- Обновить систему и установить EPEL
- Установить и запустить Nginx, PHP-FPM, MySQL
- Настроить firewall и SELinux
- Настроить бекапы базы и файлов
Разработчик
- Установить Composer и зависимости
- Проверить режим Magento (developer/production)
- Настроить права и исключения для IDE
- Тестировать расширения в безопасной среде
Операционный инженер (DevOps)
- Настроить мониторинг (CPU, RAM, диск, SLI)
- Автоматизировать развёртывание (Ansible, Terraform)
- Настроить SSL/TLS и HTTPS редиректы
Специалист по безопасности
- Проверить и закрыть ненужные сервисы
- Настроить HTTPS (Let’s Encrypt/CA)
- Внедрить WAF и правила для ботов
Руководство по безопасности и эксплуатация
- Всегда используйте HTTPS в продакшене. Настройте TLS 1.2/1.3 и отключите устаревшие шифры.
- Храните секреты вне репозитория; используйте менеджеры секретов или переменные окружения.
- Ограничьте доступ к базе данных по принципу наименьших привилегий и по IP, если возможно.
- Регулярно обновляйте компоненты: OS, PHP, MySQL, Magento, модули.
- Включите аудит логов и мониторинг на предмет неожиданных изменений файлов.
Миграция с Magento 2.1 на более новые версии — советы
- Проведите полный бэкап (база + файловая система) перед апгрейдом.
- Проверьте совместимость установленных расширений и тем с целевой версией.
- Подготовьте staging-среду и выполните dry-run обновления.
- Обновляйте PHP до версии, поддерживаемой целевой версии Magento.
Критерии приёмки
- Веб-интерфейс магазина доступен по HTTPS и возвращает 200 для главной страницы.
- Админ-панель доступна и проходит авторизацию.
- Cron выполняется и индексатор завершает работу (нет устаревших сообщений в логах).
- Nginx и php-fpm работают под пользователем nginx и читают файлы магазина.
- SELinux и firewall настроены без блокировок для нормальной работы приложения.
Тесты и проверка после установки
Минимальные тестовые шаги:
- Открыть главную страницу магазина; проверить статические ресурсы.
- Войти в админку; проверить создание товара и индексацию.
- Проверить checkout: добавить товар в корзину и пройти тестовую оплату (sandbox).
- Проверить логи: /var/log/nginx/, /var/log/php-fpm/, var/log/magento.cron.log.
Часто возникающие вопросы и ответы
Q: Можно ли устанавливать Magento 2.1 на продакшн в 2025 году? A: Технически можно, но поддержка безопасности и обновлений устарела — лучше планировать миграцию.
Q: Нужен ли Redis/Memcached? A: Да, для улучшения производительности кеширования рекомендуются Redis для кэша и session storage.
Q: Как настроить SSL? A: Используйте certbot/Let’s Encrypt или коммерческий сертификат; обновите Nginx-конфигурацию для перенаправления 80->443.
Краткая методология развёртывания (SOP)
- Подготовка сервера: обновление системы, установка EPEL.
- Установка Nginx, PHP-FPM, MySQL.
- Настройка пользователей, прав и SELinux контекстов.
- Установка Composer и зависимостей Magento.
- Настройка виртуального хоста и запуск установки Magento.
- Настройка cron, мониторинга и резервного копирования.
- Тестирование функционала магазина и проверка логов.
Глоссарий (1‑строчные определения)
- Magento: платформа электронной коммерции на PHP.
- Nginx: веб-сервер и обратный прокси.
- PHP-FPM: FastCGI Process Manager для PHP.
- SELinux: механизм контроля доступа на основе политик безопасности.
- Composer: менеджер зависимостей PHP.
Заключение
Установка Magento 2.1 на CentOS 7 с Nginx, PHP-FPM и MySQL 5.7 требует внимания к правам, SELinux и cron-задачам. Следуйте чек-листам, проверяйте логи и обеспечьте HTTPS в продакшне. Для долгосрочной стабильности рассматривайте обновление до поддерживаемой версии Magento и PHP.
Важно: если цель — продакшн, планируйте миграцию на более современные релизы Magento и PHP, внедряйте CI/CD и автоматизированные бекапы.
Ссылки
Похожие материалы
Отключение Google Analytics в Nintendo Switch eShop
Ошибка 500 в Google Drive — как исправить
Резервное копирование сохранений Stardew Valley
COUNT в Excel: COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS
Windows Sandbox — нет интернета: как исправить