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

Установка Magento 2.1 на CentOS 7 с Nginx, PHP-FPM и MySQL 5.7

8 min read Magento Обновлено 27 Nov 2025
Установка Magento 2.1 на CentOS 7
Установка Magento 2.1 на CentOS 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 nginx

Nginx слушает порт 80; проверить можно с помощью netstat:

netstat -plntu

Установка Nginx на CentOS 7

Если команда возвращает “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 mysqld

MySQL создаёт временный 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;

Смена временного пароля MySQL

Создайте базу и пользователя для Magento (пример):

create database magentodb;
create user magentouser@localhost identified by 'Magento123@';
grant all privileges on magentodb.* to magentouser@localhost identified by 'Magento123@';
flush privileges;

Создание базы и пользователя MySQL

Примечание: используйте сильные пароли и, при необходимости, ограничьте доступ по 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

Установка Composer на CentOS 7

Скачайте исходники 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

Установка зависимостей Magento через Composer

Настройка виртуального хоста 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- на ваши значения.

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

После успешной установки задайте права и владельца:

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

Установите утилиту управления 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

Настройка firewalld


Шаг 6 — Тестирование

Откройте браузер и перейдите по base-url, например:

magento.hakase-labs.com

Вы должны увидеть домашнюю страницу Magento.

Домашняя страница Magento

Панель администратора доступна по адресу adminlogin (в примере):

magento.hakase-labs.com/adminlogin

Войдите под admin-пользователем.

Страница входа в админку Magento

Панель администратора Magento

Поздравляем — 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)

  1. Подготовка сервера: обновление системы, установка EPEL.
  2. Установка Nginx, PHP-FPM, MySQL.
  3. Настройка пользователей, прав и SELinux контекстов.
  4. Установка Composer и зависимостей Magento.
  5. Настройка виртуального хоста и запуск установки Magento.
  6. Настройка cron, мониторинга и резервного копирования.
  7. Тестирование функционала магазина и проверка логов.

Глоссарий (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 и автоматизированные бекапы.


Ссылки

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

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

Отключение Google Analytics в Nintendo Switch eShop
Privacy

Отключение Google Analytics в Nintendo Switch eShop

Ошибка 500 в Google Drive — как исправить
Техподдержка

Ошибка 500 в Google Drive — как исправить

Резервное копирование сохранений Stardew Valley
Игры

Резервное копирование сохранений Stardew Valley

COUNT в Excel: COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS
Excel

COUNT в Excel: COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS

Windows Sandbox — нет интернета: как исправить
Техподдержка

Windows Sandbox — нет интернета: как исправить

Как безопасно извлечь USB с Chromebook
Инструкции

Как безопасно извлечь USB с Chromebook