EugeneMir.com
Блог программиста про IT и создании сайтов
Как установить Magento 2 на Ubuntu 20.04 LTS – пошаговая инструкция
2539Magento 2, Linux

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

Вступление

В этом руководстве я покажу, как установить Magento 2.4.2. на машину с только установленной Ubuntu 20.04 LTS. Мы будем использовать L.A.M.P (Linux Apache MySQL Php) в качестве web-сервера.

Ubuntu 20.04 LTS

Сначала обновим списки репозиториев пакетов и обновим сами пакеты:

sudo apt update && sudo apt upgrade

Начало. Установка нужных пакетов для Magento 2

Unzip - пакет для работы с архивами

#Установим unzip
sudo apt install unzip

Curl — это сокращение от “Client URL”. Утилита доступна в большинстве систем на основе Unix и предназначена для проверки подключения к URL-адресам. Кроме того команда Curl — отличный инструмент передачи данных.

#Установим CURL
sudo apt install curl

NodeJS - представляет среду выполнения кода на JavaScript, которая построена на основе движка JavaScript Chrome V8, который позволяет транслировать вызовы на языке JavaScript в машинный код. Node.js прежде всего предназначен для создания серверных приложений на языке JavaScript.

#Установим NodeJS 10 версии
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

Grunt - менеджер задач для автоматического выполнения рутинных операций, написанный на языке программирования JavaScript. В разработке мы его будем использовать для генерации стилей из less в css.

#Установим grunt глобально
sudo npm i grunt-cli -g

Установим php и apache2

#Установим php
sudo apt install php php-bcmath php-curl php-gd php-intl php-mbstring php-mysql php-xml php-soap php-zip
----------------------------------------------
#Узнать версию php
php -v

Важно!!! тут не помешает версию php проверить ибо если вы установите версию 8, то у вас Magento 2 может работать с ошибками.

php версия


#Установим apache2
sudo apt install apache2
---------------------------------------------
#Enable modules
sudo a2enmod rewrite
#перегрузим apatche дабы настройки вступили в силу
systemctl restart apache2

Установка и создание базы данных MySQL

MySQL - это популярная СУБД с моделью «клиент-сервер», поэтому часто можно услышать от других разработчиков словосочетание «MySQL-сервер».

#Установим mysql engine/client
sudo apt install mysql-server
#Проверим версию MySQL. 
mysql -V

Проверим версию MySQL


Входим в оболочку MySQL, используя следующую команду:

sudo mysql

Входим в оболочку MySQL

1. Создадим базу

CREATE DATABASE magento2;

2. Создадим пользователя базы

CREATE USER 'YouUser'@'localhost' IDENTIFIED BY 'YouPassword';
GRANT ALL ON *.* TO 'YouUser'@'localhost';
FLUSH PRIVILEGES;
#Посмотрим все базы:
show databases;

3. Выходим с mysql>

#выход:
exit;

Если все прошло отлично, то результат должен выглядеть так:

Описание


Установим phpMyAdmin

PhpMyAdmin - позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных.

#Установка phpmyadmin
sudo apt install phpmyadmin

В окне терминала выбираем apache [Пробелом], а перемещаемся клавишей TAB.

Установка phpmyadmin в ubuntu

Адрес: http://localhost/phpmyadmin/

Логин и пароль для входа те которые вы задавали при создании пользователя MySQL.


Подготовка к установке Magento2

Нужно создать файл конфига в папке /etc/apache2/sites-available/.

Я запускаю от рута программу Double Commander и создаю нужный файл. У вас его нет, то можно установить.

#установить Double Commander
sudo apt install doublecmd-qt
#double commander open as root
sudo doublecmd
#Create new project virtual host file
/etc/apache2/sites-available/magento2.conf

Содержимое файла magento2.conf:

<VirtualHost *:80>
	ServerAdmin admin@magento2.loc
	ServerName magento2.loc
	ServerAlias magento2.loc
	DocumentRoot /var/www/magento2.loc/pub
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	<Directory /var/www/magento2.loc/pub>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>
#Применить новую конфигурацию:
sudo a2ensite magento2.conf
#И перегрузим apache2
systemctl reload apache2

Добавим наш локальный сайт в hosts.

127.0.0.1 magento2.loc
#Стандартный редактор
sudo nano /etc/hosts
# У меня сторонний bluefish
sudo apt install bluefish
sudo bluefish /etc/hosts

hosts


Установка Composer

#Installing Composer
sudo apt install composer
#composer version:
composer --version
#При необходимости установим именно ту версию, что нужно:
composer self-update 1.10.6

Установка elasticsearch engine

Elasticsearch engine - продукт с открытым исходным кодом, который позволяет брать данные из любого источника и любого формата, а также искать и визуализировать их в режиме реального времени. В Magento 2 выполняет быстрый и расширенный поиск продуктов в каталоге продуктов.

#Download and install elasticsearch engine
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-amd64.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-amd64.deb.sha512
shasum -a 512 -c elasticsearch-7.9.2-amd64.deb.sha512
sudo dpkg -i elasticsearch-7.9.2-amd64.deb

Создадим файл конфигурации в папке: /etc/apache2/sites-available/elastic.conf

Для этого:

#Откроем от рута double commander
sudo doublecmd
--------------------------------------
#включить proxy mod
sudo a2enmod proxy_http
--------------------------------------
#Применить новую конфигурацию:
sudo a2ensite elastic.conf
--------------------------------------
#И перегрузим apache2
systemctl reload apache2

Содержимое файла elastic.conf:

Listen 8080
<VirtualHost *:8080>
    ProxyPass "/" "http://localhost:9200/"
    ProxyPassReverse "/" "http://localhost:9200/"
</VirtualHost>

Создадим папку для вашего магазина на Magento 2

Создадим папку для магазина Magento 2 и попутно зададим нужные права.

1. Нужно задать права на папку /var/www.

sudo chmod 777 /var/www/

2. Если права заданы правильно можем через Double commander не от рута создавать и редактировать папки.

Создайте папку magento2.loc. В итоге должно получиться так: /var/www/magento2.loc

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

sudo find /var/www/magento2.loc/ -type d -exec chmod 775 {} \;
sudo find /var/www/magento2.loc/ -type f -exec chmod 664 {} \;

Перегрузим все, что нужно.

sudo service mysql restart	
sudo service apache2 restart
sudo service elasticsearch restart
sudo systemctl enable elasticsearch

Проверим работу Elastic

curl -i http://localhost:8080/_cluster/health

Elastic work


Установка Magento2

1. Скачаем magento 2 c официального репозитория:

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

Важно!!! команду делаем находясь терминалом в: /var/www/magento2.loc

#перейти в папку /var/www/magento2.loc
cd /var/www/magento2.loc

Перед скачиванием у вас спросят имя пользователя и пароль. Это Public Key & Private Key из сайта https://marketplace.magento.com. Если их у вас нет, то нужно их получить. Регистрируйтесь и создавайте себе доступ.

Имя пользователя: Public Key

Пароль: Private Key

api

Важно!!! Далее Magento 2 начнет плавно загружать свои файлы на ваше устройство, но в один прекрасный момент терминал зависнет и зависнет надолго. Тут нет никаких ошибок все работает как нужно, а вы можете пойти попить чайку и вернуться минут через 10-15 когда все будет готово.

Magento 2 установка

Если у вас возникает ошибка связанная с Composer, то она возникнет сразу. Тогда откатите его до 1.10.6.
composer self-update 1.10.6
# Версия composer
composer -v

2. Финальная команда которая установит и настроит ваш магазин:

php bin/magento setup:install --base-url=http://magento2.loc/ --db-host=localhost --db-name=magento2 --db-user=eugene --db-password=password --admin-firstname=Eugene --admin-lastname=Eugene --admin-email=user@example.com --admin-user=eugene --admin-password=qwerty1991 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1 --backend-frontname=admin --search-engine=elasticsearch7 --elasticsearch-host=magento2.loc --elasticsearch-port=9200

Основные данные для создания админа и запуска магазина:

base-url=http://magento2.loc/ - адрес вашего магазина;

db-name=magento2 - имя базы данных;

db-user=eugene - логин пользователя базы данных;

db-password=password - пароль пользователя базы данных;

admin-user=eugene - логин админа;

admin-password=qwerty1991 - пароль админа;

backend-frontname=admin - адрес админ-панели.

Коне установки Magento 2

На этом установка закончилась и по логике ваш магазин должен работать, но открыв адрес в браузере вы уведите ошибку 500. Она будет только 1 раз и решается за пару минут.


Решение ошибки 500

Тут проблема с правами. Нужно ее поправить.

eugene = Имя вашего пользователя.

sudo usermod -a -G eugene www-data
sudo usermod -a -G www-data eugene

Теперь перегружаем систему и все работает.

Если вы не знаете что вы за пользователь, можно использовать команду:

#Кто я?
whoami

Какой я пользователь linux


Установим тестовые продукты

#Установим тестовые продукты:
php bin/magento sampledata:deploy
--------------------------------------------------------
#И обновим настройки
php bin/magento setup:upgrade
--------------------------------------------------------
#Чистим кеш
php bin/magento cache:flush
--------------------------------------------------------
#Включим все модули
php bin/magento module:enable --all
--------------------------------------------------------
#отключим двухфакторку
php bin/magento module:disable Magento_TwoFactorAuth
--------------------------------------------------------
#И обновим настройки
php bin/magento setup:upgrade
--------------------------------------------------------
#Чистим кеш
php bin/magento cache:flush

Если у вас ошибка:

Updating modules:
Could not validate a connection to Elasticsearch. No alive nodes found in your cluster
#Запустим Elasticsearch
sudo service elasticsearch start
--------------------------------------------------------
#И обновим настройки
php bin/magento setup:upgrade
--------------------------------------------------------
#Чистим кеш
php bin/magento cache:flush

Magento2 work

Web-Inside24