Обзор развертывания 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.