Обзор развертывания 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)
Процесс установки включает следующие шаги:
-
Установка зависимостей: Системные пакеты, включая PHP 8.3 с расширениями (bcmath, xml, curl, gd, intl, dom, mysql, soap, zip, mbstring), Composer, MariaDB, OpenSearch, OpenSearch-Dashboards и Redis, устанавливаются через
apt. -
Настройка Composer: Ключи доступа к Magento настраиваются глобально для Composer, чтобы разрешить загрузку из репозитория Magento.
-
Создание проекта: Проект Magento создается в
/var/www/magentoс использованием командыcomposer create-project. -
Выполнение настройки: Выполняется команда
bin/magento setup:installсо следующими параметрами:-
Базовый URL:
https://magento<Server ID>.hostkey.in/ -
Хост базы данных:
localhost -
Имя базы данных:
magento -
Поисковый движок:
opensearch -
Пользователь администратора:
root -
Язык:
en_US -
Валюта:
USD
-
-
После установки:
-
Статический контент развертывается для областей 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, очищаются.
Базы данных¶
Приложение использует два основных сервиса баз данных:
-
MariaDB:
-
Сервис:
mariadb.service -
Хост:
localhost -
Имя базы данных:
magento -
Пользователь:
magento -
Хранилище: Локальное дисковое хранилище, управляемое сервисом MariaDB.
-
-
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