Найти тему
Nuances of programming

Полное руководство по установке Magento 2 с включенным SSL на Ubuntu ≥ 18.04

Оглавление

Источник: Nuances of Programming

Курс SkillFactory Системный администратор. Станьте универсальным специалистом по администрированию Linux с нуля и разверните собственный кластер.

Установка Magento2 на Ubuntu бывает трудной. Это руководство призвано упростить ее, какие бы приложения вы ни использовали.

Платформа электронной коммерции Magento
Платформа электронной коммерции Magento

Мы установим стабильную и по-прежнему очень актуальную версию Magento 2.3.7. Для версий новее приведем требования по типичным приложениям для работы с Magento 2. Если строго следовать этому руководству, успешная установка гарантирована.

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

Все технические аспекты установки важны и требуют внимания, но конфигурация сервера важнее.

Для успешной установки Magento 2 понадобятся: NGINX версии 1.8, MYSQL версии 5.7, PHP версии 7.4 и MAGENTO 2 версии 2.3.7.

Для версий Magento 2.4.0 и новее нужна MYSQL 8.0 и обязательна Elasticsearch.

Необходимые условия

  • Ubuntu Server ≥ 18.04.
  • SSH-доступ с правами root или права суперпользователя.

Как говорится, дорогу осилит идущий  —  приступим к установке.

Шаг 1. Обновление системы

Важно обновить локальный индекс пакета для выявления последних изменений:

$ sudo apt update && sudo apt upgrade

Шаг 2. Установка веб-сервера

Устанавливаем веб-сервер NGINX:

$ sudo apt install nginx

Задействуем текстовый редактор NANO. Подойдет любой другой, например VIM.

Создаем блок сервера для домена:

$ sudo nano /etc/nginx/sites-enabled/magento.conf

Вставляем в файл конфигурации это:

upstream fastcgi_backend {
server unix:/run/php/php7.4-fpm.sock;
}

server {

listen 80;
server_name yourdomain.com;
set $MAGE_ROOT /var/www/html/magento2;
include /var/www/html/magento2/nginx.conf.sample;
}

Сохраняем файл и выходим, нажимая Ctrl + O, Enter и Ctrl + X.

Шаг 3. Установка MySQL и создание базы данных для Magento 2

Устанавливаем MySQL:

$ sudo apt install mysql-server

Проверяем версию:

$ sudo mysql -V
-3

Версия MySQL 5.7 или новее совместима с Magento 2.3.7.

Настроим доступ по паролю для учетной записи администратора MySQL. Важны базовая безопасность и культура сопровождения: нужно защитить БД паролями, сделав ее безопасной.

Запускаем следующую команду:

$ sudo mysql

SELECT user,authentication_string,plugin,host FROM mysql.user;
-4

На изображении видно: к учетной записи администратора нет доступа по паролю. Включаем его MySQL-запросом:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';

‘your_secure_password’ следует заменить на свой пароль.

Инициировано ли изменение в таблице пользователей MySQL, подтверждаем этим SQL-запросом:

SELECT user,authentication_string,plugin,host FROM mysql.user;
-5

mysql_native_password в последней строке столбца plugin означает, что MySQL защищена паролем.

Выходим из базы данных:

exit

В MySQL создадим пользователя для Magento2. На этот раз войдем в систему как привилегированный пользователь с созданным ранее паролем. your_secure_password меняем на свой пароль:

$ mysql -u root -p
CREATE USER 'magento2'@'localhost' IDENTIFIED BY 'your_secure_password';

Создаем базу данных для Magento 2:

CREATE DATABASE magento2;

Предоставляем все привилегии пользователям Magento2:

GRANT ALL PRIVILEGES ON *.* TO 'magento2'@'localhost' WITH GRANT OPTION;

Выходим:

exit

Шаг 4. Установка PHP с требуемыми расширениями

Одно из упущений при установке PHP  —  забыть о расширениях для Magento 2. Вот типичные ошибки, которыми чревата неустановка необходимых расширений:

-6
-7

Такие ошибки  —  свидетельство проблем с расширениями PHP.
Чтобы исключить ошибки, в системе должны быть следующие зависимости:

$ sudo apt install software-properties-common apt-transport-https -y

Устанавливаем/импортируем PPA (персональные архивы пакетов) от ведущего разработчика PHP на Debian Ondřej Surý, который также специализируется на PPA Ubuntu. Они используются в версиях PHP 8.0, 8.1 и новее:

$ sudo add-apt-repository ppa:ondrej/php -y

После выполнения предыдущих команд обновляем apt-репозитории, поскольку добавление PPA чревато дополнительными обновлениями имеющихся зависимостей:

$ sudo apt update && sudo apt upgrade

Во избежание показанных выше ошибок устанавливаем PHP7.4 со всеми требуемыми расширениями:

$ sudo apt-get install php7.4-bcmath php7.4-common php7.4-curl php7.4-fpm php7.4-gd php7.4-intl php7.4-mbstring php7.4-mysql php7.4-soap php7.4-xml php7.4-xsl php7.4-zip

Настраиваем параметры PHP в соответствии с минимальными требованиями Magento 2:

$ sudo sed -i "s/memory_limit = .*/memory_limit = 768M/" /etc/php/7.4/fpm/php.ini
$ sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 128M/" /etc/php/7.4/fpm/php.ini
$ sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.4/fpm/php.ini
$ sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.4/fpm/php.ini

Шаг 5. Установка Composer

Composer нужен для установки Magento 2.

Возвращаемся в корневой каталог:

$ cd ~

Загружаем и устанавливаем Composer:

$ curl -sS https://getcomposer.org/installer -o composer-setup.php
$ sudo php composer-setup.php --install-dir=/usr/bin --filename=composer

Проверяем версию:

$ composer
-8

Composer установлен.

Шаг 6. Загрузка и установка Magento 2

Переходим в папку html:

$ cd /var/www/html

Загружаем Magento 2.3.7 с помощью Magento Open Source, создав новый проект Composer:

$ sudo composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.3.7 magento2
-9

Чтобы ввести имя пользователя и пароль, создаем на сайте учетную запись. Заходим в профиль, нажимаем create a new access key («Создать новый ключ доступа»):

-10

Ключи доступа такие же, как на изображении: public key («Открытый ключ»)  —  это имя пользователя, а private key («Закрытый ключ»)  —  пароль.

-11

У вас такая же картинка? Значит, все нормально.

К концу установки получите файлы Magento 2. Подтверждаем нахождение файла в текущем рабочем каталоге  —  в Linux это pwd  —  командой ls.

Задание разрешений для файлов

Без необходимых разрешений Magento 2 не установится:

$ cd /var/www/html/<the_directory_your_magento_was_installed>
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R user_name:www-data .
$ sudo chmod u+x bin/magento

Ваш user_name  —  это имя пользователя с доступом с правами root. Оно проверяется запуском whoami.

Задав разрешения, установим Magento этой волшебной командой:

bin/magento setup:install \
--base-url=http://yourdomain.com \
--db-host=localhost \
--db-name=magento2 \
--db-user=magento2 \
--db-password=your_secure_password \
--admin-firstname=admin \
--admin-lastname=admin \
--admin-email=admin@admin.com \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1
Если в db-password имеется цифра или специальный символ, обязательно заключаем их в кавычки. Например, 675Magento%$ в db-password записывается как “675Magento%$”.

После успешной установки отображается что-то вроде:

-12

Обязательно сохраняем URL-адрес администратора, хотя есть способ восстановить его в случае утери. Но в этом руководстве о нем речи не пойдет.

В случае ошибки разрешения входим в MySQL с помощью команды mysql -u root -p и запросом GRANT ALL PRIVILEGES ON *.* TO ‘magento2’@’localhost’ WITH GRANT OPTION. Предоставляем привилегии всем пользователям magento2.

Если обошлось без неустраненных ошибок, поздравляем. Впереди последнее и самое важное, чего нет в большинстве онлайн-руководств: загрузка страницы Magento.

Чтобы сконфигурировать NGINX, возвращаемся к блоку сервера:

$ sudo nano /etc/nginx/sites-enabled/magento.conf

Редактируем его:

upstream fastcgi_backend {
server unix:/run/php/php7.4-fpm.sock;
}

server {
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
server_name <your_domain or sub_domain>.com;
listen 80;
set $MAGE_ROOT /var/www/html/magento2;
set $MAGE_MODE developer; # или production

access_log /var/log/nginx/magento2-access.log;
error_log /var/log/nginx/magento2-error.log;

include /var/www/html/magento2/nginx.conf.sample;
}

Запускаем:

$ sudo systemctl restart nginx

При такой конфигурации страница Magento отображается доменом/поддоменом так:

-13

Чтобы попасть на страницу администратора, перейдите в ваш_домен или под_домен.com/url-адрес_администратора. URL-адрес администратора  —  тот, что мы сохранили после установки Magento2.

Вот эта идеально установленная страница:

-14

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Akinkunmi: The perfect way to install Magento 2 with SSL enabled on Ubuntu ≥ 18.04 [complete guide]