环境要求

生产环境建议至少配置 8 核 CPU 和 16 GB 内存,以确保所有服务可以充分利用资源并留有余量。

硬件要求

最低配置(开发/测试环境)

  • CPU:4 核心
  • 内存:8 GB RAM
  • 磁盘空间:50 GB SSD
  • 网络:稳定的互联网连接(用于拉取 Docker 镜像和外部行情数据)

推荐配置(生产环境)

  • CPU:8 核心或更高
  • 内存:16 GB RAM 或更高
  • 磁盘空间:100 GB SSD 或更高(根据数据量调整)
  • 网络:高速稳定网络连接(建议 100 Mbps 以上)

资源分配说明

根据 Docker Compose 配置,各服务的资源限制如下:

服务CPU 预留CPU 限制内存预留内存限制用途
MySQL1 核4 核1 GB4 GB业务数据库
Redis Cache0.5 核4 核512 MB4 GB业务缓存
Redis Market0.5 核4 核512 MB2 GB行情数据
Elasticsearch0.5 核2 核1 GB4 GBK线数据存储
SODOS RunServer0.5 核6 核512 MB4 GB后端服务
LibreTranslate0.5 核2 核512 MB2 GB翻译服务
ElasticVue0.1 核0.5 核128 MB512 MBES 管理界面
总计~4 核~22 核~4 GB~20 GB-
生产环境建议至少配置 8 核 CPU 和 16 GB 内存,以确保所有服务可以充分利用资源并留有余量。

软件要求

操作系统

支持以下操作系统:

  • Linux
  • Ubuntu 20.04 LTS / 22.04 LTS(推荐)
  • Debian 10 / 11
  • CentOS 7 / 8
  • RHEL 7 / 8
  • macOS
  • macOS 11 (Big Sur) 或更高版本
  • Windows
  • Windows 10 Pro / Enterprise(需启用 WSL 2)
  • Windows 11 Pro / Enterprise
  • Windows Server 2019 / 2022
生产环境强烈推荐使用 Linux 系统,以获得最佳性能和稳定性。

Docker 环境

Docker Engine

  • 版本要求:Docker Engine 20.10+ 或 Docker Desktop 4.0+
  • 推荐版本:Docker Engine 24.0+ 或 Docker Desktop 4.20+

安装方式

# Ubuntu/Debian
curl -fsSL https://get.docker.com | bash
sudo usermod -aG docker $USER

# macOS/Windows
# 下载并安装 Docker Desktop
# https://www.docker.com/products/docker-desktop

Docker Compose

  • 版本要求:Docker Compose V2 (2.0+)
  • 推荐版本:Docker Compose 2.20+

验证安装

docker --version
# Docker version 24.0.0 or higher

docker compose version
# Docker Compose version v2.20.0 or higher
Docker Compose V2 是 Docker Desktop 的内置组件,使用 docker compose 命令(无连字符)。如果您使用的是旧版本 docker-compose(有连字符),请升级到 V2。

端口占用

系统运行时会占用以下端口,请确保这些端口未被其他服务占用:

端口服务协议说明
3306MySQLTCP数据库服务
6380Redis CacheTCP业务缓存
6381Redis MarketTCP行情数据缓存
9200ElasticsearchHTTPK线数据存储
9300ElasticsearchTCPES 集群通信
8080ElasticVueHTTPES 管理界面
9000LibreTranslateHTTP翻译服务
9501SODOS RunServerTCPHyperf WebSocket 服务
9510SODOS RunServerTCPHyperf HTTP 服务
9511SODOS RunServerTCPHyperf RPC 服务(可选)
9520SODOS ManagerHTTP管理后台前端
9602WS GatewayHTTP/WSWebSocket 网关(Go 服务)
80NginxHTTPHTTP 反向代理
443NginxHTTPSHTTPS 反向代理

检查端口占用

# Linux/macOS
sudo lsof -i :3306
sudo netstat -tulnp | grep 3306

# Windows
netstat -ano | findstr :3306

系统配置要求

内核参数(Linux)

为确保 Elasticsearch 和 Redis 正常运行,需要调整以下内核参数:

1. 修改 /etc/sysctl.conf

# Elasticsearch 需要
vm.max_map_count=262144

# 网络优化
net.core.somaxconn=65535
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.ip_local_port_range=1024 65535
net.ipv4.tcp_tw_reuse=1

# 文件描述符限制
fs.file-max=2097152

应用配置:

sudo sysctl -p

2. 修改 /etc/security/limits.conf

*  soft  nofile  65536
*  hard  nofile  65536
*  soft  nproc   4096
*  hard  nproc   4096

重新登录生效。

3. 禁用 Swap(可选,推荐生产环境)

# 临时禁用
sudo swapoff -a

# 永久禁用(编辑 /etc/fstab,注释掉 swap 行)
sudo sed -i '/swap/d' /etc/fstab
禁用 Swap 前请确保物理内存充足,否则可能导致 OOM(内存溢出)。

磁盘空间规划

建议按以下方式规划磁盘空间:

目录用途推荐空间备注
/var/lib/dockerDocker 镜像和容器20 GB存储 Docker 数据
./mysql/dataMySQL 数据10-50 GB根据业务数据量调整
./redis_cache/dataRedis 缓存持久化5-10 GBRDB + AOF 文件
./redis_market/dataRedis 行情数据2-5 GB轻量级持久化
./elasticsearch/dataElasticsearch K线数据20-100 GB根据 K 线历史数据量调整
./logs应用日志5-10 GB建议定期清理

磁盘 I/O 性能

  • MySQL:推荐 SSD(IOPS ≥ 5000)
  • Elasticsearch:推荐 NVMe SSD(IOPS ≥ 10000)
  • Redis:推荐 SSD(IOPS ≥ 3000)

时区配置

系统默认使用 UTC+8 (Asia/Shanghai) 时区,日线、周线、月线的开盘时间基于此时区的 8:00 AM 计算。

设置时区

# Linux
sudo timedatectl set-timezone Asia/Shanghai

# 验证
date

Docker 容器时区

容器会从宿主机继承时区,或通过环境变量 TZ=Asia/Shanghai 设置。

依赖服务

必需服务

以下服务是系统运行的必要组件,由 Docker Compose 自动部署:

  1. MySQL 8.0
  • 业务数据存储
  • 用户、订单、资产、币种配置等
  1. Redis 7 (两个实例)
  • Redis Cache:业务缓存(RDB + AOF 持久化)
  • Redis Market:行情数据缓存(轻量级持久化)
  1. Elasticsearch 8.12.2
  • K线数据存储
  • 时序数据查询
  1. SODOS RunServer (Hyperf)
  • PHP 后端服务
  • 业务逻辑处理

可选服务

  1. LibreTranslate
  • 自动翻译服务
  • 用于多语言支持
  • 可关闭以节省资源
  1. ElasticVue
  • Elasticsearch Web UI
  • 用于查看和管理 ES 数据
  • 仅开发/调试使用
  1. SODOS Wallet
  • 链上钱包操作服务
  • 仅需要链上充提功能时部署

外部依赖

  1. Binance API
  • 行情数据来源(Ticker、Trade、Kline)
  • 需要稳定的网络访问
  • 可能需要代理(根据地区)
  1. DNS 服务
  • 域名解析
  • 需配置 A 记录指向服务器 IP
  1. SSL 证书(可选)
  • HTTPS 支持
  • 推荐使用 Let's Encrypt 免费证书

网络要求

带宽

  • 开发环境:10 Mbps 上行 + 100 Mbps 下行
  • 生产环境:100 Mbps 上行 + 1 Gbps 下行(推荐)

防火墙配置

需要开放以下端口(根据实际部署调整):

入站规则

# HTTP/HTTPS(公网访问)
80/tcp (HTTP)
443/tcp (HTTPS)

# 管理端口(仅内网或 VPN 访问)
3306/tcp (MySQL)
6380/tcp (Redis Cache)
6381/tcp (Redis Market)
9200/tcp (Elasticsearch)
8080/tcp (ElasticVue)
9520/tcp (SODOS Manager)

出站规则

# 允许访问 Binance API
443/tcp (HTTPS) -> stream.binance.com
443/tcp (HTTPS) -> api.binance.com

# Docker Hub(镜像拉取)
443/tcp (HTTPS) -> hub.docker.com
443/tcp (HTTPS) -> registry-1.docker.io

# Elasticsearch
9200/tcp, 9300/tcp (集群通信)

UFW 配置示例(Ubuntu)

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from 192.168.0.0/16 to any port 3306 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 6380 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 9200 proto tcp
sudo ufw enable

域名配置

系统使用多个子域名,需要配置 DNS A 记录:

子域名用途示例
api.*API 接口api.example.com
manager.*管理后台manager.example.com
h5.*H5 移动端h5.example.com
pc.*PC 网页端pc.example.com
www.* 或根域名官网www.example.com

DNS 配置示例

api.example.com       A     1.2.3.4
manager.example.com   A     1.2.3.4
h5.example.com        A     1.2.3.4
pc.example.com        A     1.2.3.4
www.example.com       A     1.2.3.4

或使用泛域名解析(通配符):

*.example.com         A     1.2.3.4

安全要求

1. 密码配置

系统默认密码位于 runner-compose.yml 中,生产环境必须修改

# MySQL
MYSQL_ROOT_PASSWORD: ********************************
MYSQL_PASSWORD: ********************************

# Redis (redis_cache/redis.conf 和 redis_market/redis.conf)
requirepass ********************************

# Elasticsearch
ELASTIC_PASSWORD: ********************************

生成强密码

openssl rand -base64 32

2. 网络隔离

  • 数据库、Redis、Elasticsearch 应仅允许内网访问
  • 使用 Docker 网络隔离(data_network
  • 生产环境建议使用 VPN 或堡垒机访问管理端口

3. SSH 安全

# 禁用 root 登录
PermitRootLogin no

# 禁用密码登录,仅使用密钥
PasswordAuthentication no

# 修改默认 SSH 端口
Port 2222

4. 定期备份

  • MySQL:每日全量备份 + 增量备份
  • Redis:RDB + AOF 持久化
  • Elasticsearch:定期快照备份
  • 日志:保留至少 30 天

性能优化建议

1. MySQL 优化

# 根据内存调整
innodb_buffer_pool_size = 50%-70% 总内存
max_connections = 1000

# 日志优化
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2  # 高并发场景

2. Redis 优化

# 内存策略
maxmemory-policy allkeys-lru

# I/O 线程(Redis 6+)
io-threads 4
io-threads-do-reads yes

# 持久化策略
appendonly yes
appendfsync everysec  # 折衷性能与持久性

3. Elasticsearch 优化

# JVM 堆内存(不超过 50% 总内存,最大 32GB)
ES_JAVA_OPTS: "-Xms2g -Xmx4g"

# 线程池
thread_pool.write.size: 3
thread_pool.search.size: 6

# 索引缓冲
indices.memory.index_buffer_size: 20%

4. Docker 优化

// /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

验证清单

在开始部署前,请确认以下事项:

  • 服务器硬件满足最低要求(CPU ≥4核,内存 ≥8GB,磁盘 ≥50GB)
  • 操作系统已安装并更新到最新版本
  • Docker Engine 20.10+ 和 Docker Compose V2 已安装
  • 所需端口未被占用(3306、6380、6381、9200 等)
  • 内核参数已调整(vm.max_map_count=262144
  • 文件描述符限制已调整(ulimit -n 65536
  • 磁盘空间充足(至少 50GB 可用空间)
  • 网络连接稳定(可访问 Docker Hub 和 Binance API)
  • DNS 已配置(子域名 A 记录指向服务器)
  • 防火墙规则已配置(开放 80、443 端口)
  • 生产环境已修改默认密码
完成清单后,即可进入快速安装步骤

加密数字货币交易所系统-WEB3区块链开发者 • © 2026