纯净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 versionUbuntu 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 versionDebian 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 versionRocky 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脚本会自动完成以下操作:
- 拉取所有Docker镜像
- 启动基础设施服务(MySQL、Redis、Elasticsearch、Logstash、MinIO)
- 等待基础设施就绪
- 初始化数据库(首次启动)
- 启动应用服务(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
所有服务状态应显示为 running 或 healthy。
访问系统
| 服务 | 地址 |
|---|---|
| PC商城 | http://服务器IP/ |
| H5商城 | http://服务器IP/h5/ |
| 平台管理 | http://服务器IP/platform/ |
| 商户管理 | http://服务器IP/merchant/ |
| MinIO控制台 | http://服务器IP:9001/ |
默认账号
| 端 | 账号 | 密码 |
|---|---|---|
| 平台管理端 | admin | 123456 |
| 商户管理端 | 需先入驻 | - |
安全提示
首次登录后请立即修改默认密码!
日常运维
查看日志
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容器无法启动
问题:提示镜像拉取失败
解决方案:
- 检查是否已登录Docker仓库
bash
docker login docker.cdiwit.com- 检查网络连接
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 文件进行容器编排,包含所有服务:
基础设施服务
| 服务 | 容器名 | 端口 | 说明 |
|---|---|---|---|
| MySQL | miseb-mysql | 3306 | 主数据库 |
| Redis | miseb-redis | 6379 | 缓存和Session |
| Elasticsearch | miseb-elasticsearch | 9200 | 搜索和日志 |
| Logstash | miseb-logstash | 5044 | 日志收集 |
| MinIO | miseb-minio | 9000/9001 | 对象存储 |
应用服务
| 服务 | 容器名 | 端口 | 说明 |
|---|---|---|---|
| Admin | miseb-admin | 8080 | 平台端/商户端API |
| Front | miseb-front | 8081 | 用户端API |
| Nginx | miseb-nginx | 80 | 前端静态资源和反向代理 |
