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

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

  • Сервер под управлением Debian 12 с минимум 2 ГБ ОЗУ.
  • Пользователь без полномочий root с привилегиями.
  • Доменное имя для использования на сервере. В нашем случае это будет example.com.

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

Прежде чем продолжить, нам необходимо убедиться, что наша система обновлена ​​и установлены необходимые пакеты, чтобы мы могли запустить следующее:

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

1. Установка PHP и расширений

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

$ 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 --version

2. Установка Composer

Composer нужен, так как это инструмент управления PHP, и через него устанавливается Magento.

Установку можно выполнить, выполнив следующее:

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

Затем, после завершения, вы перемещаете файл композитора в каталог bin:

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

Чтобы проверить установленную версию, используйте следующую команду:

$ composer --version

3. Установка MariaDB

Поскольку в Debian 12 по умолчанию нет MySQL, а есть MariaDB, мы продолжим именно с ним. Вы можете запустить следующую команду для установки MariaDB:

$ apt install mariadb-server

После установки запустите сценарий безопасной установки:

$ mysql_secure_installation

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

После этого будут заданы некоторые вопросы, такие как переключение на unix_socket и изменение пароля root вашего MySQL. Для обоих ответов вы можете ввести «n» и нажать Enter. В остальном вы можете использовать «y» по умолчанию.

4. Создание базы данных

Войдите в MariaDB

$ mysql

Создайте базу данных, используя

mysql> CREATE DATABASE magento;

Создать нового пользователя

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

Чтобы предоставить все привилегии в базе данных с помощью

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

Сбросьте привилегии и выйдите из оболочки

mysql> FLUSH PRIVILEGES;
mysql> exit

5. Установка Nginx

Debian 12 по умолчанию использует более старую версию Nginx. Приступим к установке более новой.

Для этого нам нужно импортировать ключ Nginx:

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | 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" | tee /etc/apt/sources.list.d/nginx.list

После добавления репозитория вы можете установить nginx с помощью

$ apt update -y
$ apt install nginx

Затем вы можете запустить службу с помощью

$ systemctl start nginx

6. Установка Certbot

Как только наш Nginx заработает, нам нужно установить certbot, чтобы мы могли сгенерировать действительный сертификат SSL для нашего домена.

Прежде чем продолжить, нам нужно установить Snapd с помощью

$ apt install snapd

После установки snapd мы запустим следующее, чтобы убедиться, что наша установка обновлена:

$ snap install core
$ snap refresh core

Чтобы наконец установить certbot, вы можете запустить:

$ snap install certbot

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

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

Чтобы сгенерировать SSL-сертификат для вашего домена с помощью модуля nginx, вы запускаете:

$ certbot certonly --nginx -d example.com

Команда создаст сертификат SSL в вашем каталоге /etc/letsencrypt/live/example.com. Конечно, имя будет другим; в вашем случае будет показано имя вашего домена/субдомена.

По завершении нам нужно сгенерировать групповой сертификат, и это можно сделать, выполнив:

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

7. Загрузка Magento

Прежде всего, чтобы загрузить наш Magento, нам нужно создать для него каталог, что можно сделать с помощью следующей команды mkdir от имени пользователя nginx. Итак, вы можете войти в систему как nginx и запустить его, как показано в следующем предложении:

$ su - nginx -s /bin/bash
$ mkdir /var/www/magento -p

Прежде чем двигаться дальше, вам понадобятся ключи аутентификации для вашего репозитория Magento, чтобы композитор мог загрузить базовый код Magento. Создайте базовый код, затем перейдите к разделу «Войти с помощью Adobe ID».

После успешного входа в систему вам необходимо перейти на страницу accessKeys. Там у вас будет ссылка «Ключи доступа», по которой можно нажать, где вы сможете сгенерировать пару ключей.

После того, как вы скопировали открытый и закрытый ключи, вам необходимо создать файл auth.json, чтобы ваши ключи были сохранены и могли использоваться композитором.

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

Следующий контент должен быть в файле auth.json

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

Где PUBLIC_KEY и PRIVATE_KEY — ваши собственные ключи, которые вы получили на официальном сайте Magento.

После этого вы можете войти в свой каталог Magento и создать свой проект с помощью следующих команд:

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

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

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

Затем вы можете выйти из системы пользователя nginx и выполнить следующие команды:

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

8. Запуск установки Magento

Чтобы продолжить установку Magento, нам нужно отредактировать XML-файл из установщика, чтобы исправить версию MariaDB. Для этого нам нужно отредактировать следующий файл:

$ 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>

Затем сохраните файл, и все готово. Затем войдите в систему как пользователь nginx и получите доступ к своему каталогу Magento:

$ su - nginx -s /bin/bash
$ cd /var/www/magento

И, наконец, запустите:

$ bin/magento setup:install \
--use-secure=1 \
--use-secure-admin=1 \
--db-host=localhost \
--db-name=magento \
--base-url=http://example.com \
--base-url-secure=https://example.com \
--db-user=magento \
--db-password=Your_password2 \
--admin-firstname=YourName \
--admin-lastname=LastName \
--admin-email=admin@example.com \
--admin-user=admin \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \

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

Теперь вам нужно создать задания cron Magento, что можно выполнить с помощью:

$ php bin/magento cron:install

9. Настройка PHP-FPM для Magento

Мы почти на месте; теперь вам нужно настроить службу PHP-FPM для обслуживания файлов PHP. Для этого откройте следующий файл:

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

Вы увидите две директивы, которые относятся к пользователю и группе файлов из вашего экземпляра Magento. Вы должны использовать nginx для обоих. Как показано здесь:

user = nginx
group = nginx

То же самое следует сделать с Listen.owner и Listen.group; оба должны использовать nginx.

Теперь нам нужно внести некоторые изменения в файлы php.ini, чтобы Magento работал правильно. Вы можете открыть файлы php.ini и изменить приведенные ниже значения или просто вставить и скопировать эти команды sed:

$ sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/fpm/php.ini
$ sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/cli/php.ini
$ sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini
$ sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php/8.2/fpm/php.ini
$ sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php/8.2/fpm/php.ini
$ sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php/8.2/fpm/php.ini

Чтобы применить настройки, нам нужно перезапустить службу php-fpm:

$ systemctl restart php8.2-fpm

10. Настройка Nginx с помощью PHP-FPM

Прежде всего, прежде чем создавать виртуальный хост для нашего домена/субдомена, нам нужно увеличить размер server_names_hash_bucket_size из нашего nginx. Для этого добавьте следующую строку перед строкой, содержащей «include /etc/nginx/conf.d/*.conf;»:

server_names_hash_bucket_size  64;

Это следует сделать в файле /etc/nginx/nginx.conf.

После этого вы, наконец, можете создать файл vhost конфигурации Magento с помощью:

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

И содержание:

#-- Start of file
upstream fastcgi_backend {
  server  unix:/run/php/php8.2-fpm.sock;
}
server {
  listen 443 ssl http2;
  server_name 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;
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/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;
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}
server {
  listen 80;
  server_name example.com;
  return 301 https://$host$request_uri;
}
# -- End of File
# Where example.com is your actual domain!!

Прежде чем перезапустить nginx для применения настроек, рекомендуется заранее запустить тест nginx, чтобы избежать перезапуска службы с какими-либо ошибками. Это можно сделать с помощью

$ nginx -t
$ systemctl restart nginx

Затем, если ваш домен уже привязан к вашему серверу, вы увидите свою главную страницу. И по какой-то причине вы не видите статический контент или CSS/JS, вы можете запустить:

$ su - nginx -s /bin/bash
$ cd /var/www/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

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

Обязательно войдите в систему под учетной записью nginx, поэтому, если вы этого не сделали:

$ su - nginx -s /bin/bash

Затем

$ 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 cache:clear

Если вы не скопировали URL-адрес со своей административной страницы, вы можете получить его с помощью:

$ php /var/www/magento/bin/magento info:adminuri

Вот и все! Вы успешно установили Magento на Debian 12.

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