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

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

Платформа электронной коммерции 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

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

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

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

$  sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;

На изображении видно: к учетной записи администратора нет доступа по паролю. Включаем его 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;

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. Вот типичные ошибки, которыми чревата неустановка необходимых расширений:

Такие ошибки  —  свидетельство проблем с расширениями 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

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

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

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

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

К концу установки получите файлы 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 \
[email protected] \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1

Если в db-password имеется цифра или специальный символ, обязательно заключаем их в кавычки. Например, 675Magento%$ в db-password записывается как “675Magento%$”.

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

Обязательно сохраняем 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 отображается доменом/поддоменом так:

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

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

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

Читайте нас в TelegramVK и Дзен


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

Предыдущая статьяСоздание надежной библиотеки JavaScript: пошаговое руководство
Следующая статьяОткажитесь от SQLite в пользу DuckDB