Перейти к содержанию

Обзор развертывания Magento на сервере

Предварительные требования и базовые условия

Для обеспечения совместимости и стабильности среда развертывания должна соответствовать следующим спецификациям:

  • Операционная система: Ubuntu 22.04 (Jammy Jellyfish).

  • Привилегии: Для установки системных пакетов и настройки сервисов требуются права root или привилегии sudo.

  • Часовой пояс: Системный часовой пояс настроен на UTC.

  • Сеть: Сервер должен иметь исходящий доступ в интернет для загрузки зависимостей, пакетов Composer и SSL-сертификатов.

  • Порты: Порты 80 и 443 должны быть открыты для веб-трафика. Внутренние сервисы используют специфические порты, описанные в разделе «Доступные порты».

FQDN финальной панели

Приложение доступно по следующему формату Полного Квалифицированного Доменного Имени (FQDN) в домене hostkey.in:

  • Формат: magento<Server ID>.hostkey.in

  • Протокол: Для всех подключений принудительно используется HTTPS.

  • Пример: Если Server ID равен 123, адрес будет magento123.hostkey.in.

Структура файлов и каталогов

Приложение и поддерживающие его сервисы организованы в следующей структуре каталогов:

  • Корневая директория приложения: /var/www/magento

  • Корневая директория публичных документов: /var/www/magento/pub

  • Конфигурация Apache: /etc/apache2/sites-available/magento<Server ID>.hostkey.in.conf

  • Конфигурация OpenSearch: /etc/opensearch/opensearch.yml

  • Конфигурация Redis: /etc/redis/redis.conf

  • SSL-сертификаты: /etc/letsencrypt/live/magento<Server ID>.hostkey.in/

  • Глобальная конфигурация Composer: /root/.config/composer/auth.json

Процесс установки приложения

Приложение Magento Open Source устанавливается с использованием Composer и нативного скрипта настройки. Развертываются следующие версии:

  • Версия PHP: 8.3

  • Версия Magento: Community Edition (Project Community Edition)

  • Поисковый движок: OpenSearch (Версия 2.12.0)

  • База данных: MariaDB (Версия 10.6)

Процесс установки включает следующие шаги:

  1. Установка зависимостей: Системные пакеты, включая PHP 8.3 с расширениями (bcmath, xml, curl, gd, intl, dom, mysql, soap, zip, mbstring), Composer, MariaDB, OpenSearch, OpenSearch-Dashboards и Redis, устанавливаются через apt.

  2. Настройка Composer: Ключи доступа к Magento настраиваются глобально для Composer, чтобы разрешить загрузку из репозитория Magento.

  3. Создание проекта: Проект Magento создается в /var/www/magento с использованием команды composer create-project.

  4. Выполнение настройки: Выполняется команда bin/magento setup:install со следующими параметрами:

    • Базовый URL: https://magento<Server ID>.hostkey.in/

    • Хост базы данных: localhost

    • Имя базы данных: magento

    • Поисковый движок: opensearch

    • Пользователь администратора: root

    • Язык: en_US

    • Валюта: USD

  5. После установки:

    • Статический контент развертывается для областей frontend и adminhtml.

    • Выполняется компиляция внедрения зависимостей (setup:di:compile).

    • Задача cron устанавливается через bin/magento cron:install.

    • Модули двухфакторной аутентификации отключаются.

    • В конфигурации магазина принудительно включается HTTPS.

Права доступа и безопасность

Меры безопасности реализованы на уровне системы и приложения:

  • SSL/TLS: Сертификаты Let's Encrypt выпускаются и управляются через Certbot. Apache настроен на перенаправление всего HTTP-трафика (порт 80) на HTTPS (порт 443).

  • Межсетевой экран (Firewall): Конфигурация Apache ограничивает доступ к корневой директории документов и включает переадресацию URL.

  • Права пользователей:

    • Пользователь веб-сервера — www-data.

    • Директория Magento и все поддиректории принадлежат пользователю www-data.

    • Модули двухфакторной аутентификации (Magento_AdminAdobeImsTwoFactorAuth и Magento_TwoFactorAuth) отключены.

  • Безопасность Composer: После установки временные учетные данные репозитория Magento, хранящиеся в /root/.config/composer/auth.json, очищаются.

Базы данных

Приложение использует два основных сервиса баз данных:

  1. MariaDB:

    • Сервис: mariadb.service

    • Хост: localhost

    • Имя базы данных: magento

    • Пользователь: magento

    • Хранилище: Локальное дисковое хранилище, управляемое сервисом MariaDB.

  2. OpenSearch:

    • Сервис: opensearch.service

    • Хост: localhost

    • Порт: 9200

    • Префикс индекса: magento2

    • Таймаут: 5 секунд

    • Конфигурация: Плагины безопасности отключены (plugins.security.disabled: true), чтобы разрешить локальное подключение без аутентификации для этого развертывания.

Прокси-серверы

Apache2 выступает в роли веб-сервера и обратного прокси для приложения:

  • ПО сервера: Apache2

  • Виртуальный хост: Настроен в /etc/apache2/sites-available/magento<Server ID>.hostkey.in.conf.

  • Корневая директория документов: Указывает на /var/www/magento/pub.

  • Модули: Модуль rewrite включен для обработки переадресации URL Magento.

  • Завершение SSL: Apache обрабатывает завершение SSL, используя сертификаты, предоставленные Certbot.

  • Перенаправления: Весь трафик на порту 80 постоянно перенаправляется на HTTPS.

Настройки прав доступа

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

  • Владение: Вся древовидная структура директории /var/www/magento принадлежит группе www-data.

  • Права на файлы: Файлы в директориях var, generated, vendor, pub/static, pub/media и app/etc настроены на запись группой (g+w).

  • Права на директории: Директории в тех же путях настроены на запись группой с установленным битом липкости (g+ws).

  • Исполняемый файл: Скрипт bin/magento настроен на выполнение пользователем (u+x).

Расположение файлов конфигурации и данных

Ключевые файлы конфигурации и места хранения данных указаны ниже:

Компонент Путь к файлу Описание
Конфигурация сайта Apache /etc/apache2/sites-available/magento<Server ID>.hostkey.in.conf Конфигурация виртуального хоста для приложения.
Конфигурация OpenSearch /etc/opensearch/opensearch.yml Настройки кластера и сети OpenSearch.
Конфигурация Redis /etc/redis/redis.conf Конфигурация сервера Redis.
Конфигурация Magento /var/www/magento/app/etc/config.php Конфигурация приложения Magento (генерируется при установке).
Аутентификация Composer /root/.config/composer/auth.json Аутентификация Composer (очищается после установки).
SSL-сертификаты /etc/letsencrypt/live/magento<Server ID>.hostkey.in/ Файлы сертификатов Let's Encrypt.
Данные приложения /var/www/magento Корневая директория, содержащая весь код и данные приложения.

Доступные порты для подключения

Следующие порты используются развернутыми сервисами:

  • 80: HTTP (Перенаправляет на HTTPS).

  • 443: HTTPS (Доступ к веб-приложению).

  • 9200: OpenSearch HTTP API (Только localhost).

  • 6379: Redis (Только localhost).

  • 3306: MariaDB (Только localhost).

Запуск, остановка и обновление

Управление сервисами осуществляется с помощью systemd. Для управления приложением и его зависимостями используются следующие команды:

  • Apache2:

    • Запуск: systemctl start apache2

    • Остановка: systemctl stop apache2

    • Перезагрузка: systemctl reload apache2

    • Включение: systemctl enable apache2

  • MariaDB:

    • Запуск: systemctl start mariadb

    • Остановка: systemctl stop mariadb

    • Включение: systemctl enable mariadb

  • OpenSearch:

    • Запуск: systemctl start opensearch

    • Остановка: systemctl stop opensearch

    • Включение: systemctl enable opensearch

  • OpenSearch-Dashboards:

    • Запуск: systemctl start opensearch-dashboards

    • Остановка: systemctl stop opensearch-dashboards

    • Включение: systemctl enable opensearch-dashboards

  • Redis:

    • Запуск: systemctl start redis

    • Остановка: systemctl stop redis

    • Перезапуск: systemctl restart redis

    • Включение: systemctl enable redis

Для обновления кода приложения Magento или статического контента из директории /var/www/magento выполняются следующие команды:

  • Развертывание статического контента: php bin/magento setup:static-content:deploy -f

  • Компиляция зависимостей: php bin/magento setup:di:compile

  • Очистка кэша: php bin/magento cache:flush

  • Установка cron: bin/magento cron:install

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×