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, поделитесь им с друзьями в социальных сетях или просто оставьте ответ ниже. Спасибо.