Установка сервера

Внимание! Для работы с магазином необходимо приобрести лицензию, как минимум на одного пользователя. Это легко сделать в разделе Учетная запись, где указывается логин пользователя и домен сайта, например admin@shop-name.com.

Серверная часть Melbis Shop 6.x доступна в двух вариантах: 

Первый вариант, это когда уже есть готовый и настроенный веб-сервер сайта и нужны только скрипты Melbis Shop. В этом случае, Вы можете скачать их с GitHub: https://github.com/melbis/melbis-shop. Распакуйте архив и скопируйте скрипты в корень сайта. Также, обратите внимание на системные требования, необходимые для их корректной работы. Затем скачайте и установите клиентскую часть Melbis Shop и выполните инсталляцию базы данных.

Второй вариант установки сервера Melbis Shop основан на использовании технологии контейнеризации. В нашем случае речь идёт о Docker-образе: https://hub.docker.com/r/kasdim/melbis-shop. Это очень удобный вариант, который упрощает установку ядра и скриптов Melbis Shop на любую серверную площадку с выделенным или виртуальным сервером. Например, DigitalOcean или Hetzner. В этом случае, нет необходимости приобретать и устанавливать какую-то панель управления и настраивать СУБД, интерпретатор PHP, сервера Apache и Ngnix. Используя технологию контейнеризации и готовый образ ядра Melbis Shop, Вы сможете легко запустить проект. 

Для примера мы рассмотрим установку сервера на базе Ubuntu 24.x LTS с самого начала. Но, если Вы уже имеете свой настроенный сервер, то можете сразу переходить ко второму этапу, где будет описан процесс запуска Melbis Shop в контейнере.

Этап I - установка сервера Ubuntu

После покупки сервера, Вам на почту придет SSH-доступ к нему на самом высоком уровне root. Первая команда выведет общую информацию о конфигурации Вашего сервера:

# hostnamectl

Для того чтобы сменить пароль на новый, выполните команду:

# passwd

Далее, по общепринятым соображениям безопасности, необходимо завести промежуточного пользователя, через которого мы будем попадать в систему:

# adduser melbis

После регистрации нового пользователя melbis перегрузите систему командой:

# shutdown -r now

и авторизируйтесь уже сначала как пользователь melbis, а затем перейдите в режим root с помощью команды:

# su -

Следущим шагом будет обновление репозиториев установочных дистрибутивов:

# apt-get update

Можно установить удобный файловый навигатор Midnight Commander:

# apt-get install mc

Теперь можно приступать к установке системы Docker, делается это за несколько шагов:

# apt-get install ca-certificates curl gnupg
# install -m 0755 -d /etc/apt/keyrings
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# chmod a+r /etc/apt/keyrings/docker.gpg
# echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt-get update
# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# apt-get install docker-compose 


Этап II - установка сервера Melbis Shop 6.4.0

Подготовим первым делом каталоги:

# mkdir /var/melbis
# mkdir /var/melbis/db
# mkdir /var/melbis/www
# mkdir /var/melbis/certs
# mkdir /var/melbis/certbot

Перейдем в каталог сервера Melbis Shop:

# cd /var/melbis

Создадим конфигурационный файл контейнера, например такой:

# nano docker-compose.yml
version: '3'
services:
  db:
    image: mysql:8.4
    environment:
      MYSQL_ROOT_PASSWORD: mysql_passkey
      MYSQL_DATABASE: melbis
      MYSQL_USER: melbis
      MYSQL_PASSWORD: melbis_pass
      MYSQL_CHARACTER_SET_SERVER: utf8mb4
      MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
    volumes:
      - /var/melbis/db:/var/lib/mysql
    restart: always

  web:
    depends_on:
      - db
    image: kasdim/melbis-shop:latest
    volumes:
      - /var/melbis/www/:/var/www/html/
      - /var/www/html/core
    restart: always

  nginx:
    image: nginx:latest
    volumes:
      - /var/melbis/nginx.conf:/etc/nginx/nginx.conf
      - /var/melbis/certs:/etc/nginx/certs
      - /var/melbis/certbot:/etc/nginx/certbot
    ports:
      - 80:80
      - 443:443
    depends_on:
      - web
    restart: always

Далее настроим прокси-сервер Ngnix:

# nano nginx.conf
events {}
http {
    server {
        listen 80;
        listen [::]:80;
        listen 443 ssl;
        listen [::]:443 ssl;
        client_max_body_size 64M;
        ssl_certificate /etc/nginx/certs/fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/privkey.pem;
        location /.well-known/ {
            root /etc/nginx/certbot;
        }

        location / {
            proxy_pass http://web:80;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Теперь создадим установочный ключ admin.here и конфигурационный файл магазина:

# touch www/admin.here
# nano www/config.php
<?php
define('DB_HOST_NAME', 'db');
define('DB_USER_NAME', 'melbis');
define('DB_USER_PASS', 'melbis_pass');
define('DB_NAME', 'melbis');
define('DB_NICK', 'ms');
define('DB_CHARSET', 'utf8mb4');
define('DB_COMMAND', 'SET sql_mode = CONCAT(@@sql_mode, \',NO_UNSIGNED_SUBTRACTION\');');
define('TIME_ZONE', 'Europe/Kyiv');
define('SHOP_LOCALE', 'ru_RU.UTF8');
define('DEBUG_CODE', 'code');
define('VERSION_CACHE', '1000');
define('OBFUSCATE_URL', 'https://shop.com/minify.php');
define('SHOP_CHARSET', 'UTF-8');
define('DESKTOP_CHARSET', 'WIN1251');
define('IP_LIST', '');
define('TEMPLATE', 'default');
define('BACKUP_TIME_BEGIN', '05:00:00');
define('BACKUP_TIME_END', '05:30:00');
define('USER_LOG', 'False');
?>

Далее, создадим SSL-сертификат, для того чтобы сайт был доступен по HTTPS-протоколу:

# openssl req -x509 -newkey rsa:4096 -keyout /var/melbis/certs/privkey.pem -out /var/melbis/certs/fullchain.pem -days 3650 -nodes

Запускаем контейнеры:

# docker-compose up -d

На этом этапе магазин уже доступен и его можно открыть в браузере. Это можно сделать указав в адресной строке IP-адрес сервера. При открытии сайта появится сообщение об ошибке: Forbidden. Пока, это нормально, поскольку было установлено только ядро сервера Melbis Shop, без скриптов витрины.


Этап III - установка SSL-сертификата

Прежде чем продолжить, Вам надо убедиться, что доменное имя Вашего магазина уже работает. Для этого надо добавить A-запись в NS-среверах домена, указав IP-адрес этого сервера. Пока что Ваш магазин будет открываться в браузере с предупреждением, что сертификат не имеет удостоверяющей подписи. Для того чтобы магазин был доступен по HTTPS-протоколу требуется установить SSL-сертификат и выполнить его активацию. Для это устанавливаем cerbot, который будет обновлять SSL-сертификат:

# apt-get install certbot

Запускаем его и ждем ответ о получении сертификата (не забудьте поменять your-domain.com):

# certbot certonly --webroot --register-unsafely-without-email -w /var/melbis/certbot -d your-domain.com

Копируем сертификат в нужную нам папку:

# cp -f /etc/letsencrypt/live/your-domain.com/* /var/melbis/certs/

Перезапускаем сервер Ngnix в контейнере:

# docker exec melbis_nginx_1 nginx -s reload

И добавляем в планировщик автоматическое обновление сертификата:

# crontab -e
0 3 * * * certbot renew --quiet && cp -f /etc/letsencrypt/live/your-domain.com/* /var/melbis/certs/ && docker exec melbis_nginx_1 nginx -s reload

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


Этап IV - установка демо-скриптов витрины магазина

Скачайте актуальную версию клиентской части Melbis Shop (она будет первой в списке) и выполнить её установку. Затем запустить и указать в параметрах подключения доменное имя Вашего сайта и логин admin, пароль для демо-магазина тоже admin. Если все было сделано верно, то в Диспетчере магазина появится сообщение, что ключи найдены.

Зайдите в меню магазина: Проектирование - Инсталляция. Проверьте правильность настроек, в том числе для подключения к базе данных (кнопка Проверка). При необходимости измените их и выполните команду Сохранить. Если Вы готовы приступить к созданию своего магазина, то выберете Исходные данные (язык) и нажмите кнопку Инсталляция.

Либо, мы рекомендуем вначале установить минимальный демонстрационный магазин: Melbis Shop Demo, скачать который можно в разделе Установочные пакеты. Чтобы установить его, зайдите в меню магазина: Проектирование Инсталляция и перейдите на закладку Загрузка магазина.

В любом случае, после того как будет выполнена инсталляция или загрузка магазина, не забудьте удалить установочный файл-ключ admin.here:

# rm www/admin.here


Этап IV - настройка безопасности магазина

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

# apt-get install fail2ban
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

отредактировать конфигурацию через редактор:

# nano /etc/fail2ban/jail.local
bantime.increment = true
bantime.factor = 2
bantime = 60m
findtime = 10m
maxretry = 5

Далее, перезапускаем:

# systemctl restart fail2ban

Далее, будет правильно установить и настроить фаервол UFW для системы. Скачиваем и устанавливаем:

# apt install ufw -y

Запрещаем по умолчанию все входящие соединения:

# ufw default deny incoming

и разрешаем все исходящие:

# ufw default allow outgoing

разрешаем доступ по SSH, а также доступ к сайту по 80 и 443 порту:

# ufw allow OpenSSH
# ufw allow 80/tcp
# ufw allow 443/tcp

Проверяем правила:

# ufw show added

Если все верно, то включаем фаервол:

# ufw enable

Проверяем:

# ufw status verbose

Теперь произведем проверку и установку обновлений безопасности:

# apt update && apt upgrade -y

и очистим от ненужных пакетов:

# apt autoremove -y && apt autoclean -y