Files
yunrui_asset/DEPLOYMENT.md
T

1025 lines
20 KiB
Markdown
Raw Normal View History

2026-02-26 13:23:27 +08:00
# IDC设备管理系统 - 部署指南
2026-02-26 13:23:27 +08:00
本文档详细介绍IDC设备管理系统的多种部署方式,包括开发环境、测试环境、生产环境的配置方法。
2026-02-05 13:59:28 +08:00
---
## 目录
- [快速开始](#快速开始)
- [环境要求](#环境要求)
- [开发环境部署](#开发环境部署)
2026-02-26 13:23:27 +08:00
- [测试环境部署](#测试环境部署)
2026-02-05 13:59:28 +08:00
- [生产环境部署](#生产环境部署)
- [数据库配置](#数据库配置)
2026-02-26 13:23:27 +08:00
- [部署验证](#部署验证)
2026-02-05 13:59:28 +08:00
- [更新升级](#更新升级)
- [监控维护](#监控维护)
- [常见问题](#常见问题)
---
## 快速开始
### 一键部署脚本(推荐)⭐
我们提供了交互式安装脚本,自动完成环境检测、依赖安装、数据库初始化和服务启动。
```bash
2026-02-26 13:23:27 +08:00
# 克隆项目
git clone https://gitee.com/zhang96110/idc_assest.git
cd idc_assest
2026-02-26 13:23:27 +08:00
# 运行部署脚本
npm run deploy
# 或
node install.js
```
**脚本功能:**
- ✅ 自动检测 Node.js、npm、PM2、Nginx
- ✅ Linux 系统支持自动安装 Node.js(交互式)
- ✅ 交互式配置数据库(SQLite/MySQL
- ✅ 交互式选择前端部署方式(Nginx/PM2 serve
- ✅ 自动安装项目依赖
- ✅ 自动初始化数据库
- ✅ 自动构建前端项目
- ✅ 使用 PM2 启动和管理服务
---
## 环境要求
2026-02-26 13:23:27 +08:00
### 基础运行环境
| 项目 | 最低要求 | 推荐配置 |
|------|----------|----------|
| **操作系统** | Windows 10/11、macOS 12+、Linux (Ubuntu 20.04+/CentOS 8+) | 同最低要求 |
| **Node.js** | ≥14.0.0 | 20.x LTS |
| **npm** | ≥6.0.0 | 10.x |
| **内存** | 4GB | 8GB+ |
| **磁盘空间** | 2GB | 10GB+ |
### 生产环境服务器要求
#### 最低配置
| 资源 | 要求 |
|------|------|
| **CPU** | 2 核心 |
| **内存** | 4GB |
| **磁盘** | 40GB SSD |
| **带宽** | 5Mbps |
#### 推荐配置
| 资源 | 要求 |
|------|------|
| **CPU** | 4 核心+ |
| **内存** | 8GB+ |
| **磁盘** | 100GB SSD |
| **带宽** | 10Mbps+ |
### 软件依赖
| 软件 | 版本要求 | 说明 |
|------|----------|------|
| **Node.js** | ≥14.0.0 (推荐 20.x LTS) | 运行时环境 |
| **npm** | ≥6.0.0 | 包管理器 |
| **PM2** | 5.x+ | 进程管理器(生产环境) |
| **Nginx** | 1.18+ | Web服务器/反向代理 |
| **MySQL** | 8.0+ | 数据库(生产环境,推荐) |
| **SQLite** | -(开发/小型 | 数据库部署) |
### 端口要求
| 端口 | 用途 | 协议 |
2026-02-05 13:59:28 +08:00
|------|------|------|
2026-02-26 13:23:27 +08:00
| 8000 | 后端API服务 | HTTP |
| 3000 | 前端开发服务 | HTTP |
| 80 | Nginx HTTP | HTTP |
| 443 | Nginx HTTPS | HTTPS |
2025-12-20 09:45:13 +08:00
2026-02-26 13:23:27 +08:00
---
2026-02-26 13:23:27 +08:00
## 开发环境部署
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
### 1. 环境准备
#### Windows
**方式一:官方安装包(推荐)**
1. 访问: https://nodejs.org/
2. 下载 LTS 版本(推荐 v20.x
3. 运行安装包,按向导完成安装
**方式二:nvm-windows(推荐开发者)**
1. 下载安装 nvm-windows: https://github.com/coreybutler/nvm-windows/releases
2. 执行: `nvm install 20`
3. 执行: `nvm use 20`
**方式三:WingetWindows 10/11**
```powershell
winget install OpenJS.NodeJS.LTS
```
#### macOS
**方式一:Homebrew(推荐)**
```bash
2026-02-05 13:59:28 +08:00
brew install node@20
```
2026-02-26 13:23:27 +08:00
**方式二:nvm(推荐开发者)**
```bash
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 安装 Node.js 20
nvm install 20
nvm use 20
```
2026-02-26 13:23:27 +08:00
#### Linux
2025-12-20 09:45:13 +08:00
2026-02-26 13:23:27 +08:00
**Ubuntu/Debian:**
2026-02-05 13:59:28 +08:00
```bash
2026-02-26 13:23:27 +08:00
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
2026-02-05 13:59:28 +08:00
```
2026-02-26 13:23:27 +08:00
**CentOS/RHEL/Fedora:**
2026-02-05 13:59:28 +08:00
```bash
2026-02-26 13:23:27 +08:00
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo yum install -y nodejs
```
**使用 nvm(推荐开发者):**
```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 20
nvm use 20
```
### 2. 克隆项目
```bash
# 从Gitee克隆(国内访问更快)
2026-02-05 13:59:28 +08:00
git clone https://gitee.com/zhang96110/idc_assest.git
2026-02-26 13:23:27 +08:00
# 或从GitHub克隆
git clone https://github.com/gituib/idc_assest.git
2026-02-05 13:59:28 +08:00
cd idc_assest
```
2026-02-26 13:23:27 +08:00
### 3. 安装依赖
```bash
2026-02-05 13:59:28 +08:00
# 安装后端依赖
2026-02-26 13:23:27 +08:00
cd backend
npm install
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# 安装前端依赖(新终端)
cd ../frontend
npm install
2026-02-05 13:59:28 +08:00
```
2026-02-26 13:23:27 +08:00
### 4. 配置环境变量
2026-02-05 13:59:28 +08:00
```bash
cd ../backend
cp .env.example .env
```
2026-02-05 13:59:28 +08:00
编辑 `.env` 文件(开发环境使用默认SQLite配置即可):
2026-02-26 13:23:27 +08:00
```env
2026-02-26 13:23:27 +08:00
# 开发环境配置
2026-02-05 13:59:28 +08:00
NODE_ENV=development
PORT=8000
DB_TYPE=sqlite
2026-02-26 13:23:27 +08:00
DB_PATH=./idc_management.db
# JWT配置(开发环境可使用简单密钥)
JWT_SECRET=dev_secret_key_change_in_production
JWT_EXPIRES_IN=7d
```
2026-02-26 13:23:27 +08:00
### 5. 初始化数据库
```bash
2026-02-26 13:23:27 +08:00
node scripts/init-database.js
```
### 6. 启动服务
**同时启动前后端(推荐):**
```bash
# 项目根目录
npm start
```
**分别启动:**
```bash
# 终端1 - 启动后端(端口8000)
2026-02-05 13:59:28 +08:00
cd backend
npm run dev
2026-02-26 13:23:27 +08:00
# 终端2 - 启动前端(端口3000)
cd frontend
npm run dev
```
2026-02-26 13:23:27 +08:00
### 7. 访问开发环境
2026-02-26 13:23:27 +08:00
| 服务 | 地址 |
|------|------|
| 前端应用 | http://localhost:3000 |
| 后端API | http://localhost:8000/api |
| 健康检查 | http://localhost:8000/health |
### 8. 开发命令
2026-02-05 13:59:28 +08:00
```bash
2026-02-26 13:23:27 +08:00
# 项目根目录命令
npm start # 同时启动前后端
npm run start:backend # 仅启动后端
npm run start:frontend # 仅启动前端
npm run install:all # 安装所有依赖
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# 后端命令
cd backend
npm run dev # 开发模式启动(热重载)
npm start # 生产模式启动
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# 前端命令
cd frontend
npm run dev # 开发模式启动
npm run build # 构建生产版本
npm run preview # 预览生产版本
```
---
2026-02-26 13:23:27 +08:00
## 测试环境部署
2025-12-20 09:45:13 +08:00
2026-02-26 13:23:27 +08:00
### 1. 服务器准备
测试环境配置要求:
| 项目 | 配置 |
|------|------|
| **操作系统** | Ubuntu 20.04 LTS / CentOS 8 |
| **Node.js** | 20.x LTS |
| **内存** | 4GB |
| **磁盘** | 20GB SSD |
| **数据库** | MySQL 8.0(与生产一致) |
### 2. 配置数据库
2025-12-20 09:45:13 +08:00
```bash
2026-02-26 13:23:27 +08:00
# 安装MySQL
sudo apt update
sudo apt install -y mysql-server
# 启动MySQL
sudo systemctl start mysql
sudo systemctl enable mysql
# 创建数据库和用户
sudo mysql
```
2026-02-26 13:23:27 +08:00
```sql
CREATE DATABASE idc_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'idc_test'@'localhost' IDENTIFIED BY 'test_password';
GRANT ALL PRIVILEGES ON idc_management.* TO 'idc_test'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
2026-02-26 13:23:27 +08:00
### 3. 配置环境变量
```bash
cd backend
cp .env.example .env
```
编辑 `.env` 文件:
2026-02-26 13:23:27 +08:00
```env
2026-02-26 13:23:27 +08:00
NODE_ENV=test
PORT=8000
DB_TYPE=mysql
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USERNAME=idc_test
MYSQL_PASSWORD=test_password
MYSQL_DATABASE=idc_management
JWT_SECRET=test_jwt_secret_key
JWT_EXPIRES_IN=24h
```
### 4. 安装依赖并初始化
```bash
# 安装后端依赖
cd backend
npm install
# 初始化数据库
node scripts/init-database.js
# 安装前端依赖并构建
cd ../frontend
npm install
npm run build
```
### 5. 使用PM2启动服务
```bash
# 安装PM2
npm install -g pm2
# 启动后端服务
cd ../backend
pm2 start server.js --name "idc-test-backend" --env test
# 启动前端静态服务
cd ../frontend
pm2 serve --name "idc-test-frontend" -s dist -l 3000
# 保存PM2配置
pm2 save
# 配置开机自启
pm2 startup
```
### 6. 测试验证
```bash
# 测试后端API
curl http://localhost:8000/health
# 测试前端
curl http://localhost:3000
```
---
## 生产环境部署
### 1. 服务器要求
#### 硬件要求
| 规模 | CPU | 内存 | 磁盘 |
|------|-----|------|------|
| 小型(<100设备) | 2核心 | 4GB | 40GB |
| 中型(100-500设备) | 4核心 | 8GB | 80GB |
| 大型(>500设备) | 8核心+ | 16GB+ | 100GB+ |
#### 软件要求
| 软件 | 版本 | 说明 |
|------|------|------|
| 操作系统 | Ubuntu 20.04+ / CentOS 8+ | 推荐 Ubuntu 22.04 LTS |
| Node.js | 20.x LTS | 运行时环境 |
| MySQL | 8.0+ | 数据库 |
| Nginx | 1.18+ | 反向代理/静态文件 |
| PM2 | 5.x+ | 进程管理 |
### 2. 系统配置
#### 创建部署用户(非root
```bash
# 创建用户
sudo adduser idcadmin
# 赋予sudo权限
sudo usermod -aG sudo idcadmin
# 切换到部署用户
sudo su - idcadmin
```
#### 配置防火墙
```bash
# Ubuntu
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw enable
# CentOS
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
```
### 3. 安装软件
#### 安装Node.js
```bash
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# 安装PM2
sudo npm install -g pm2
```
#### 安装MySQL
```bash
# Ubuntu
sudo apt install -y mysql-server
sudo apt update
# 启动并配置
sudo systemctl start mysql
sudo systemctl enable mysql
```
#### 安装Nginx
```bash
# Ubuntu
sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
```
### 4. 配置数据库
```bash
sudo mysql
```
```sql
-- 创建数据库
CREATE DATABASE idc_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户(生产环境使用强密码)
CREATE USER 'idc_prod'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD_HERE';
GRANT ALL PRIVILEGES ON idc_management.* TO 'idc_prod'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
### 5. 部署项目
#### 克隆项目
```bash
cd /var/www
sudo git clone https://gitee.com/zhang96110/idc_assest.git
sudo chown -R idcadmin:idcadmin idc_assest
```
#### 配置环境变量
```bash
cd /var/www/idc_assest/backend
cp .env.example .env
nano .env
```
编辑 `.env` 文件:
```env
# 生产环境配置
NODE_ENV=production
PORT=8000
DB_TYPE=mysql
MYSQL_HOST=localhost
MYSQL_PORT=3306
2026-02-26 13:23:27 +08:00
MYSQL_USERNAME=idc_prod
MYSQL_PASSWORD=YOUR_STRONG_PASSWORD_HERE
MYSQL_DATABASE=idc_management
2026-02-26 13:23:27 +08:00
# JWT配置(使用强随机密钥)
JWT_SECRET=$(openssl rand -base64 32)
JWT_EXPIRES_IN=24h
# 日志配置
LOG_LEVEL=info
```
2026-02-26 13:23:27 +08:00
### 6. 安装依赖
```bash
2026-02-26 13:23:27 +08:00
# 安装后端依赖
cd /var/www/idc_assest/backend
2026-02-05 13:59:28 +08:00
npm install --production
2026-02-26 13:23:27 +08:00
# 安装前端依赖并构建
cd ../frontend
npm install
npm run build
```
2026-02-26 13:23:27 +08:00
### 7. 初始化数据库
2026-02-05 13:59:28 +08:00
```bash
2026-02-26 13:23:27 +08:00
cd ../backend
node scripts/init-database.js
```
2026-02-26 13:23:27 +08:00
### 8. 配置PM2
```bash
2026-02-26 13:23:27 +08:00
# 创建PM2配置文件
nano /var/www/idc_assest/ecosystem.config.js
```
2026-02-26 13:23:27 +08:00
```javascript
module.exports = {
apps: [
{
name: 'idc-backend',
script: './server.js',
cwd: '/var/www/idc_assest/backend',
instances: 1,
exec_mode: 'fork',
env: {
NODE_ENV: 'production',
PORT: 8000
},
max_memory_restart: '1G',
log_file: '/var/log/idc/combined.log',
out_file: '/var/log/idc/out.log',
error_file: '/var/log/idc/error.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
merge_logs: true,
autorestart: true,
watch: false
}
]
};
```
2026-02-26 13:23:27 +08:00
```bash
# 创建日志目录
sudo mkdir -p /var/log/idc
sudo chown -R idcadmin:idcadmin /var/log/idc
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# 启动服务
cd /var/www/idc_assest
pm2 start ecosystem.config.js
pm2 save
pm2 startup
```
### 9. 配置Nginx
```bash
sudo nano /etc/nginx/sites-available/idc
```
```nginx
2026-02-26 13:23:27 +08:00
upstream idc_backend {
server 127.0.0.1:8000;
}
server {
listen 80;
2026-02-26 13:23:27 +08:00
server_name your-domain.com; # 替换为实际域名
# 前端静态文件
root /var/www/idc_assest/frontend/dist;
index index.html;
2026-02-26 13:23:27 +08:00
# Gzip压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
2026-02-26 13:23:27 +08:00
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
2026-02-26 13:23:27 +08:00
# 前端路由支持(SPA
location / {
try_files $uri $uri/ /index.html;
}
2026-02-26 13:23:27 +08:00
2026-02-05 13:59:28 +08:00
# API代理
location /api {
2026-02-26 13:23:27 +08:00
proxy_pass http://idc_backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
2026-02-26 13:23:27 +08:00
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
2026-02-26 13:23:27 +08:00
2026-02-05 13:59:28 +08:00
# 文件上传代理
location /uploads {
2026-02-26 13:23:27 +08:00
proxy_pass http://idc_backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 50M;
}
2026-02-26 13:23:27 +08:00
# 健康检查
location /health {
proxy_pass http://idc_backend/health;
}
}
```
```bash
2026-02-26 13:23:27 +08:00
# 启用配置
sudo ln -s /etc/nginx/sites-available/idc /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
2026-02-26 13:23:27 +08:00
sudo systemctl reload nginx
```
2026-02-26 13:23:27 +08:00
### 10. 配置SSL证书(可选)
2026-02-26 13:23:27 +08:00
使用 Let's Encrypt 免费证书:
2026-02-05 13:59:28 +08:00
```bash
2026-02-26 13:23:27 +08:00
# 安装Certbot
sudo apt install -y certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d your-domain.com
2026-02-26 13:23:27 +08:00
# 自动续期测试
sudo certbot renew --dry-run
2026-02-05 13:59:28 +08:00
```
---
## 数据库配置
2026-02-05 13:59:28 +08:00
### SQLite(开发环境/小规模)
- 默认配置,无需额外设置
- 数据库文件:`backend/idc_management.db`
2026-02-05 13:59:28 +08:00
- 优点:零配置,便携
- 缺点:不适合高并发,单文件限制
2026-02-05 13:59:28 +08:00
### MySQL(生产环境推荐)
#### 创建数据库
```sql
CREATE DATABASE idc_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2026-02-05 13:59:28 +08:00
#### 配置优化
```ini
# my.cnf 或 my.ini
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=200
innodb_buffer_pool_size=1G
```
### 数据备份
#### SQLite备份
```bash
2026-02-05 13:59:28 +08:00
# 手动备份
cp backend/idc_management.db backup/database_$(date +%Y%m%d).db
```
#### MySQL备份
```bash
2026-02-05 13:59:28 +08:00
# 手动备份
2026-02-26 13:23:27 +08:00
mysqldump -u idc_prod -p idc_management > backup/database_$(date +%Y%m%d).sql
2026-02-05 13:59:28 +08:00
# 自动备份脚本
#!/bin/bash
2026-02-26 13:23:27 +08:00
BACKUP_DIR="/var/backups/idc"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
2026-02-26 13:23:27 +08:00
mysqldump -u idc_prod -pYourPassword idc_management > "$BACKUP_DIR/database_$DATE.sql"
gzip "$BACKUP_DIR/database_$DATE.sql"
# 清理30天前的备份
find $BACKUP_DIR -name "database_*.gz" -mtime +30 -delete
```
添加到crontab
```bash
crontab -e
# 每天凌晨2点执行
0 2 * * * /path/to/backup_script.sh
```
---
2026-02-26 13:23:27 +08:00
## 部署验证
### 1. 服务状态检查
```bash
# PM2服务状态
pm2 status
# Nginx状态
sudo systemctl status nginx
# MySQL状态
sudo systemctl status mysql
```
### 2. 接口验证
```bash
# 健康检查
curl http://localhost:8000/health
# API测试
curl http://localhost:8000/api/rooms
# 上传接口测试
curl -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
```
### 3. 日志检查
```bash
# PM2日志
pm2 logs idc-backend
# 错误日志
pm2 logs idc-backend --err
# Nginx错误日志
sudo tail -f /var/log/nginx/error.log
```
### 4. 性能测试
```bash
# 使用curl测试响应时间
time curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8000/health
```
---
## 更新升级
### 方式一:一键更新脚本(推荐)
```bash
npm run update
```
功能:自动备份 → 拉取代码 → 更新依赖 → 重建前端 → 重启服务
### 方式二:手动更新
#### 1. 备份数据
```bash
2026-02-26 13:23:27 +08:00
# 备份数据库
mysqldump -u idc_prod -p idc_management > /var/backups/idc/database_backup_$(date +%Y%m%d).sql
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# 或备份SQLite
cp backend/idc_management.db /var/backups/idc/
```
#### 2. 拉取最新代码
```bash
2026-02-26 13:23:27 +08:00
cd /var/www/idc_assest
git pull origin main
```
#### 3. 更新依赖
```bash
2026-02-26 13:23:27 +08:00
# 更新后端依赖
cd backend
npm install
# 更新前端依赖并构建
cd ../frontend
npm install
npm run build
```
2026-02-26 13:23:27 +08:00
#### 4. 运行数据库迁移(如有)
```bash
cd ../backend
node scripts/migrate-all.js
```
#### 5. 重启服务
```bash
pm2 restart idc-backend
2026-02-26 13:23:27 +08:00
sudo nginx -t && sudo nginx -s reload
```
---
## 监控维护
2026-02-26 13:23:27 +08:00
### 服务管理命令
```bash
2026-02-26 13:23:27 +08:00
# PM2 管理
pm2 status # 查看服务状态
pm2 logs idc-backend # 查看后端日志
pm2 logs idc-backend --err # 查看错误日志
pm2 restart idc-backend # 重启后端服务
pm2 stop idc-backend # 停止后端服务
pm2 delete idc-backend # 删除后端服务
pm2 save # 保存当前进程列表
pm2 startup # 配置开机自启
pm2 monit # 实时监控
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# Nginx 管理
sudo nginx -t # 测试配置
sudo systemctl restart nginx # 重启服务
sudo systemctl status nginx # 查看状态
```
2026-02-05 13:59:28 +08:00
### 性能监控
2026-02-26 13:23:27 +08:00
#### PM2配置(`ecosystem.config.js`
```javascript
module.exports = {
apps: [{
name: 'idc-backend',
script: './server.js',
cwd: './backend',
instances: 1,
exec_mode: 'fork',
max_memory_restart: '1G',
2026-02-05 13:59:28 +08:00
autorestart: true,
env: {
NODE_ENV: 'production'
},
log_file: './logs/combined.log',
out_file: './logs/out.log',
error_file: './logs/error.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss Z'
}]
};
```
---
## 常见问题
### 端口冲突
```bash
# 检查端口占用
2026-02-05 13:59:28 +08:00
# Linux
netstat -tulpn | grep :8000
2026-02-26 13:23:27 +08:00
2026-02-05 13:59:28 +08:00
# Windows
netstat -ano | findstr :8000
# 修改端口
2026-02-26 13:23:27 +08:00
# 编辑 backend/.env 文件
PORT=8001
```
### 依赖安装失败
```bash
2026-02-05 13:59:28 +08:00
# 清理缓存
npm cache clean --force
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
# 删除 node_modules 重新安装
rm -rf node_modules package-lock.json
npm install
```
### 数据库连接失败
2026-02-05 13:59:28 +08:00
**MySQL**
2026-02-26 13:23:27 +08:00
- 检查服务状态:`sudo systemctl status mysql`
2026-02-05 13:59:28 +08:00
- 验证连接参数(主机、端口、用户名、密码)
- 确认数据库已创建
2026-02-05 13:59:28 +08:00
- 检查防火墙设置
2026-02-26 13:23:27 +08:00
- 确认用户权限:`SHOW GRANTS FOR 'idc_prod'@'localhost'`
2026-02-05 13:59:28 +08:00
### 前端构建失败
```bash
# 检查 Node.js 版本
node -v
# 清理并重新构建
cd frontend
rm -rf node_modules dist
npm install
npm run build
```
### 权限问题
```bash
# 修复文件权限
2026-02-26 13:23:27 +08:00
sudo chown -R $(whoami):$(whoami) /var/www/idc_assest
2026-02-05 13:59:28 +08:00
# 上传目录权限
sudo chmod -R 777 backend/uploads
```
### 内存不足
```bash
# 增加 Node.js 内存限制
node --max-old-space-size=4096 server.js
# PM2 配置
pm2 start server.js --name "idc-backend" --node-args="--max-old-space-size=4096"
```
2026-02-26 13:23:27 +08:00
### Nginx 502 Bad Gateway
1. 检查后端服务是否运行:`pm2 status`
2. 检查后端端口是否监听:`netstat -tulpn | grep 8000`
3. 检查Nginx配置:`nginx -t`
4. 查看错误日志:`tail -f /var/log/nginx/error.log`
### SSL证书问题
```bash
# 检查证书是否过期
sudo certbot certificates
# 手动续期
sudo certbot renew
# 查看证书详情
sudo certbot certificates
```
---
## 项目结构
```
idc_assest/
├── backend/ # 后端服务
2026-02-05 13:59:28 +08:00
│ ├── middleware/ # 中间件(认证、验证)
2026-02-26 13:23:27 +08:00
│ ├── models/ # 数据模型(Sequelize
│ ├── routes/ # API路由
│ ├── scripts/ # 数据库脚本
│ ├── uploads/ # 文件上传目录
│ ├── validation/ # 数据验证Schema
│ ├── server.js # 服务入口
│ └── package.json
2026-02-26 13:23:27 +08:00
├── frontend/ # 前端应用
│ ├── src/
2026-02-26 13:23:27 +08:00
│ │ ├── api/ # API接口
│ │ ├── components/ # 组件
│ │ ├── pages/ # 页面
│ │ └── utils/ # 工具函数
│ ├── dist/ # 构建输出
│ └── package.json
2026-02-26 13:23:27 +08:00
├── docs/ # 项目文档
│ ├── api/ # 接口文档
│ └── images/ # 文档图片
├── install.js # 交互式安装脚本 ⭐
├── update.js # 一键更新脚本 ⭐
├── uninstall.js # 卸载脚本
├── check.js # 环境检查脚本
├── modify.js # 配置修改脚本
├── package.json
2026-02-26 13:23:27 +08:00
├── README.md # 项目说明
├── CHANGELOG.md # 版本记录
└── DEPLOYMENT.md # 本文件
```
---
**⭐ 如果这个部署指南对您有帮助,请给我们一个Star!**