Установка сервера
Серверная часть 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