# 1. 给脚本添加执行权限
chmod +x deploy.sh
# 2. 执行部署脚本
./deploy.sh
# 3. 访问系统
# 浏览器打开: http://localhost# 1. 构建并启动所有服务
docker-compose up -d
# 2. 查看服务状态
docker-compose ps
# 3. 查看日志
docker-compose logs -f
# 4. 访问系统
# 浏览器打开: http://localhost- Go 1.17+
- Node.js 14+
- MySQL 5.7+ / 8.0+
- Nginx 1.18+ (可选)
# 安装 MySQL
# macOS:
brew install mysql@8.0
brew services start mysql@8.0
# Linux:
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql# 导入数据库结构
mysql -u root -p < database_schema.sql
# 验证数据库创建成功
mysql -u root -p -e "SHOW DATABASES;"# 1. 修改配置文件
vim server/_config/conf.yaml
# 修改数据库密码为你的 MySQL 密码
# 2. 安装依赖
go mod download
# 3. 启动后端
cd server/api
go run main.go# 1. 安装依赖
cd frontend
npm install
# 2. 启动前端(开发模式)
npm start
# 或者构建生产版本
npm run build# 1. 复制配置文件
sudo cp nginx/www.bms.com.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/www.bms.com.conf /etc/nginx/sites-enabled/
# 2. 修改配置中的路径
sudo vim /etc/nginx/sites-available/www.bms.com.conf
# 3. 重启 Nginx
sudo systemctl restart nginx- Docker 20.10+
- Docker Compose 1.29+
git clone <repository-url>
cd LabEquip-BMS# 编辑数据库配置
vim server/_config/conf.yaml
# 将数据库主机从 127.0.0.1 改为 mysql
# 示例:
# masterDsn: "root:123456@(mysql:3306)/bms_basic_db"# 构建后端和前端镜像
docker-compose build# 启动所有服务
docker-compose up -d# 查看服务状态
docker-compose ps
# 查看后端日志
docker-compose logs -f backend
# 查看数据库日志
docker-compose logs -f mysql打开浏览器访问:
- 前端:http://localhost
- 后端 API:http://localhost:8080
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看日志
docker-compose logs -f
# 查看服务状态
docker-compose ps
# 进入容器
docker-compose exec backend sh
docker-compose exec mysql bash
# 重新构建
docker-compose build --no-cache
# 清理所有数据(包括数据库)
docker-compose down -v生产环境建议采用以下架构:
Internet
↓
Nginx (80/443)
↓
Backend API (8080)
↓
MySQL (3306)
- 最低配置:2核 4GB 内存 40GB 磁盘
- 推荐配置:4核 8GB 内存 100GB 磁盘
- 操作系统:Ubuntu 20.04 LTS / CentOS 8
# 配置防火墙
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
# MySQL 只监听本地
# 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1# 使用 Let's Encrypt 申请免费证书
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com# 添加到 nginx 配置
client_max_body_size 100M;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
# 添加缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}使用 systemd 管理后端进程:
# 创建 systemd 服务文件
sudo vim /etc/systemd/system/bms-backend.service
# 内容:
[Unit]
Description=LabEquip-BMS Backend Service
After=network.target mysql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/LabEquip-BMS
ExecStart=/path/to/LabEquip-BMS/server/api/bms-api
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable bms-backend
sudo systemctl start bms-backend# 创建备份脚本
vim /root/backup-db.sh
#!/bin/bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
mysqldump -u root -p123456 --databases bms_basic_db bms_inv_db bms_task_db > $BACKUP_DIR/bms_$DATE.sql
# 只保留最近7天的备份
find $BACKUP_DIR -name "bms_*.sql" -mtime +7 -delete
# 添加到 crontab
crontab -e
# 每天凌晨2点执行备份
0 2 * * * /root/backup-db.sh# 配置日志轮转
sudo vim /etc/logrotate.d/bms
/var/log/nginx/bms.*.log {
daily
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}# 使用 uptime kuma 或其他监控工具
# 监控以下指标:
# - 服务器 CPU/内存/磁盘使用率
# - MySQL 连接数和慢查询
# - Nginx 访问量和错误率
# - 后端 API 响应时间问题:后端无法连接数据库
解决方案:
# 检查 MySQL 是否启动
sudo systemctl status mysql
# 检查密码是否正确
mysql -u root -p
# 检查配置文件中的连接字符串
vim server/_config/conf.yaml问题:端口已被占用
解决方案:
# 查看占用端口的进程
lsof -i :8080
netstat -tunlp | grep 8080
# 杀死进程或修改配置中的端口问题:无法上传文件
解决方案:
# 检查 uploads 目录权限
ls -la uploads/
chmod 755 uploads/
# 检查磁盘空间
df -h
# 检查 Nginx 配置
client_max_body_size 100M;问题:访问前端页面显示空白
解决方案:
# 检查前端是否构建
cd frontend && npm run build
# 检查 Nginx 配置中的 root 路径
# 检查浏览器控制台是否有错误问题:docker-compose up 失败
解决方案:
# 查看详细日志
docker-compose logs
# 检查端口是否被占用
docker-compose down
netstat -tunlp | grep 3306
# 清理并重新构建
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d问题:go mod download 超时
解决方案:
# 配置 Go 代理
go env -w GOPROXY=https://goproxy.cn,direct
go mod download问题:npm install 报错
解决方案:
# 清理缓存
rm -rf node_modules package-lock.json
npm cache clean --force
# 配置镜像
npm config set registry https://registry.npmmirror.com
# 重新安装
npm install如遇到其他问题,请:
- 查看日志文件
- 检查配置是否正确
- 参考 README.md 中的详细说明
- 搜索相关错误信息
最后更新: 2026-01-16
版本: V1.0