安装部署
本指南提供U盾/SIMKey厂家管理系统的详细安装和部署说明。
部署方式选择
Docker部署(推荐)
✅ 优点:
- 一键启动,无需配置环境
- 所有依赖已打包
- 版本管理简单
- 适合快速体验和生产环境
❌ 限制:
- 需要安装Docker
- 占用一定磁盘空间
手动部署
✅ 优点:
- 完全控制
- 可自定义配置
- 适合开发调试
❌ 限制:
- 需要手动安装JDK、Node.js等
- 配置复杂
- 需要一定技术基础
方式一: Docker部署
环境要求
- Docker: 20.10+
- Docker Compose: 2.0+
- 磁盘空间: 至少5GB
- 内存: 至少4GB
安装Docker
Windows
- 下载 Docker Desktop for Windows
- 运行安装程序
- 启动Docker Desktop
- 确认安装成功:
docker --version
docker-compose --versionMac
- 下载 Docker Desktop for Mac
- 安装.dmg文件
- 启动Docker Desktop
- 确认安装成功:
docker --version
docker-compose --versionLinux (Ubuntu/Debian)
# 更新包索引
sudo apt-get update
# 安装依赖
sudo apt-get install ca-certificates curl gnupg lsb-release
# 添加Docker GPG密钥
curl -fsSL https://download.docker.com/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://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
# 确认安装成功
docker --version
docker compose version快速部署
1. 克隆项目
git clone https://github.com/chainlesschain/manufacturer-system.git
cd manufacturer-system2. 一键启动
Windows:
start.batLinux/Mac:
chmod +x start.sh
./start.sh启动脚本会自动完成以下任务:
- 检查Docker环境
- 拉取所有Docker镜像
- 启动MySQL、Redis、后端、前端服务
- 初始化数据库
- 创建默认管理员账号
3. 访问系统
等待约30秒后,访问:
- 前端: http://localhost
- API文档: http://localhost:8080/api/swagger-ui.html
- 账号: admin / admin123456
自定义配置
如果需要自定义端口或其他配置,编辑 docker-compose.yml:
version: '3.8'
services:
# MySQL数据库
mysql:
image: mysql:8.0
container_name: manufacturer-mysql
environment:
MYSQL_ROOT_PASSWORD: root123456 # 修改数据库密码
MYSQL_DATABASE: manufacturer_system
ports:
- "3306:3306" # 修改映射端口
volumes:
- mysql-data:/var/lib/mysql
- ./backend/src/main/resources/db:/docker-entrypoint-initdb.d
command: --default-authentication-plugin=mysql_native_password
# Redis缓存
redis:
image: redis:7.0-alpine
container_name: manufacturer-redis
ports:
- "6379:6379" # 修改映射端口
volumes:
- redis-data:/data
# Spring Boot后端
backend:
build: ./backend
container_name: manufacturer-backend
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/manufacturer_system
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root123456 # 与MySQL密码一致
SPRING_REDIS_HOST: redis
JWT_SECRET: your-custom-secret-key-change-this-in-production # 修改JWT密钥
ports:
- "8080:8080" # 修改映射端口
depends_on:
- mysql
- redis
volumes:
- ./data/uploads:/app/uploads
# Vue.js前端
frontend:
build: ./frontend
container_name: manufacturer-frontend
ports:
- "80:80" # 修改映射端口(如改为8888:80)
depends_on:
- backend
volumes:
mysql-data:
redis-data:修改后重新启动:
docker-compose down
docker-compose up -dDocker常用命令
# 查看所有容器状态
docker-compose ps
# 启动所有服务
docker-compose up -d
# 停止所有服务
docker-compose down
# 重启某个服务
docker-compose restart backend
# 查看日志
docker-compose logs -f
docker-compose logs -f backend # 只看后端日志
# 进入容器
docker-compose exec backend bash
docker-compose exec mysql bash
# 查看资源使用
docker stats
# 清理所有(包括数据)
docker-compose down -v方式二: 手动部署
环境要求
后端要求
- JDK: 17+
- Maven: 3.8+
- MySQL: 8.0+
- Redis: 7.0+
前端要求
- Node.js: 18+
- npm: 9+ 或 yarn 1.22+
后端部署
1. 安装JDK
Windows:
- 下载 OpenJDK 17
- 安装并配置环境变量JAVA_HOME
Linux:
sudo apt-get update
sudo apt-get install openjdk-17-jdk
java -versionMac:
brew install openjdk@17
java -version2. 安装Maven
Windows:
- 下载 Maven
- 解压并配置环境变量
Linux:
sudo apt-get install maven
mvn -versionMac:
brew install maven
mvn -version3. 安装MySQL
Windows:
- 下载 MySQL Installer
- 安装MySQL Server 8.0
Linux:
sudo apt-get update
sudo apt-get install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysqlMac:
brew install mysql@8.0
brew services start mysql4. 创建数据库
# 登录MySQL
mysql -u root -p
# 创建数据库
CREATE DATABASE manufacturer_system DEFAULT CHARACTER SET utf8mb4;
# 退出
exit5. 导入数据库表
cd manufacturer-system/backend
# 导入表结构和数据
mysql -u root -p manufacturer_system < src/main/resources/db/schema.sql
mysql -u root -p manufacturer_system < src/main/resources/db/app_version_schema.sql6. 安装Redis
Windows:
- 下载 Redis for Windows
- 解压并运行
redis-server.exe
Linux:
sudo apt-get install redis-server
sudo systemctl start redis
sudo systemctl enable redisMac:
brew install redis
brew services start redis7. 配置后端
编辑 backend/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/manufacturer_system?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: your_mysql_password # 修改为你的MySQL密码
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: localhost
port: 6379
password: # 如果Redis设置了密码,填写这里
servlet:
multipart:
max-file-size: 2GB
max-request-size: 2GB
jwt:
secret: your-secret-key-at-least-256-bits-change-this-in-production # 修改JWT密钥
expiration: 86400000 # 24小时
system:
upload-path: ./uploads
activation-code-validity-days: 365
recovery-code-validity-seconds: 1800
backup-retention-days: 730
server:
port: 80808. 编译和启动后端
cd backend
# 编译
mvn clean package -DskipTests
# 启动
java -jar target/manufacturer-system-1.0.0-SNAPSHOT.jar或使用Maven直接运行:
mvn spring-boot:run后端启动成功后,访问:http://localhost:8080/api/swagger-ui.html
前端部署
1. 安装Node.js
Windows:
- 下载 Node.js LTS
- 运行安装程序
Linux:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejsMac:
brew install node@18确认安装:
node -v
npm -v2. 安装依赖
cd frontend
npm install如果npm速度慢,可以使用国内镜像:
npm config set registry https://registry.npmmirror.com
npm install3. 配置前端
编辑 frontend/vite.config.js:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
server: {
port: 3000, // 修改前端端口
proxy: {
'/api': {
target: 'http://localhost:8080', # 后端地址
changeOrigin: true
}
}
}
})4. 启动前端开发服务器
npm run dev5. 构建生产版本
npm run build构建完成后,dist目录包含所有静态文件。
生产环境部署(Nginx)
1. 安装Nginx
Linux:
sudo apt-get install nginxMac:
brew install nginx2. 配置Nginx
创建配置文件 /etc/nginx/sites-available/manufacturer:
server {
listen 80;
server_name your-domain.com; # 修改为你的域名
# 前端静态文件
location / {
root /var/www/manufacturer/frontend;
index index.html;
try_files $uri $uri/ /index.html;
}
# 代理后端API
location /api/ {
proxy_pass http://localhost:8080/api/;
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;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 上传文件大小限制
client_max_body_size 2G;
# Gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}3. 部署文件
# 复制前端构建文件
sudo mkdir -p /var/www/manufacturer
sudo cp -r dist/* /var/www/manufacturer/frontend/
# 复制后端jar包
sudo mkdir -p /opt/manufacturer
sudo cp backend/target/*.jar /opt/manufacturer/4. 配置后端服务(systemd)
创建服务文件 /etc/systemd/system/manufacturer-backend.service:
[Unit]
Description=Manufacturer System Backend
After=network.target mysql.service redis.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/manufacturer
ExecStart=/usr/bin/java -jar /opt/manufacturer/manufacturer-system-1.0.0-SNAPSHOT.jar
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target5. 启动服务
# 启用Nginx配置
sudo ln -s /etc/nginx/sites-available/manufacturer /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
# 启动后端服务
sudo systemctl daemon-reload
sudo systemctl start manufacturer-backend
sudo systemctl enable manufacturer-backend
# 查看服务状态
sudo systemctl status manufacturer-backendSSL证书配置
使用Let's Encrypt
# 安装certbot
sudo apt-get install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d your-domain.com
# 自动续期
sudo certbot renew --dry-run手动配置SSL
编辑Nginx配置:
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# ... 其他配置
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}安全配置
1. 修改默认密码
首次登录后立即修改默认管理员密码。
2. 配置防火墙
# 只开放必要端口
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw enable3. 数据库安全
# 运行MySQL安全脚本
sudo mysql_secure_installation4. JWT密钥
修改 application.yml 中的JWT密钥为随机生成的强密钥:
# 生成随机密钥
openssl rand -base64 645. 定期备份
设置定时任务备份数据库:
# 编辑crontab
crontab -e
# 添加每天凌晨2点备份
0 2 * * * /usr/bin/mysqldump -u root -p'password' manufacturer_system > /backup/db_$(date +\%Y\%m\%d).sql性能优化
1. MySQL优化
编辑 /etc/mysql/my.cnf:
[mysqld]
# 连接池
max_connections = 1000
# 缓存
innodb_buffer_pool_size = 2G
query_cache_size = 64M
# 日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 22. Redis优化
编辑 /etc/redis/redis.conf:
# 最大内存
maxmemory 1gb
maxmemory-policy allkeys-lru
# 持久化
save 900 1
save 300 10
save 60 100003. JVM优化
修改启动命令:
java -Xms2g -Xmx4g -XX:+UseG1GC -jar manufacturer-system.jar4. Nginx缓存
# 静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
add_header Cache-Control "public, immutable";
}监控和日志
1. 应用日志
后端日志位置:/opt/manufacturer/logs/
配置日志级别(application.yml):
logging:
level:
root: INFO
com.chainlesschain.manufacturer: DEBUG
file:
name: /opt/manufacturer/logs/application.log
max-size: 100MB
max-history: 302. 系统监控
# 查看系统资源
htop
# 查看磁盘使用
df -h
# 查看数据库连接
mysql -u root -p -e "SHOW PROCESSLIST"
# 查看Redis状态
redis-cli INFO故障排查
后端启动失败
# 查看后端日志
tail -f /opt/manufacturer/logs/application.log
# 检查端口占用
sudo netstat -tlnp | grep 8080
# 检查数据库连接
mysql -u root -p -h localhost manufacturer_system前端访问失败
# 查看Nginx错误日志
tail -f /var/log/nginx/error.log
# 检查Nginx配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx下一步
如有部署问题,请联系技术支持:zhanglongfa@chainlesschain.com
