# 情绪博物馆后端服务部署说明

## 文件说明

- `deploy.sh` - 本地打包脚本
- `deploy-server.sh` - 服务器部署脚本
- `/data/programs/emotion-museum/emotion-simple-0.0.1-SNAPSHOT.jar` - 打包后的 JAR 文件

## 部署步骤

### 1. 本地打包

```bash
# 在 backend-single 目录下执行
./deploy.sh
```

### 2. 上传到服务器

将以下文件上传到服务器：
- `/data/programs/emotion-museum/emotion-simple-0.0.1-SNAPSHOT.jar`
- `deploy-server.sh`

### 3. 服务器部署

```bash
# 给脚本添加执行权限
chmod +x deploy-server.sh

# 部署服务（默认操作）
./deploy-server.sh

# 或者指定操作
./deploy-server.sh deploy
```

## 脚本功能

### 主要功能

- **自动停止旧服务** - 安全停止正在运行的服务
- **启动新服务** - 使用生产环境配置启动服务
- **日志管理** - 日志保存到 `/data/logs/emotion-museum/single`
- **状态监控** - 检查服务启动状态和端口监听
- **进程管理** - 使用 PID 文件管理进程

### 命令行参数

```bash
./deploy-server.sh [命令]

可用命令：
  deploy  - 部署服务（默认）
  start   - 启动服务
  stop    - 停止服务
  restart - 重启服务
  status  - 查看服务状态
  logs    - 查看实时日志
```

## 配置说明

### 环境变量

脚本中的主要配置：

```bash
APP_NAME="emotion-museum-single"                    # 应用名称
JAR_NAME="emotion-simple-0.0.1-SNAPSHOT.jar"       # JAR 文件名
LOG_DIR="/data/logs/emotion-museum/single"         # 日志目录
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC..."     # JVM 参数
```

### 日志文件

- `application.log` - 应用运行日志
- `startup.log` - 启动日志
- `heapdump.hprof` - 内存溢出时的堆转储文件

### 生产环境配置

服务启动时使用以下配置：
- `spring.profiles.active=prod` - 激活生产环境配置
- `logging.file.path=/data/logs/emotion-museum/single` - 日志路径
- `logging.file.name=/data/logs/emotion-museum/single/application.log` - 日志文件名

## 使用示例

### 首次部署

```bash
# 1. 上传文件到服务器
scp /data/programs/emotion-museum/emotion-simple-0.0.1-SNAPSHOT.jar user@server:/path/to/app/
scp deploy-server.sh user@server:/path/to/app/

# 2. 登录服务器
ssh user@server

# 3. 进入应用目录
cd /path/to/app

# 4. 添加执行权限
chmod +x deploy-server.sh

# 5. 部署服务
./deploy-server.sh
```

### 日常维护

```bash
# 查看服务状态
./deploy-server.sh status

# 查看实时日志
./deploy-server.sh logs

# 重启服务
./deploy-server.sh restart

# 停止服务
./deploy-server.sh stop
```

## 注意事项

### 1. 权限要求

- 确保脚本有执行权限
- 确保有权限创建 `/data/logs/emotion-museum/single` 目录
- 确保有权限写入日志文件

### 2. 端口配置

- 脚本默认检查 8080 端口
- 如果使用其他端口，请修改脚本中的端口检查逻辑

### 3. Java 环境

- 确保服务器已安装 Java 8 或更高版本
- 确保 `java` 命令在 PATH 中可用

### 4. 内存配置

- 默认配置：最小 512MB，最大 1024MB
- 根据服务器配置调整 `JAVA_OPTS` 中的内存参数

### 5. 日志轮转

建议配置日志轮转，避免日志文件过大：

```bash
# 在 /etc/logrotate.d/ 下创建配置文件
/data/logs/emotion-museum/single/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
}
```

## 故障排查

### 1. 服务启动失败

```bash
# 查看启动日志
tail -f /data/logs/emotion-museum/single/startup.log

# 查看应用日志
tail -f /data/logs/emotion-museum/single/application.log
```

### 2. 端口被占用

```bash
# 查看端口占用情况
netstat -tlnp | grep :8080

# 杀死占用端口的进程
kill -9 <PID>
```

### 3. 内存不足

```bash
# 查看内存使用情况
free -h

# 调整 JAVA_OPTS 中的内存参数
```

### 4. 权限问题

```bash
# 检查目录权限
ls -la /data/logs/emotion-museum/single/

# 修改权限
chmod 755 /data/logs/emotion-museum/single/
chown -R user:group /data/logs/emotion-museum/single/
``` 