Как установить СMS Magento 2 на сервер с Linux Ubuntu?

Magento – одна из самых надежных, гибких и масштабируемых систем управления контентом с открытым исходным кодом, которая предлагает обширный набор мощных инструментов для создания e-commerce-сайтов и управления ими. Сегодня мы пошагово рассмотрим, как установить CMS Magento 2 на сервер с ОС Linux Ubuntu 20.04 (Nginx+PHP-FPM+MySQL+Redis+Elasticsearch).

Установка была выполнена на сервере от компании Hostpro по тарифному плану «Резвый+» Linux VPS. С характеристиками тарифа вы можете ознакомиться на странице продукта – https://hostpro.ua/linux-vps.html

Совместимость программного обеспечения по версиям можно посмотреть на официальном сайте.

Шаг 1 – Устанавливаем веб-сервер Nginx

Чтобы установить веб-сервер Nginx, вводим:

apt install nginx

Для того, чтобы выполнить базовую конфигурацию веб-сервера, открываем в текстовом редакторе основной конфигурационный файл nano /etc/nginx/nginx.conf .

Затем нужно раскомментировать строки в файле конфигурации и добавить следующие значения: 

worker_processes auto;
events {
        use epoll;
        worker_connections 1024;
        multi_accept on;
}
access_log off;
error_log /var/log/nginx/error.log crit
sendfile on; 
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
keepalive_timeout 65;
client_max_body_size 4m;
client_body_timeout 10;
types_hash_max_size 2048;
reset_timedout_connection on;
server_names_hash_bucket_size 64; 

Шаг 2 – Устанавливаем MySQL

Приступим к установке системы управления базами данных MySQL:

apt install mysql-server
mysql_secure_installation

Answer Y for yes .

Создаем пользователя и БД Magento 2:

mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE db_magento;
GRANT ALL PRIVILEGES ON db_magento.* TO 'user'@'localhost';
flush privileges;
quit

Шаг 3 – Устанавливаем PHP и PHP-FPM

Следующим шагом необходимо установить PHP, PHP-FPM и все необходимые зависимости в данном случае версии 7.4.

Добавляем в репозиторий:

add-apt-repository ppa:ondrej/php

После чего обновляем:

apt update

И устанавливаем:

apt install php7.4-fpm php7.4-mysql php7.4-bcmath php7.4-intl php7.4-soap php7.4-curl php-xml php7.4-gd php7.4-zip
apt 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 

Активируем: 

phpenmod mbstring

И редактируем конфигурационные файлы php, как указано на официальном сайте.

Также необходимо перезагрузить nginx и php-fpm:

systemctl reload nginx
systemctl start php7.4-fpm
systemctl enable php7.4-fpm
systemctl status php7.4-fpm

Шаг 4 – Устанавливаем Elasticsearch

Подробную информацию об установке Elasticsearch можно посмотреть здесь.

Для начала нам нужно установить Java:

apt install openjdk-11-jdk

Затем вводим:

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Обновляем репозиторий:

apt update

И устанавливаем Elasticsearch:

apt install elasticsearch
systemctl start elasticsearch
systemctl enable elasticsearch

Шаг 5 – Устанавливаем Redis и Composer

Чтобы установить Redis, вводим:

apt install redis-server

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

Composer является менеджером зависимостей для PHP, с помощью которого можно устанавливать пакеты, необходимые для проекта библиотеки и зависимости.

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.16

Проверяем composer:

composer

Переходим в директорию, где будет находиться наш проект:

cd /var/www/html/

Даем права на владение директорией текущему пользователю:

chown -R $USER:$USER /var/www/html/

Далее вам нужно будет зарегистрироваться на сайте Magento, для того чтобы получить Public Key и Private Key. При установке во время авторизации нам нужны будут эти данные. 

Далее нам необходимо создать новый проект Composer для Magento 2:

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

Создаем виртуальный хост для нашего сайта:

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/your_domain
nano /etc/nginx/sites-available/your_domain
upstream fastcgi_backend {
  server  unix:/run/php/php7.4-fpm.sock;
}

server {
        listen 80;
        listen [::]:80;
        set $MAGE_ROOT /var/www/html/magento2;
        include /var/www/html/magento2/nginx.conf.sample;
        server_name your_domain www.your_domain;
}

Делаем ссылку:

ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Проверяем конфигурацию на ошибки

 nginx -t

Если syntax is ok, перезагружаем nginx:

systemctl restart nginx

Даем необходимые права текущему пользователю:  

cd /var/www/html/magento2
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 {} +
find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;
chown -R :www-data .
chmod u+x bin/magento

Теперь всё готово к установке Magento 2. Переходим в директорию с дистрибутивом
cd /var/www/html/magento2 и запускаем команду установки. Значения нужно устанавливать в соответствии с вашими данными.

php bin/magento setup:install --base-url=http://yourdomain \ --db-host=127.0.0.1 --db-name=db_mag2 --db-user=usermag2 --db-password=Password \ --admin-firstname=Magento --admin-lastname=User --admin-email=user@example.com \ --admin-user=admin --admin-password=admin123 --language=en_US \ --currency=USD --timezone=America/Chicago --use-rewrites=1 \ --search-engine=elasticsearch7 --elasticsearch-host=127.0.0.1 \ --elasticsearch-port=9200

По окончанию установки генерируется индивидуальная ссылка в админ-панель Magento 2.

Выполняем команду crontab, чтобы создать cronjob:

crontab -u www-data -e

И  добавляем следующую строку:

* * * * * /usr/bin/php /var/www/html/myMagento/bin/magento cron:run | grep -v "Запуск задачи по расписанию" >> /var/www/html/myMagento/var/log/magento.cron.log

Шаг 6 – Конфигурируем Redis

Далее конфигурируем Redis, как указано в https://devdocs.magento.com/guides/v2.4/config-guide/redis/redis-pg-cache.html .

Шаг 7 – Устанавливаем SSL-сертификат

Для защиты клиентских данных устанавливаем SSL-сертификат. Приобрести SSL по доступным ценам, а также узнать, как его установить, вы можете на этой странице.

Пример конфигурационного файла виртуального хоста после установки SSL-сертификата:

nano /etc/nginx/sites-available/your_domain
upstream fastcgi_backend {
        server  unix:/run/php/php7.4-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name your_domain www.your_domain;
    return 301 https://$your_domain$request_uri;
}

server {

        listen 443 ssl;
        server_name your_domain www.your_domain;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        include /var/www/magento2/nginx.conf.sample;
}     

Поздравляем! Базовая установка Magento 2 завершена.  

Возможно, вас заинтересует

post thumbnail

Интеграция OpenCart в CDN

С 1 марта 2020 года услуга CDN хостинга поддерживается в более современном и выгодном...

Viktoriya Mazur | Обновлено: 15.09.2021

post thumbnail

Как перенести сайт на Битрикс на другой хостинг

Битрикс – это единственная с популярных CMS, имеющая внутренние инструменты для создания копии сайта и...

Diana Honcharenko | Обновлено: 22.09.2021

post thumbnail

Интеграция WordPress в CDN

С 1 марта 2020 года услуга CDN хостинга поддерживается в более современном и выгодном...

Diana Honcharenko | Обновлено: 15.09.2021

post thumbnail

CMS хостинг: возможности и преимущества

1. Для чего нужна CMS и что такое система управления сайтом CMS (Content Management...

Diana Baranovska | Обновлено: 11.01.2022