Skip to content

纯净Linux部署

本文档详细介绍如何在纯净的Linux系统上部署MISEB多商户电商管理系统。

前提条件

  • 一台满足系统要求的Linux服务器
  • root用户权限或sudo权限
  • 服务器已联网

第一步:安装Docker

根据您的操作系统,选择对应的安装方式:

CentOS 7/8/Stream

bash
# 卸载旧版本
sudo yum remove -y docker docker-client docker-client-latest docker-common \
    docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker源(使用阿里云镜像加速)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动Docker并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version
docker compose version

Ubuntu 18.04/20.04/22.04/24.04

bash
# 卸载旧版本
sudo apt-get remove -y docker docker-engine docker.io containerd runc

# 更新包索引
sudo apt-get update

# 安装依赖
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

# 添加Docker GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version
docker compose version

Debian 10/11/12

bash
# 卸载旧版本
sudo apt-get remove -y docker docker-engine docker.io containerd runc

# 更新包索引
sudo apt-get update

# 安装依赖
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

# 添加Docker GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version
docker compose version

Rocky Linux / AlmaLinux 8/9

bash
# 卸载旧版本
sudo dnf remove -y docker docker-client docker-client-latest docker-common \
    docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

# 安装依赖
sudo dnf install -y dnf-plugins-core

# 添加Docker源
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装Docker
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version
docker compose version

通用一键安装脚本

适用于大多数Linux发行版:

bash
curl -fsSL https://get.docker.com | sh
sudo systemctl start docker
sudo systemctl enable docker

第二步:配置Docker镜像加速

国内服务器建议配置镜像加速:

bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

第三步:上传部署包

首先下载部署包:

  • .tar.gz格式: 点击下载

    https://ivett.oss-cn-beijing.aliyuncs.com/release/miseb-mer-java/miseb-deploy.tar.gz

将部署包上传到服务器:

bash
# 创建部署目录
sudo mkdir -p /opt/miseb
cd /opt/miseb

# 上传部署包(使用scp或其他方式)
# scp miseb-deploy.tar.gz root@your-server:/opt/miseb/

# 解压部署包
tar -xzf miseb-deploy.tar.gz
cd deploy

目录结构

解压后目录结构:

/opt/miseb/deploy/
├── .env.example              # 环境变量模板
├── docker-compose.yml        # Docker Compose配置(包含所有服务)
├── start.sh                  # 一键启动脚本
├── stop.sh                   # 停止脚本
├── admin/                    # Admin服务Dockerfile
├── front/                    # Front服务Dockerfile
├── nginx/                    # Nginx配置
│   ├── conf.d/               # 站点配置文件
│   └── ssl/                  # SSL证书目录(需自行上传证书)
├── mysql/                    # MySQL初始化脚本和配置
├── redis/                    # Redis配置
├── elasticsearch/            # ES配置
├── logstash/                 # Logstash配置
├── minio/                    # MinIO配置
├── data/                     # 数据目录
└── logs/                     # 日志目录

第四步:配置环境变量

bash
# 复制配置模板
cp .env.example .env

# 编辑配置文件
vim .env

配置SSL证书(HTTPS支持):

如果您需要开启 HTTPS,请将您的 SSL 证书文件上传至 nginx/ssl/ 目录,并按以下规则命名(推荐):

  • 证书文件:server.crt
  • 私钥文件:server.key

如果不按照上述命名,您需要修改 nginx/conf.d/default.conf 中的 SSL 配置路径。

必须修改的配置项:

bash
# ===================== Docker镜像仓库 =====================
DOCKER_REGISTRY=docker.cdiwit.com/miseb-multi-mer
IMAGE_TAG=1.0.0

# ===================== MySQL配置 =====================
MYSQL_VERSION=8.0
MYSQL_ROOT_PASSWORD=YourStrongRootPassword123!
MYSQL_DATABASE=miseb
MYSQL_USERNAME=miseb
MYSQL_PASSWORD=YourStrongPassword123!

# ===================== Redis配置 =====================
REDIS_PASSWORD=YourRedisPassword123!

# ===================== Elasticsearch配置 =====================
ES_VERSION=9.2.2
ES_JAVA_OPTS="-Xms512m -Xmx512m"

# ===================== MinIO配置 =====================
MINIO_VERSION=2024.08
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=YourMinioPassword123!

# ===================== JVM配置 =====================
ADMIN_JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
FRONT_JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"

# ===================== 域名配置 =====================
# 主域名(用于nginx server_name)
MISEB_DOMAIN=www.example.com

# ===================== 商品图片配置 =====================
# 图片访问域名(用于商品图片URL生成)
IMAGE_DOMAIN=https://www.example.com
# 图片存储类型: local(本地), minio(MinIO对象存储)
IMAGE_STORAGE_TYPE=local

安全警告

请务必修改所有默认密码!使用默认密码会导致严重的安全风险。

第五步:登录Docker仓库

bash
docker login docker.cdiwit.com -u 'robot$guest' --password-stdin <<< 'vXvsCo4PUQr7HutP4nfGCFPicYMeNxLh'

或使用交互式登录:

bash
docker login docker.cdiwit.com -u 'robot$guest'
# 输入密码:vXvsCo4PUQr7HutP4nfGCFPicYMeNxLh

账户说明

  • 用户名:robot$guest(注意使用单引号包裹,防止 $ 符号被Shell解析)
  • 密码:vXvsCo4PUQr7HutP4nfGCFPicYMeNxLh
  • 此为只读账户,仅用于拉取镜像

第六步:启动服务

方式一:一键启动(推荐)

bash
# 赋予执行权限
chmod +x start.sh stop.sh

# 启动服务
./start.sh

脚本会自动完成以下操作:

  1. 拉取所有Docker镜像
  2. 启动基础设施服务(MySQL、Redis、Elasticsearch、Logstash、MinIO)
  3. 等待基础设施就绪
  4. 初始化数据库(首次启动)
  5. 启动应用服务(Admin、Front、Nginx)

方式二:手动启动

bash
# 步骤1:拉取所有镜像
docker compose pull

# 步骤2:启动所有服务
docker compose up -d

# 步骤3:查看服务状态
docker compose ps

第七步:验证部署

检查服务状态

bash
# 查看所有服务状态
docker compose ps

# 查看所有容器详细信息
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

确认以下容器运行正常:

基础设施容器:

  • miseb-mysql
  • miseb-redis
  • miseb-elasticsearch
  • miseb-logstash
  • miseb-minio

应用容器:

  • miseb-admin
  • miseb-front
  • miseb-nginx

所有服务状态应显示为 runninghealthy

访问系统

服务地址
PC商城http://服务器IP/
H5商城http://服务器IP/h5/
平台管理http://服务器IP/platform/
商户管理http://服务器IP/merchant/
MinIO控制台http://服务器IP:9001/

默认账号

账号密码
平台管理端admin123456
商户管理端需先入驻-

安全提示

首次登录后请立即修改默认密码!

日常运维

查看日志

bash
# 查看Admin日志
docker logs -f --tail 100 miseb-admin

# 查看Front日志
docker logs -f --tail 100 miseb-front

# 查看Nginx日志
docker logs -f --tail 100 miseb-nginx

# 查看MySQL日志
docker logs -f --tail 100 miseb-mysql

停止服务

bash
cd /opt/miseb/deploy

# 使用停止脚本
./stop.sh

# 或手动停止
docker compose down

重启服务

bash
cd /opt/miseb/deploy

# 重启所有服务
docker compose restart

# 重启单个服务
docker compose restart miseb-admin
docker compose restart miseb-front

更新应用

bash
cd /opt/miseb/deploy

# 拉取新镜像
docker compose pull

# 重新部署
docker compose up -d --force-recreate

备份数据

bash
# 创建备份目录
mkdir -p /opt/backup/miseb

# 备份MySQL
docker exec miseb-mysql mysqldump -u root -p${MYSQL_ROOT_PASSWORD} miseb > /opt/backup/miseb/miseb_$(date +%Y%m%d_%H%M%S).sql

# 删除7天前的备份
find /opt/backup/miseb -name "*.sql" -mtime +7 -delete

常见问题

启动脚本报错 required file not found

现象: 执行 ./start.sh./stop.sh 时提示:

bash
-bash: ./start.sh: cannot execute: required file not found

bash
/bin/bash^M: bad interpreter: No such file or directory

原因: 脚本文件是在Windows环境下编辑或保存的,换行符为 CRLF,而Linux系统仅识别 LF

解决方案

方法一:使用sed命令转换(推荐)

bash
sed -i 's/\r$//' *.sh
chmod +x *.sh

方法二:使用dos2unix工具

bash
# CentOS
yum install -y dos2unix
# Ubuntu
apt-get install -y dos2unix

# 转换格式
dos2unix *.sh
chmod +x *.sh

端口被占用

bash
# 检查端口占用
netstat -tlnp | grep -E '80|3306|6379|9200|9001'

# 停止占用端口的服务
systemctl stop nginx  # 如果80端口被nginx占用

Elasticsearch启动失败

bash
# 检查日志
docker logs miseb-elasticsearch

# 常见问题:vm.max_map_count太小
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

内存不足

调整 .env 文件中的JVM配置:

bash
ES_JAVA_OPTS=-Xms256m -Xmx256m
ADMIN_JAVA_OPTS=-Xms256m -Xmx512m
FRONT_JAVA_OPTS=-Xms256m -Xmx512m

然后重启服务:

bash
docker compose up -d

容器无法启动

问题:提示镜像拉取失败

解决方案

  1. 检查是否已登录Docker仓库
bash
docker login docker.cdiwit.com
  1. 检查网络连接
bash
ping docker.cdiwit.com

防火墙设置

确保放行以下端口:

  • 80 (HTTP)
  • 443 (HTTPS)
  • 9001 (MinIO控制台,可选)
bash
# CentOS/RHEL
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

# Ubuntu/Debian
ufw allow 80/tcp
ufw allow 443/tcp

部署架构说明

MISEB使用单一 docker-compose.yml 文件进行容器编排,包含所有服务:

基础设施服务

服务容器名端口说明
MySQLmiseb-mysql3306主数据库
Redismiseb-redis6379缓存和Session
Elasticsearchmiseb-elasticsearch9200搜索和日志
Logstashmiseb-logstash5044日志收集
MinIOmiseb-minio9000/9001对象存储

应用服务

服务容器名端口说明
Adminmiseb-admin8080平台端/商户端API
Frontmiseb-front8081用户端API
Nginxmiseb-nginx80前端静态资源和反向代理

下一步

成都艾唯特软件有限公司