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

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

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

Установка выполняется путем последовательного развертывания зависимостей и самого приложения:

  1. Обновление пакетов и установка базовых утилит: curl, lsb-release, gnupg2, ca-certificates, unzip, software-properties-common.
  2. Установка PHP и необходимых расширений:
  3. Версия PHP определяется переменной php_version.
  4. Устанавливаются пакеты: 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.
  5. Установка Composer через репозиторий Ubuntu.
  6. Установка базы данных MariaDB:
  7. Пакеты: mariadb-server, mariadb-backup, python3-mysqldb.
  8. Сервис mariadb.service запускается и включается в автозагрузку.
  9. Установка OpenSearch и OpenSearch-Dashboards:
  10. Скачивание .deb пакетов с официального репозитория.
  11. Установка через dpkg.
  12. Настройка конфигурации /etc/opensearch/opensearch.yml:
    • Имя кластера: opensearch.
    • Имя узла: node-1.
    • Хост сети: 127.0.0.1.
    • Порт HTTP: 9200.
    • Отключение безопасности: plugins.security.disabled: true.
  13. Запуск сервисов opensearch и opensearch-dashboards.
  14. Установка Redis:
  15. Пакет redis-server.
  16. Настройка супервизора в redis.conf на systemd.
  17. Запуск и включение сервиса redis.service.
  18. Установка RabbitMQ (опционально):
  19. Добавление репозиториев Team RabbitMQ.
  20. Установка Erlang и rabbitmq-server.
  21. Развертывание Magento:
  22. Создание проекта через команду composer create-project.
  23. Установка через bin/magento setup:install с параметрами базы данных, администратора и поискового движка (OpenSearch).
  24. Генерация статического контента и компиляция зависимостей.

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

Настройка прав доступа и безопасности включает следующие шаги:

  • Права на файлы в директории 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.
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×