Обзор развертывания Magento Open Source на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо выполнить следующие условия:
-
Операционная система: Ubuntu 22.04 (jammy).
-
Права доступа: наличие прав суперпользователя (root) или возможность выполнения команд через
sudo. -
Сетевые требования: доступ к внешним репозиториям для загрузки пакетов и сертификатов.
-
Доменное имя: наличие настроенной зоны DNS, указывающей на IP-адрес сервера.
-
Порты:
-
Порт 80 и 443 для веб-сервера Apache2.
-
Порт 9200 для OpenSearch (локально).
-
Порт 9300 для кластеризации OpenSearch (локально).
-
Порт 5672 для RabbitMQ (если включен).
-
Порт 6379 для Redis.
Структура файлов и каталогов¶
Приложение и его компоненты размещаются в следующих директориях:
-
Каталог с исходным кодом Magento:
/var/www/magento. -
Публичный веб-корень:
/var/www/magento/pub. -
Конфигурация веб-сервера Apache2:
/etc/apache2/sites-available/. -
Конфигурация OpenSearch:
/etc/opensearch/opensearch.yml. -
Конфигурация Redis:
/etc/redis/redis.conf. -
Сертификаты SSL от Let's Encrypt:
/etc/letsencrypt/live/. -
Логи веб-сервера:
${APACHE_LOG_DIR}/.
Процесс установки приложения¶
Установка выполняется путем последовательного развертывания зависимостей и самого приложения:
-
Обновление пакетов и установка базовых утилит:
curl,lsb-release,gnupg2,ca-certificates,unzip,software-properties-common. -
Установка PHP и необходимых расширений:
-
Версия PHP определяется переменной
php_version. -
Устанавливаются пакеты:
php,libapache2-mod-php,php-cli,php-bcmath,php-xml,php-curl,php-gd,php-intl,php-dom,php-mysql,php-soap,php-zip,php-mbstring. -
Установка Composer через репозиторий Ubuntu.
-
Установка базы данных MariaDB:
-
Пакеты:
mariadb-server,mariadb-backup,python3-mysqldb. -
Сервис
mariadb.serviceзапускается и включается в автозагрузку. -
Установка OpenSearch и OpenSearch-Dashboards:
-
Скачивание
.debпакетов с официального репозитория. -
Установка через
dpkg. -
Настройка конфигурации
/etc/opensearch/opensearch.yml:-
Имя кластера:
opensearch. -
Имя узла:
node-1. -
Хост сети:
127.0.0.1. -
Порт HTTP:
9200. -
Отключение безопасности:
plugins.security.disabled: true.
-
-
Запуск сервисов
opensearchиopensearch-dashboards. -
Установка Redis:
-
Пакет
redis-server. -
Настройка супервизора в
redis.confнаsystemd. -
Запуск и включение сервиса
redis.service. -
Установка RabbitMQ (опционально):
-
Добавление репозиториев Team RabbitMQ.
-
Установка Erlang и
rabbitmq-server. -
Развертывание Magento:
-
Создание проекта через команду
composer create-project. -
Установка через
bin/magento setup:installс параметрами базы данных, администратора и поискового движка (OpenSearch). -
Генерация статического контента и компиляция зависимостей.
Права доступа и безопасность¶
Настройка прав доступа и безопасности включает следующие шаги:
-
Права на файлы в директории Magento:
-
Файлам в каталогах
var,generated,vendor,pub/static,pub/media,app/etcустанавливается право записи для группы (g+w). -
Директориям устанавливается право записи и стикбит для группы (
g+ws). -
Группой владельца для всех файлов и директорий назначается
www-data. -
Скрипту
bin/magentoустанавливается право исполнения для владельца (u+x). -
Отключение двухфакторной аутентификации в модулях
Magento_AdminAdobeImsTwoFactorAuthиMagento_TwoFactorAuth. -
Принудительное использование HTTPS через конфигурацию Apache2 и настройки Magento.
-
Удаление тестовых ключей доступа к репозиторию Magento из файла
auth.jsonпользователя root.
Базы данных¶
Приложение использует следующие базы данных и хранилища:
-
MariaDB:
-
Хост:
localhost(или значение переменнойdb_host). -
Имя базы данных: значение переменной
db_name. -
Пользователь: значение переменной
db_user. -
Пароль: значение переменной
db_password. -
Сервис
mariadb.serviceработает в фоновом режиме. -
OpenSearch:
-
Хост:
127.0.0.1. -
Порт:
9200. -
Префикс индекса: значение переменной
opensearch_index_prefix. -
Таймаут: значение переменной
opensearch_timeout. -
Используется как движок поиска для Magento.
-
Redis:
-
Используется для кэширования сессий и данных.
-
Работает на локальном хосте.
Прокси серверы¶
В качестве веб-сервера используется Apache2 с конфигурацией виртуального хоста:
-
Конфигурационный файл создается в
/etc/apache2/sites-available/с именем, соответствующим домену. -
Документ корневой директории (
DocumentRoot) указывает на/var/www/magento/pub. -
Включен модуль
mod_rewriteдля обработки URL. -
Настроено автоматическое перенаправление с HTTP на HTTPS.
-
Установка и настройка SSL-сертификатов:
-
Используются утилиты
certbotиpython3-certbot-apache. -
Сертификат выдается для домена, указанного в конфигурации.
-
Процесс автоматический, без интерактивного ввода, с принятием условий использования.
-
Включено автоматическое перенаправление на HTTPS.
Настройки прав¶
Права на файлы и директории приложения настроены следующим образом:
-
Владелец файлов:
root(или текущий пользователь установки), группа:www-data. -
Рекурсивная установка прав для всей директории проекта.
-
Специфические права для каталогов, требующих записи веб-сервером:
-
var,generated,vendor,pub/static,pub/media,app/etc. -
Скрипт
bin/magentoимеет права на исполнение.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через системный менеджер systemd:
-
Apache2:
-
Перезагрузка конфигурации:
systemctl reload apache2.service. -
MariaDB:
-
Запуск и включение в автозагрузку:
systemctl start mariadb.serviceиsystemctl enable mariadb.service. -
OpenSearch:
-
Запуск и включение в автозагрузку:
systemctl start opensearchиsystemctl enable opensearch. -
OpenSearch-Dashboards:
-
Запуск и включение в автозагрузку:
systemctl start opensearch-dashboardsиsystemctl enable opensearch-dashboards. -
Redis:
-
Перезапуск и включение в автозагрузку:
systemctl restart redis.serviceиsystemctl enable redis.service. -
RabbitMQ:
-
Сервис запускается автоматически после установки пакета
rabbitmq-server.
Для управления задачами Magento (cron, компиляция, кэш) используются команды в директории проекта:
-
Установка планировщика задач:
bin/magento cron:install. -
Компиляция зависимостей:
bin/magento setup:di:compile. -
Развертывание статического контента:
bin/magento setup:static-content:deploy -f. -
Очистка кэша:
bin/magento cache:flush. -
Обновление конфигурации магазина:
bin/magento setup:store-config:set.