-- Leo's gemini proxy
-- Connecting to byzoni.org:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=ru-RU
2023-11-19
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
По умолчанию 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
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
Поскольку в Debian 12 по умолчанию нет MySQL, а есть MariaDB, мы продолжим именно с ним. Вы можете запустить следующую команду для установки MariaDB:
$ apt install mariadb-server
После установки запустите сценарий безопасной установки:
$ mysql_secure_installation
Вам будет предложено ввести пароль root. Поскольку мы не установили никакого пароля, просто нажмите Enter.
После этого будут заданы некоторые вопросы, такие как переключение на unix_socket и изменение пароля root вашего MySQL. Для обоих ответов вы можете ввести «n» и нажать Enter. В остальном вы можете использовать «y» по умолчанию.
Войдите в 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
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
Как только наш 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
Прежде всего, чтобы загрузить наш Magento, нам нужно создать для него каталог, что можно сделать с помощью следующей команды mkdir от имени пользователя nginx. Итак, вы можете войти в систему как nginx и запустить его, как показано в следующем предложении:
$ su - nginx -s /bin/bash $ mkdir /var/www/magento -p
Прежде чем двигаться дальше, вам понадобятся ключи аутентификации для вашего репозитория Magento, чтобы композитор мог загрузить базовый код Magento. Создайте базовый код https://account.magento.com/, затем перейдите к разделу «Войти с помощью Adobe ID».
После успешного входа в систему вам необходимо перейти на страницу accessKeys https://marketplace.magento.com/customer/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 {} +
Чтобы продолжить установку 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
Мы почти на месте; теперь вам нужно настроить службу 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
Прежде всего, прежде чем создавать виртуальный хост для нашего домена/субдомена, нам нужно увеличить размер `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, поделитесь им с друзьями в социальных сетях. Спасибо.
-- Response ended
-- Page fetched on Mon May 20 11:26:43 2024