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

Обзор развертывания 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
ИИ Помощник ×