Поиск по сайту:

Как установить Magento eCommerce Suite на Debian 12 с помощью Nginx и Elasticsearch


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

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

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

    Сервер под управлением Debian 12 с минимум 2 ГБ ОЗУ. Вам может потребоваться больше оперативной памяти в зависимости от ваших требований.

    Пользователь без полномочий root с привилегиями sudo.

    Полное доменное имя (FQDN) для сервера: magento.example.com.

    Убедитесь, что все обновлено.

    $ sudo apt update
    $ sudo apt upgrade
    

    Несколько пакетов, которые нужны вашей системе.

    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
    

    Некоторые из этих пакетов могут уже быть установлены в вашей системе.

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

Первым шагом является настройка брандмауэра. По умолчанию Debian поставляется с ufw (несложным межсетевым экраном).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы должны увидеть что-то вроде следующего.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

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

$ sudo ufw status

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

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Шаг 2. Установите PHP и его расширения.

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

$ sudo apt 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-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev

Чтобы всегда использовать последнюю версию PHP или если вы хотите установить несколько версий PHP, добавьте PHP-репозиторий Ондрея.

Сначала импортируйте ключ PHP GPG репозитория Sury.

$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Добавьте PHP-репозиторий Ондрея Сури.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Обновите список системных репозиториев.

$ sudo apt update	

Затем установите PHP и его расширения, необходимые для Magento.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev

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

$ php --version
PHP 8.2.8 (cli) (built: Jul 16 2023 11:00:43) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.8, 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.21 2023-02-15 13:07:40

Шаг 4 — Установите MariaDB

Debian 12 по умолчанию не поставляется с MySQL, и для него еще не выпущен официальный пакет. Поэтому мы будем использовать для этого MariaDB. У MariaDB также нет официального пакета для Debian 12, но Debian поставляется вместе с ним. Поэтому установите его с помощью следующей команды.

$ sudo apt install mariadb-server

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

$ mysql --version
mysql  Ver 15.1 Distrib 10.11.3-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

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

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

$ sudo mysql_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. В Debian 12 пароль root тесно связан с автоматическим обслуживанием системы, поэтому его следует оставить в покое. Введите n, чтобы продолжить.

 ... skipping.

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

Change the root password? [Y/n] n

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

 ... skipping.

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 mysql

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

mysql> CREATE DATABASE magento;

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

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

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

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

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

MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;

Сбросить привилегии пользователя.

mysql> FLUSH PRIVILEGES;

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

mysql> exit

Шаг 6 — Установите Nginx

Debian 12 поставляется с более старой версией Nginx. Чтобы установить последнюю версию, вам необходимо скачать официальный репозиторий Nginx.

Импортируйте ключ подписи Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий стабильной версии Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Обновите системные репозитории.

$ sudo apt update

Установите Нгинкс.

$ sudo apt install nginx

Проверьте установку. В системах Debian следующая команда будет работать только с sudo.

$ sudo nginx -v
nginx version: nginx/1.24.0

Запустите сервер Nginx.

$ sudo systemctl start nginx

Проверьте статус услуги.

? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2023-08-02 06:45:52 UTC; 14s ago
       Docs: https://nginx.org/en/docs/
    Process: 18326 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 18327 (nginx)
      Tasks: 2 (limit: 2315)
     Memory: 1.8M
        CPU: 11ms
     CGroup: /system.slice/nginx.service
             ??18327 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??18328 "nginx: worker process"

Шаг 7 — Установите SSL

Нам нужно установить Certbot для создания SSL-сертификата. Вы можете либо установить Certbot, используя репозиторий Debian, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

В Debian 12 не установлен Snapd. Установите пакет Snapd.

$ sudo apt install snapd

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

$ sudo snap install core && sudo snap refresh core

Установите Сертбот.

$ sudo snap install --classic certbot

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

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

Убедитесь, что Certbot работает правильно.

$ certbot --version
certbot 2.6.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
.....
Wed 2023-08-02 08:09:00 UTC 9h left       Wed 2023-08-02 07:39:06 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Thu 2023-08-03 06:41:11 UTC 9h left       Wed 2023-08-02 06:24:33 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Wed 2023-08-02 14:06:00 UTC 11h left      Sun 2021-11-14 02:03:02 UTC 5min ago      apt-daily.timer           apt-daily.service

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

$ sudo certbot renew --dry-run

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

Шаг 8 — Установите Elasticsearch

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

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

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

Добавьте репозиторий Elasticsearch.

$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

Обновите список репозиториев системы.

$ sudo apt update

Установите Эластичек.

$ sudo apt install 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",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "LNFRevgvQIOGeWCdtvc7bA",
  "version" : {
    "number" : "7.17.12",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059",
    "build_date" : "2023-07-20T05:33:33.690180787Z",
    "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. Debian поставляется с Redis 6.0, поэтому для установки мы будем использовать репозиторий Redis.

Импортируйте официальный ключ Redis GPG.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Добавьте репозиторий APT в список источников.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Обновите список системных репозиториев.

$ sudo apt update

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

$ sudo apt install redis

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

$ redis-server -v
Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=d706905cc5f560c1

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

$ 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/magento -p

Предоставьте права на каталог Magento текущему пользователю.

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

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

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

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

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

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

Создайте файл ~/.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/magento.

$ cd /var/www/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-p1)
  - Downloading magento/project-community-edition (2.4.6-p1)
  - Installing magento/project-community-edition (2.4.6-p1): Extracting archive
Created project in /var/www/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 565 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)
...............................................

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

$ sed -i 's/php-fpm:9000/fastcgi_backend/g' /var/www/magento/nginx.conf.sample

Выполните следующие команды, чтобы установить права доступа к файлу и сделать двоичный файл 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

Прежде чем приступить к установке, нам необходимо изменить программу установки, чтобы она позволяла нам использовать MariaDB 10.11.3, которая в настоящее время не поддерживается Magento. На данный момент Magento поддерживает версии MariaDB 10.2–10.6.

Откройте файл /var/www/magento/app/etc/di.xml для редактирования.

$ sudo nano /var/www/magento/app/etc/di.xml

Найдите следующую строку.

<item name="MariaDB-(10.2-10.6)" xsi:type="string">^10\.[2-6]\.</item>

Замените его следующим кодом.

<item name="MariaDB-(10.2-10.11)" xsi:type="string">^10\.([2-9]|10|11)\.</item>

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

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

$ cd /var/www/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=localhost \
--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_11xb2x
Nothing to import.

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

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

$ php bin/magento cron:install

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

$ crontab -l

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

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

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

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

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

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

...
; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
;       --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
;                 If the group is not set, the user's group is used.
user = nginx
group = nginx
...

Найдите в файле строки listen.owner=www-data и listen.group=www-data и измените их на nginx.

; 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. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

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

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

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

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

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

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

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

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

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

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

$ sudo systemctl restart php8.2-fpm

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

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

Шаг 13 — Настройка 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/php8.2-fpm.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/magento;
  include /var/www/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/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

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

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

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

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

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

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

Также почистите кэш.

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

Шаг 15. Доступ к порталу администрирования.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Также почистите кэш.

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

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

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

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

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

$ cd /var/www/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 на сервер Debian 12 с сервером Nginx и Elasticsearch. Если у вас есть вопросы, задавайте их в комментариях ниже.

Статьи по данной тематике: