Установка Magento 2 в деталях

Spacer
Поделитесь этим сайтом с друзьями!

Если вам оказалась полезна или просто понравилась эта статья, тогда не стесняйтесь - поддержите материально автора. Это легко сделать закинув денежек на Яндекс Кошелек № 410011416229354. Или на телефон +7 918-16-26-331.

Или другими способами (с карты, с телефона)

Даже небольшая сумма может помочь написанию новых статей :)

Или поделитесь ссылкой на эту статью со своими друзьями.

Опубликовано: Последнее обновление этой статьи:

В этой статье описаны важные детали, которые нужно знать об установке Magento 2, до того как начинать установку. Нюансы о которых не пишут в большинстве инструкций.

Magento это CMS для реализации Интернет-магазина или маркетплейса. Система гораздо более сложная в установке, чем например такие популярные магазинные CMS как OpenCart, PrestaShop, CS-Cart и т.п. В Интернет много материалов об установке этой CMS. Но в этой статье акцент на деталях, о которых редко пишут в инструкциях. О таких деталях, которые нужно знать, прежде чем браться за установку, если вы впервые сталкиваетесь с этой системой.

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

Сервер для Magento 2 (железо)

Magento 2, система очень прожорливая. Более прожорливая чем даже Битрикс. На виртуальный хостинг ее не установить. Во всяком случае на обычный виртуальный хостинг, разве что на какой-то специализированный тариф для высоконагруженных систем. Так, что с вероятностью более 90%, под Magento 2 нужно арендовать виртуальный или даже физический сервер. Основные характеристики сервера под Magento 2 это:

  • Оперативная память не менее 8 Гб.
  • Диск SSD. Размер диска пожалуй не меньше 20 Гб (в случае виртуального сервера). Сама по себе Magento 2 занимает около 1 Гб на файловой системе. Это почти пустая система  - с минимумом товаров (примерно 30-40 товаров). А еще нужно место для серверной ОС и программ веб-сервера.
  • Процессор не менее чем 2-х ядерный, с частотой не менее 3 Ггц.

Это минимальные требования. Если проект, который будет работать на Magento 2, высоко нагружен (много товаров в каталоге, высокая посещаемость) тогда по размеру памяти и особенно по процессору нужно увеличение.

Откуда такие требования, для магазинной CMS? Ведь большинство подобных систем работают даже на виртуальном хостинге.

  • Лимит памяти PHP (memory_limit), для Magento 2, до 4 Гб.
  • Еще нужна память для сервера MySQL для Apache, для Elasticsearch. А еще операционная система сервера.

Вот и получается что 8 Гб это минимум для Magento 2.

Magento 2 на виртуальный хостинге

Технически это возможно. Но если пробовать установить Magento 2 на виртуальный хостинг, тогда нужно искать тариф, на котором есть:

  • Доступ по SSH.
  • Возможность установить большие значения для параметров PHP - memory_limit (4 Гб), realpath_cache_size (10М), realpath_cache_ttl (7200), max_execution_time.
  • Наличие или возможность установить Composer.

Если вы хотите установить версию 2.4.х тогда дополнительно нужно:

  • Наличие или возможность установить elasticsearch.
  • MySQL 8
  • PHP 7.4

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

 

Веб-сервер для Magento 2 (программный сервер)

Magento 2 конечно можно установить на WAMP (Windows Apache MySQL PHP). Но лучше на Linux (LAMP), например на Ubuntu 20.04 или 18.04.

Хотя бы по той причине что разработка этой системы, в первую очередь выполняется под Linux. И основной компонент, PHP, тоже родом из Linux. Поэтому, устанавливая Magento на WAMP, вы рискуете получить лишние проблемы.

Выбор версии Magento 2.

Версия 2.3.х

Это последняя версия Magento в которой:

  1. Есть традиционная установка через браузер.
  2. Поиск по сайту (фактически это поиск в БД MySQL) через средства поиска MySQL.

При этом, версия 2.3.х не дружит с PHP 7.4, ей нужен PHP 7.3 или меньше. Кроме этого, версия 2.3.х имеет особенность при работе с MySQL 8.

Если вы будете использовать MySQL 8 и Magento 2.3.х тогда пользователя БД Magento нужно создавать с плагином авторизации mysql_native_password. Дело в том, что в MySQL 8 по умолчанию используется новый плагин для хеширования паролей. И Magento 2.3.х с ним не дружит.

Поэтому нужно:

  • Или использовать команду ALTER (CREATE) USER 'magento_db'@'localhost' IDENTIFIED WITH mysql_native_password BY 'magento_db_password'
  • Или менять настройки сервера MySQL 8 на использование старого метода хранения паролей - default_authentication_plugin=mysql_native_password. И после этого создавать пользователя для БД Magento.

Версия 2.4.х

В этой версии Magento есть важные особенности, в отличии от предыдущих:

  • Установка только через CLI PHP (в терминале).
  • Для поиска используется Elasticsearch. А это очень серьезно добавляет нагрузки на железо сервера. И без Elasticsearch вы просто не сможете установить Magento 2.4.х.

Требования версии 2.4.х:

  • PHP 7.4
  • MySQL 8
  • Elasticsearch

Composer

При установке самой Magento 2, а также при установке модулей, активно используется Composer. Так что, перед установкой Magento, нужно вначале установить Composer. Еще одна важная деталь, применительно к использованию Composer - для переменной memory_limit (PHP) нужно установить значение 4 Гб. На лимите в 2 Гб, Composer может обрушить PHP с фатальной ошибкой.

 

PHP

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

Важно. Редактируя настройки в php.ini, нужно дублировать это в двух ini файлах:

  • /etc/php/7.х/apache2/php.ini
  • /etc/php/7.х/cli/php.ini

Поскольку работать с Magento 2 придется не только через браузер, но и через терминал, например установка модулей через Composer или настройка через php bin/magento. Выше я писал про то, что значение memory_limit нужно установить в 4 Гб, - в первую очередь это нужно сделать в cli php.ini, в ini для apache можно указать меньшее значение.

 

Дистрибутив Magento 2

Официалы, в своих доках, советуют устанавливать Magento 2 через Composer. Для специалиста, который хорошо знает систему, и хорошо знает что ему нужно сделать в итоге, это хороший способ. Но если вы раньше не работали с Magento 2, то начинать я советую с установки их архива. Вот на этой странице есть все версии Magento 2 в архивах zip и tar . Причем я советую скачивать архив с опцией "Include sample data". Это уже почти полностью готовый к работе дистрибутив с небольшим набором демо товаров. Очень удобно для ознакомления с системой.

Установка из архива еще и быстрее чем через Composer.

На Ubuntu это выглядит примерно так:

  • mkdir -p /var/www/mag.com/public_html/
  • unzip ~/magento236sample.zip -d /var/www/mag.com/public_html

И потом переходите в папку сайта Magento и запускаете установку. Или запускаете установку из браузера, если версия Magento меньше чнм 2.4.

 

Права доступа

Одна из проблем, при установке и обслуживании Magento, заключается в расколбасе между правами доступа к файлам и папкам Magento. Многие работы (установка, установка модулей, обслуживание) нужно делать в терминале. Соответственно файлы и папки получают владельца и права того пользователя, от которого вы это будете делать. В то же время для некоторых папок нужен доступ записи для Apache.

Таким образом, вам нужно согласовать права доступа между владельцем и Apache.

Или добавить владельца в группу к Apache. Или добавить Apache в группу к пользователю. И для файлов и папок Magento дать права записи для группы владельца.

Симптомы проблемы с правами доступа - при обращении, к сайту Magento, страницы не загружаются или выдают ошибку 500. Это значит что Apache не может произвести запись в файлы Magento.

Для Ubuntu это может быть примерно так:

  • sudo usermod -a -G www-data <username>
  • cd /var/www/mag.com/public_html/
  • sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod 664 {} +
  • sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod 775 {} +
  • sudo chown -R <username>:www-data .
  • sudo chown <username>:www-data bin/magento
  • sudo chmod u+x bin/magento

В первой команде локальный пользователь (под которым будет работа с Magento в терминале) с логином <username> добавляется в группу к Apache (на Ubuntu это группа www-data). Далее устанавливаются права на файлы и папки и устанавливается владелец и группа для папок и файлов.

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

Рекомендую прочитать описание ситуации по правам доступа на официальном сайте Magento.

 

Установка Magento 2

И наконец собственно установка. Я не буду давать какие-то точные инструкции, по той причине что ситуации могут разные. Вместо этого я опишу общий порядок установки и укажу примерные команды.

Проверить сервер подходит ли он для Magento по "железу" .

Проверить программный сервер - версии Apache, MySQL, PHP, наличие необходимых модулей и настроек PHP. Официальный список требований к программному серверу для Magento 2 . Проверьте наличие Composer. Если хотите установить Magento 2.4.х, проверьте наличие Elasticsearch - как установить и проверить Elasticsearch.

Создать базу данных MySQL и пользователя этой БД, для Magento.

Скачать zip архив дистрибутива Magento 2, с опцией "Include sample data". Если вы читаете эту статью, значит вы мало что знаете про Magento. Поэтому zip архив с опцией "Include sample data".

Закачать этот архив на сервер, где вы будете его устанавливать. Как вариант, можно сразу на сервер закачать архив, если вы знаете URL, нужной вам версии Magento.

Распаковать этот архив в корневую папку сайта, где будет работать Magento. Папки и файлы Magento должны быть в папке, которая указана в директиве DocumentRoot для сайта Magento.

Затем установить права доступа на файлы и папки Magento.

После этого можно запускать установку.

Примерно вот так можно установить Magento 2 на Ubuntu 20.04

  • wget https://magento.com/tech-resources/downloads/index/download/file_id/3089/category_id/2587/
  • sudo chown <username>:www-data /var/www/mag.com/public_html
  • unzip ~/magento-ce-2.3.6_sample_data-2020-09-25-07-21-38.zip -d /var/www/mag.com/public_html
  • sudo usermod -a -G www-data <username>
  • cd /var/www/mag.com/public_html
  • sudo find -type f -exec chmod 664 {} +
  • sudo find -type d -exec chmod 775 {} +
  • sudo chown -R <username>:www-data .
  • sudo chmod u+x bin/magento

И наконец сама установка:

php bin/magento setup:install --base-url=http://mag.com/ \
--db-host=localhost --db-name=magento_db --db-user=magento_db --db-password=db_passwd \
--admin-firstname=dws --admin-lastname=dws --admin-email=d-ws@mag.com \
--admin-user=dws --admin-password=admin_passwd --language=ru_RU \
--currency=RUB --timezone=Europe/Moscow --session-save=files --use-rewrites=1 --cleanup-database


Примечание 1. Параметры установочной команды описаны в официальной документации. В этом примере я не описывал как создать сайт для Magento (папка DocumentRoot = /var/www/mag.com/public_html), а также БД для Magento.

Примечание 2. Если будете устанавливать версию 2.4.х, тогда в команду установки нужно будет добавить параметры Elasticsearch:

--search-engine=elasticsearch7 --elasticsearch-host=localhost --elasticsearch-port=9200

Примечание 3. Если будете устанавливать версию 2.3.х, тогда установку можно выполнить через браузер, как на большинстве CMS.

 

Сопутствующие статьи

Что такое Интернет-магазин и как его создать

Сравнение четырех CMS для Интернет-магазина

Что такое маркетплейс

 

Поделитесь этим сайтом с друзьями!

Если вам оказалась полезна или просто понравилась эта статья, тогда не стесняйтесь - поддержите материально автора. Это легко сделать закинув денежек на Яндекс Кошелек № 410011416229354. Или на телефон +7 918-16-26-331.

Или другими способами (с карты, с телефона)

Даже небольшая сумма может помочь написанию новых статей :)

Или поделитесь ссылкой на эту статью со своими друзьями.

 

  Copyright digital.workshop 1999 - 2021.  
Это произведение доступно по лицензии Creative Commons Attribution-NoDerivs 3.0.
Developed by digital.workshop

DWS