Как установить Magento eCommerce Suite на Rocky Linux 9 с помощью Elasticsearch
На этой странице
- Предварительные условия
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите PHP и его расширения.
- Шаг 3 — Установите Composer
- Шаг 4 — Установите MariaDB
- Шаг 5 — Настройка MariaDB
- Шаг 6 — Установите Nginx
- Шаг 7 — Установите SSL
- Шаг 8 — Установите Elasticsearch
- Шаг 9. Установите сервер Redis
- Шаг 10 — Загрузите Magento
- Шаг 11 — Установите Magento
- Шаг 12. Настройте PHP-FPM
- Шаг 13 — Настройте SELinux
- Шаг 14 — Настройка Nginx
- Шаг 15 — Отключите двухфакторную аутентификацию
- Шаг 16. Доступ к порталу администрирования.
- Шаг 17. Включите и настройте двухфакторную аутентификацию
- Заключение
Magento — платформа электронной коммерции с открытым исходным кодом, написанная на PHP. Он был приобретен Adobe в 2018 году. Он также предлагается как коммерческий и облачный продукт. Вы можете использовать Magento для создания высокопроизводительных профессиональных торговых веб-сайтов. Он предлагает как режим одного магазина, так и режим нескольких магазинов. Он поставляется с множеством модулей, расширяющих его функциональность.
В этом уроке мы установим версию сообщества Magento с открытым исходным кодом. Он предлагает все функции, необходимые для создания профессионального интернет-магазина. Мы также установим Elasticsearch для поиска по каталогу продуктов, Redis для сеанса и файлового кэша и будем обслуживать его с помощью сервера Nginx.
Предварительные условия
Сервер под управлением Rocky Linux 9 с оперативной памятью не менее 2 ГБ. Вам может потребоваться больше оперативной памяти, в зависимости от ваших требований.
Пользователь без полномочий root с привилегиями 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
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Версия по умолчанию — 8.1. На момент написания этого руководства Magento совместим с PHP 8.2. Поэтому включите репозиторий Remi PHP 8.2.
$ 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. Плагин 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
Установите Нгинкс.
$ 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 и убедитесь, что ваша версия 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
Установите Сертбот.
$ 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 -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 при появлении запроса.
Установите Эластичек.
$ 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
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Включите 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, введите свои учетные данные, чтобы продолжить, или вы можете создать учетную запись здесь. После создания учетной записи и входа в систему откройте URL-адрес https://commercemarketplace.adobe.com/customer/accessKeys/
. Вы также можете получить доступ к этой странице, посетив свой профиль ( https://commercemarketplace.adobe.com/customer/account/
) и нажав ссылку Ключи доступа.
Нажмите кнопку Создать новый ключ доступа, чтобы создать ключ аутентификации. Дайте имя вашему ключу для идентификации.
Запишите открытый и закрытый ключи для следующего шага.
Создайте файл ~/.config/composer/auth.json
и откройте его для редактирования.
$ nano ~/.config/composer/auth.json
Вставьте в него следующий код. Используйте открытый ключ для имени пользователя и закрытый ключ для пароля.
{
"http-basic": {
"repo.magento.com": {
"username": "<public_key>",
"password": "<private_key>"
}
}
}
Сохраните файл, нажав 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 \
--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
Нам нужно установить для пользователя/группы PHP-процессов Unix значение 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=none
, listen.group=none
, 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 с 128 МБ до 512 МБ. Вы можете увеличить лимит в зависимости от размера и требований вашего сервера.
$ 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
. Вы должны увидеть следующую страницу.
Если 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
в своем браузере, и вы увидите следующий экран.
Введите учетные данные администратора, которые вы указали во время установки, и нажмите кнопку Войти, чтобы продолжить. Вас встретит следующий экран.
Вы получите всплывающее окно с запросом разрешения Adobe на сбор данных об использовании. Нажмите кнопку Не разрешать, чтобы продолжить.
Следующим шагом будет настройка SMTP для электронной почты, чтобы мы могли повторно включить двухфакторную аутентификацию. Откройте меню Магазины >> Конфигурация.
Разверните Расширенное меню слева и выберите параметр Системы, чтобы открыть страницу настроек электронной почты.
Снимите флажок Использовать системное значение перед параметрами Транспорт, Хост и Порт. Нажмите раскрывающееся меню «Транспорт» и выберите SMTP. В нашем уроке мы используем Amazon SES в качестве почтовой программы.
Введите свой SMTP-хост, 587 в качестве порта, имени пользователя и пароля, установите для параметра Auth значение LOGIN и установите для SSL значение TLS<. в заданных полях. Когда закончите, нажмите кнопку Сохранить конфигурацию. Теперь, когда мы настроили параметры электронной почты, следующим шагом будет настройка идентификаторов электронной почты магазина, чтобы мы могли их протестировать.
Прокрутите вверх, разверните меню «Общие» на той же странице и выберите параметр Сохранить адреса электронной почты.
Снимите флажки с полей электронной почты отправителя по умолчанию и введите идентификаторы электронной почты вашего магазина. Когда закончите, нажмите кнопку Сохранить конфигурацию. Аналогичным образом откройте экран Контакты, внесите те же изменения и нажмите кнопку Сохранить конфигурацию, чтобы завершить настройку.
Изменение параметров администратора может повлиять на кеш, и вы получите предупреждение. Выполните следующую команду, чтобы очистить кеш вручную.
$ sudo php /var/www/html/magento/bin/magento c:c
Чтобы протестировать электронные письма, посетите страницу витрины и откройте страницу Свяжитесь с нами
. Вы можете использовать URL-адрес https://magento.example.com/contact/
напрямую для доступа к нему. Отправьте тестовое сообщение и нажмите кнопку Отправить. Вы должны получить аналогичное письмо.
Шаг 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 .
Посетите портал администратора, и вы увидите следующий экран.
Мы будем использовать метод Google Authenticator. Вы можете использовать аппаратный ключ, если он у вас есть. Метод Google Authenticator работает с любым приложением TOTP, включая Authy, 1Password, Bitwarden, Microsoft Authenticator и т. д. Чтобы продолжить, нажмите кнопку Применить.
На следующей странице вы получите QR-код для сканирования с помощью приложения 2FA. Введите данные в свое приложение и скопируйте сгенерированный код в поле Код аутентификатора. Нажмите кнопку Подтвердить, чтобы перейти к панели администратора.
Заключение
На этом завершается наше руководство по установке сайта электронной коммерции Magento на сервере Rocky Linux 9 с сервером Nginx и Elasticsearch. Если у вас есть вопросы, задавайте их в комментариях ниже.