Установка Magento · 22 min read · Oct 19, 2025

Как установить Magento eCommerce Suite на Rocky Linux 9 с Elasticsearch

Magento — это платформа электронной коммерции с открытым исходным кодом, написанная на PHP. Она была приобретена Adobe в 2018 году. Она также предлагается как коммерческий и облачный продукт. Вы можете использовать Magento для создания профессиональных интернет-магазинов с высокой пропускной способностью. Она предлагает как режим одного магазина, так и режим нескольких магазинов. В ней много модулей для расширения функциональности.

В этом руководстве мы установим открытую версию сообщества Magento. Она предлагает все функции, необходимые для настройки профессионального интернет-магазина. Мы также установим Elasticsearch для поиска по каталогу продуктов, Redis для сессий и файлового кэша, и будем обслуживать его с помощью сервера Nginx.

Предварительные требования

  • Сервер с Rocky Linux 9 с минимум 2 ГБ ОЗУ. Вам может понадобиться больше ОЗУ в зависимости от ваших требований.
  • Непривилегированный пользователь с правами sudo.
  • Полностью квалифицированное доменное имя (FQDN) для сервера, magento.example.com
  • Убедитесь, что все обновлено. $ sudo dnf update
  • Несколько пакетов, которые нужны вашей системе. $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y Некоторые из этих пакетов могут уже быть установлены на вашей системе.

Шаг 1 - Настройка брандмауэра

Первый шаг — настроить брандмауэр. Rocky Linux использует брандмауэр Firewalld. Проверьте статус брандмауэра.

$ sudo firewall-cmd --state
running

Брандмауэр работает с различными зонами, и публичная зона является той, которую мы будем использовать по умолчанию. Перечислите все службы и порты, активные на брандмауэре.

$ sudo firewall-cmd --permanent --list-services

Он должен показать следующий вывод.

cockpit dhcpv6-client ssh

Разрешите порты HTTP и HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Проверьте статус брандмауэра еще раз.

$ sudo firewall-cmd --permanent --list-services

Вы должны увидеть аналогичный вывод.

cockpit dhcpv6-client http https ssh

Перезагрузите брандмауэр, чтобы применить изменения.

$ sudo firewall-cmd --reload

Шаг 2 - Установка PHP и его расширений

Rocky Linux 9 поставляется с PHP 8.1 по умолчанию. Чтобы всегда оставаться на последней версии PHP или если вы хотите установить несколько версий PHP, нам нужно использовать репозиторий REMI.

Первый шаг — получить репозиторий Epel.

$ sudo dnf install epel-release -y

Далее установите репозиторий Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Проверьте доступные потоки PHP.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Подсказка: [d]ефолтный, [e]включен, [x]отключен, [i]установлен

Версия по умолчанию — 8.1. На момент написания этого руководства Magento совместима с PHP 8.2. Поэтому включите репозиторий PHP 8.2 от Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Вы можете установить его и необходимые расширения для Magento, выполнив следующую команду.

$ sudo dnf install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-opcache php-xsl php-sodium

Проверьте установку.

$ php --version
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies

Шаг 3 - Установка Composer

Composer — это инструмент управления зависимостями для PHP и он необходим для установки Magento.

Выполните следующие команды, чтобы скачать бинарный файл Composer. Magento требует Composer 2.2 LTS, поэтому мы изменили команду соответственно.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Установите Composer, переместив бинарный файл в директорию /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Проверьте установку, проверив его версию.

$ composer --version
Composer version 2.2.22 2023-09-29 10:53:45

Шаг 4 - Установка MariaDB

Rocky Linux 9 поставляется со старой версией MariaDB. Поэтому мы будем использовать репозиторий MariaDB для установки. На момент написания этого руководства Magento поддерживает MariaDB 10.6, которую мы и установим.

Импортируйте GPG-ключ MariaDB.

$ sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY

Создайте и откройте файл /etc/yum.repos.d/mariadb.repo для редактирования.

$ sudo nano /etc/yum.repos.d/mariadb.repo

Вставьте следующий код в него.

[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

$ sudo dnf install MariaDB-server

Проверьте версию MySQL.

$ mysql --version
mysql  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using  EditLine wrapper

Включите и запустите службу MariaDB.

$ sudo systemctl enable mariadb --now

Запустите скрипт безопасной установки MariaDB.

$ sudo mariadb-secure-installation

Вам будет предложено ввести пароль root. Нажмите Enter, так как мы не устанавливали пароль для него.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):

Далее вам будет предложено, хотите ли вы переключиться на метод аутентификации Unix socket. Плагин unix_socket позволяет использовать ваши учетные данные операционной системы для подключения к серверу MariaDB. Поскольку у вас уже есть защищенная учетная запись root, введите n, чтобы продолжить.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

Далее вам будет предложено, хотите ли вы изменить пароль root. Введите Y, чтобы продолжить и изменить пароль root на что-то надежное и безопасное.

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Далее вам будут заданы определенные вопросы для повышения безопасности MariaDB. Введите Y, чтобы удалить анонимных пользователей, запретить удаленный вход root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Вы можете войти в оболочку MariaDB, введя sudo mysql или sudo mariadb в командной строке.

Шаг 5 - Настройка MariaDB

Войдите в оболочку MariaDB.

$ sudo mariadb

Создайте базу данных для Magento.

MariaDB > CREATE DATABASE magento;

Создайте учетную запись SQL пользователя.

MariaDB > CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';

Предоставьте все привилегии на базу данных пользователю.

MariaDB > GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';

Обновите привилегии пользователей.

MariaDB > FLUSH PRIVILEGES;

Выйдите из оболочки.

MariaDB > exit

Шаг 6 - Установка Nginx

Rocky Linux 9 поставляется со старой версией Nginx. Вам нужно использовать официальный репозиторий Nginx, чтобы установить последнюю версию.

Создайте и откройте файл /etc/yum.repos.d/nginx.repo для редактирования.

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте следующий код в него.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Когда вы закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Мы будем устанавливать основную версию Nginx, поэтому включите пакет для нее.

$ sudo dnf config-manager --enable nginx-mainline

Установите Nginx.

$ sudo dnf install nginx -y

Проверьте установку.

$ nginx -v
nginx version: nginx/1.25.3

Включите и запустите службу сервера Nginx.

$ sudo systemctl enable nginx --now

Проверьте статус службы.

? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/nginx.service.d
             ??php-fpm.conf
     Active: active (running) since Fri 2024-01-26 06:46:17 UTC; 1s ago
       Docs: http://nginx.org/en/docs/
    Process: 19765 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 19767 (nginx)
      Tasks: 3 (limit: 12225)
     Memory: 3.1M
        CPU: 16ms
     CGroup: /system.slice/nginx.service
             ??19767 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??19768 "nginx: worker process"
             ??19769 "nginx: worker process"

Шаг 7 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Мы будем использовать установщик пакетов Snapd для этого. Поскольку Rocky Linux не поставляется с ним, установите установщик Snapd. Он требует репозиторий EPEL (Дополнительные пакеты для корпоративного Linux), чтобы работать. Но поскольку мы уже установили его на шаге 3, мы можем сразу перейти к делу.

Установите пакет Snapd.

$ sudo dnf install -y snapd

Включите и запустите службу Snap.

$ sudo systemctl enable snapd --now

Установите пакет Snap core и убедитесь, что ваша версия Snapd обновлена.

$ sudo snap install core && sudo snap refresh core

Создайте необходимые ссылки для работы Snapd.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку в директории /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте, работает ли Certbot правильно.

$ certbot --version
certbot 2.8.0

Выполните следующую команду, чтобы сгенерировать SSL-сертификат.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d magento.example.com

Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/magento.example.com на вашем сервере.

Сгенерируйте сертификат группы Диффи-Хеллмана.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из запланированных служб.

NEXT                        LEFT         LAST                        PASSED    UNIT                         ACTIVATES     
-------------------------------------------------------------------------------------------------------------------------------
Fri 2024-01-26 08:05:24 UTC 1h 1min left Fri 2024-01-26 06:35:00 UTC 29min ago dnf-makecache.timer          dnf-makecache.service
Fri 2024-01-26 14:20:42 UTC 7h left      Thu 2024-01-25 14:20:42 UTC 16h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2024-01-26 22:37:00 UTC 15h left     -                           -         snap.certbot.renew.timer     snap.certbot.renew.service

Выполните пробный запуск процесса, чтобы проверить, работает ли обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.

Шаг 8 - Установка Elasticsearch

Elasticsearch используется Magento для поиска продуктов. Мы установим Elasticsearch 7.x, используя его официальный репозиторий, так как это версия, совместимая с Magento 2.4.6, которая является последней доступной версией. На странице требований также упоминается Elasticsearch 8.5, но он не работает должным образом с Magento.

Импортируйте GPG-ключ Elasticsearch.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Создайте файл с именем elasticsearch.repo в директории /etc/yum.repos.d/ и откройте его для редактирования.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Вставьте следующий код в него.

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Когда вы закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Установите Elasticsearch.

$ sudo dnf install --enablerepo=elasticsearch elasticsearch

Elasticsearch использует много памяти. Вам нужно ограничить его использование в зависимости от размера вашего сервера. Создайте файл /etc/elasticsearch/jvm.options.d/memory.options и откройте его для редактирования.

$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options

Вставьте следующий код в него. Измените значения в соответствии с размером вашего сервера. Первое значение относится к начальной памяти, а второе — к максимальной доступной памяти. Для 1 ГБ и более используйте формат -Xms1g.

-Xms512m
-Xmx784m

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Это настраивает Elasticsearch на использование 1 ГБ ОЗУ. Измените его в соответствии с вашими требованиями и спецификациями сервера.

Запустите и включите службу.

$ sudo systemctl enable elasticsearch --now

Проверьте, работает ли Elasticsearch.

$ curl http://localhost:9200

Вы должны увидеть следующий вывод.

{
  "name" : "magento.example.com",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "saBfw0F_Tam6ayGjXr6pEA",
  "version" : {
    "number" : "7.17.17",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "aba4da413a368e296dfc64fb20897334d0340aa1",
    "build_date" : "2024-01-18T10:05:03.821431920Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Шаг 9 - Установка сервера Redis

Magento использует Redis для хранения сессий и кэша. Это полностью необязательно, и вы можете использовать базу данных для хранения сессий. Но Redis работает лучше. Последняя версия Magento работает с Redis 7.0. Rocky Linux поставляется с Redis 6.0, поэтому мы будем использовать репозиторий Remi для установки.

Мы уже установили репозиторий Remi, когда устанавливали PHP на шаге 2. Перечислите все доступные модули Redis.

$ dnf module list redis
Name                               Stream           Profiles                   Summary                                                                  
redis                              7                common [d]                 Redis persistent key-value database                                    
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                               Stream           Profiles                   Summary                             
redis                              remi-5.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.2         common [d]                 Redis persistent key-value database 
redis                              remi-7.0         common [d]                 Redis persistent key-value database 
redis                              remi-7.2         common [d]                 Redis persistent key-value database 

Подсказка: [d]ефолтный, [e]включен, [x]отключен, [i]установлен

Включите Redis 7.0.

$ sudo dnf module enable -y redis:remi-7.0

Выполните следующую команду, чтобы установить сервер Redis.

$ sudo dnf install redis

Подтвердите версию Redis.

$ redis-server -v
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=77c9855172eb54e9

Включите и запустите службу Redis.

$ sudo systemctl enable redis --now

Давайте проверим соединение службы, используя следующую команду.

$ redis-cli

Вы перейдете в оболочку Redis.

Первый шаг — установить пароль для пользователя по умолчанию Redis. Замените Your_Redis_Password на надежный пароль по вашему выбору. Убедитесь, что вы добавили к паролю символ >.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Проверьте аутентификацию Redis.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Пинг службы.

127.0.0.1:6379> ping
PONG

Выйдите из службы, введя exit.

Шаг 10 - Загрузка Magento

Создайте корневую директорию для веб-сайта Magento.

$ sudo mkdir /var/www/html/magento -p

Дайте права на директорию Magento текущему пользователю.

$ sudo chown $USER:$USER /var/www/html/magento/ -R

Перед тем как двигаться дальше, вам нужны ключи аутентификации, необходимые для репозитория Magento. Посетите сайт https://commercemarketplace.adobe.com/, нажмите на ссылку Войти в правом верхнем углу, и вы увидите следующую страницу, где вам нужно будет войти, используя свой Adobe ID.

Страница входа Adobe ID

Нажмите кнопку Войти с Adobe ID, чтобы перейти на следующую страницу.

Страница входа Magento Adobe

Если у вас есть Adobe ID, введите свои учетные данные, чтобы продолжить, или вы можете создать учетную запись здесь. После того как вы создали свою учетную запись и вошли в систему, откройте URL https://commercemarketplace.adobe.com/customer/accessKeys/. Вы также можете получить доступ к этой странице, посетив свой профиль (https://commercemarketplace.adobe.com/customer/account/) и нажав на ссылку Ключи доступа.

Страница профиля Adobe Magento

Нажмите кнопку Создать новый ключ доступа, чтобы создать свой ключ аутентификации. Дайте имя вашему ключу для идентификации.

Ключи доступа Magento

Запишите как публичный, так и приватный ключи для следующего шага.

Создайте файл ~/.config/composer/auth.json и откройте его для редактирования.

$ nano ~/.config/composer/auth.json

Вставьте следующий код в него. Используйте публичный ключ в качестве имени пользователя и приватный ключ в качестве пароля.

{
"http-basic": {
        "repo.magento.com": {
                   "username": "",
                   "password": ""
              }

}
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перейдите в директорию /var/www/html/magento.

$ cd /var/www/html/magento

Создайте проект Magento. Обратите внимание на период в конце команды. Он относится к текущей директории, в которой выполняется команда.

$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .

Вы должны увидеть аналогичный вывод.

Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p3)
  - Downloading magento/project-community-edition (2.4.6-p3)
  - Installing magento/project-community-edition (2.4.6-p3): Extracting archive
Created project in /var/www/html/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 566 installs, 0 updates, 0 removals
  - Locking 2tvenom/cborencode (1.0.2)
  - Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
  - Locking allure-framework/allure-codeception (v2.3.0)
  - Locking allure-framework/allure-php-commons (v2.3.1)
  - Locking allure-framework/allure-phpunit (v2.1.0)
...............................................

Выполните следующие команды, чтобы установить права доступа к файлам и сделать бинарный файл Magento исполняемым. Также установите владельца директории Magento на пользователя Nginx, чтобы он мог получить доступ к веб-сайту.

$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento

Шаг 11 - Установка Magento

Убедитесь, что вы находитесь в директории Magento.

$ cd /var/www/html/magento

Выполните следующую команду для установки Magento.

$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=127.0.0.1 \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[email protected] \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password

После завершения процесса вы получите аналогичный вывод.

.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_l5pv1h
Nothing to import.

Запишите URI администратора, который вам понадобится позже для доступа к панели управления.

Создайте задания cron для Magento.

$ php bin/magento cron:install

Проверьте задание cron.

$ crontab -l

Вы должны увидеть следующий вывод.

#~ MAGENTO START f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
* * * * * /usr/bin/php /var/www/html/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento/var/log/magento.cron.log
#~ MAGENTO END f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d

Шаг 12 - Настройка PHP-FPM

Откройте файл /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Нам нужно установить Unix пользователя/группу процессов PHP на nginx. Найдите строки user = apache и group = apache в файле и измените их на nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx 
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Найдите строки listen.owner = nobody, listen.group = nobody, listen.mode = 0660 в файле и измените их следующим образом после их раскомментирования.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx 
listen.group = nginx 
listen.mode = 0660

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Увеличьте время выполнения до 180 секунд.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php.ini

Увеличьте лимит памяти для PHP-FPM с 128MB до 512MB. Вы можете увеличить лимит в зависимости от размера вашего сервера и требований.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php.ini

Magento по умолчанию устанавливает лимит размера файла для медиатеки на 2 МБ. Выполните следующие команды, чтобы увеличить лимит размера файла до 25 МБ.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php.ini

Включите сжатие Zlib.

$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php.ini

Увеличьте конфигурацию realpath_cache, как показано.

$ sudo sed -i 's/;realpath_cache_size = 4096k/realpath_cache_size = 10M/g' /etc/php.ini
$ sudo sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 7200/g' /etc/php.ini

Откройте файл /etc/php.d/10-opcache.ini для редактирования.

$ sudo nano /etc/php.d/10-opcache.ini

Найдите строку ;opcache.save_comments=1 и раскомментируйте ее, как показано.

opcache.save_comments=1

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите службу PHP-FPM.

$ sudo systemctl restart php-fpm

Измените группу директории сессий PHP на Nginx.

$ sudo chgrp -R nginx /var/lib/php/session

Шаг 13 - Настройка SELinux

Выполните следующие команды, чтобы изменить контекст безопасности для директории Magento.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/app/etc(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/var(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/media(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/static(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/generated(/.*)?'
$ sudo restorecon -Rv '/var/www/html/magento/'

Примените политику, чтобы разрешить соединения с внешними хостами.

$ sudo setsebool -P httpd_can_network_connect 1

Примените политику, чтобы разрешить Nginx получать доступ к PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Шаг 14 - Настройка Nginx

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Создайте и откройте файл /etc/nginx/conf.d/magento.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/magento.conf

Вставьте следующий код в него.

upstream fastcgi_backend {
  server  unix:/run/php-fpm/www.sock;
}

server {
  # Redirect any http requests to https
  listen 80;
  listen [::]:80;
  server_name magento.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name magento.example.com;

  set $MAGE_ROOT /var/www/html/magento;
  include /var/www/html/magento/nginx.conf.sample;
  client_max_body_size 25m;

  access_log /var/log/nginx/magento.access.log;
  error_log  /var/log/nginx/magento.error.log;

  # TLS configuration
  ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено, когда закончите.

Magento поставляется с шаблоном конфигурации Nginx в /var/www/magento/nginx.conf.sample, который мы включили в нашу конфигурацию. Переменная $MAGE_ROOT указывает на корневую директорию веб-сайта Magento, которую мы установили в нашем файле и используется в образце конфигурационного файла.

Проверьте синтаксис конфигурационного файла Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите службу Nginx.

$ sudo systemctl restart nginx

Откройте веб-сайт Magento по URL https://magento.example.com. Вы должны увидеть следующую страницу.

Главная страница Magento

Если CSS и JS не загружаются, выполните следующие команды.

$ cd /var/www/html/magento
$ sudo php bin/magento setup:static-content:deploy -f
$ sudo php bin/magento indexer:reindex

Шаг 15 - Отключение двухфакторной аутентификации

Перед доступом к панели управления нам нужно отключить двухфакторную аутентификацию, включенную по умолчанию. Magento пытается отправить почту через sendmail для включения двухфакторной аутентификации во время установки, но поскольку мы этого не настроили, единственный способ получить доступ к панели управления — сначала отключить эту функцию.

Если у вас настроен sendmail на вашем сервере для отправки электронных писем, вы можете пропустить этот шаг. Нам нужно отключить два модуля Magento, используя следующие команды, чтобы отключить двухфакторную аутентификацию.

$ sudo php /var/www/html/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:disable Magento_TwoFactorAuth

Выполните следующую команду, чтобы создать классы.

$ sudo php /var/www/html/magento/bin/magento setup:di:compile

Очистите кэш также.

$ sudo php /var/www/html/magento/bin/magento c:c

Шаг 16 - Доступ к порталу администратора

Вы должны открыть портал администратора, используя URI, который предоставил вам скрипт установки Magento. Если вы как-то забыли его записать или потеряли, вы можете снова получить URI, используя следующую команду.

$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_l5pv1h

Откройте URL https://magento.example.com/admin_l5pv1h в вашем браузере, и вы получите следующий экран.

Страница входа администратора Magento

Введите учетные данные администратора, которые вы предоставили во время установки, и нажмите кнопку Войти, чтобы продолжить. Вы увидите следующий экран.

Панель управления администратора Magento

Вы получите всплывающее окно с просьбой разрешить Adobe собирать данные об использовании. Нажмите кнопку Не разрешать, чтобы продолжить.

Следующий шаг — настроить SMTP для электронной почты, чтобы мы могли повторно включить двухфакторную аутентификацию. Перейдите в меню Магазины >> Конфигурация.

Меню Магазины >> Конфигурация Magento

Разверните меню Дополнительно с левой стороны и нажмите на опцию Системы, чтобы открыть страницу настроек электронной почты.

Настройки отправки электронной почты Magento

Снимите отметку с Использовать системное значение перед параметрами Транспорт, Хост и Порт. Нажмите выпадающее меню для Транспорта и выберите SMTP. Для нашего руководства мы используем Amazon SES в качестве почтового отправителя.

Настройки почты Amazon SES Magento

Введите ваш SMTP-хост, 587 как порт, имя пользователя и пароль, установите Auth на LOGIN, а SSL на TLS в указанных полях. Нажмите кнопку Сохранить конфигурацию, когда закончите. Теперь, когда мы настроили параметры электронной почты, следующий шаг — настроить адреса электронной почты магазина, чтобы мы могли протестировать их.

Прокрутите вверх, разверните общее меню на той же странице и выберите опцию Адреса электронной почты магазина.

Страница адресов электронной почты магазина Magento

Снимите отметку с полей адреса отправителя по умолчанию и введите адреса электронной почты вашего магазина. Нажмите кнопку Сохранить конфигурацию, когда закончите. Аналогично, откройте экран Контакты, внесите те же изменения и нажмите кнопку Сохранить конфигурацию, чтобы завершить.

Настройки электронной почты Контакты Magento

Изменение параметров администратора может повлиять на кэш, и вы получите предупреждение. Выполните следующую команду, чтобы очистить кэш вручную.

$ sudo php /var/www/html/magento/bin/magento c:c

Чтобы протестировать электронные письма, посетите страницу магазина и откройте страницу Связаться с нами. Вы можете использовать URL https://magento.example.com/contact/, чтобы получить к ней доступ напрямую. Отправьте тестовое сообщение и нажмите кнопку Отправить. Вы должны получить аналогичное письмо.

Тестовое письмо Magento

Шаг 17 - Включение и настройка двухфакторной аутентификации

Теперь, когда мы включили почтовый отправитель SMTP, пришло время повторно включить двухфакторную аутентификацию. Выполните следующие команды, чтобы включить двухфакторную аутентификацию.

$ sudo php /var/www/html/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:enable Magento_TwoFactorAuth

Обновите установку для модулей.

$ sudo php /var/www/html/magento/bin/magento setup:upgrade

Выполните следующую команду, чтобы создать классы.

$ sudo php /var/www/html/magento/bin/magento setup:di:compile

Очистите кэш также.

$ sudo php /var/www/html/magento/bin/magento c:c

Если вы не можете получить доступ к администраторской области, выполните также следующие команды.

Принудительно разверните статическое содержимое.

$ sudo php /var/www/html/magento/bin/magento setup:static-content:Deploy -f

Установите права доступа к файлам.

$ cd /var/www/html/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .

Посетите портал администратора, и вы увидите следующий экран.

Настройка 2FA Magento

Мы будем использовать метод Google Authenticator. Вы можете использовать аппаратный ключ, если он у вас есть. Метод Google Authenticator работает с любым приложением TOTP, включая Authy, 1Password, Bitwarden, Microsoft Authenticator и т. д. Нажмите кнопку Применить, чтобы продолжить.

Настройка Google 2FA Magento

На следующей странице вы получите QR-код для сканирования с помощью вашего приложения 2FA. Введите данные в ваше приложение и скопируйте сгенерированный код в поле Код аутентификатора. Нажмите кнопку Подтвердить, чтобы перейти к панели администратора.

Заключение

Это завершает наше руководство по установке сайта электронной коммерции Magento на сервере Rocky Linux 9 с сервером Nginx и Elasticsearch. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.