# Node.js 服务管理脚本使用说明

宁夏智慧养殖监管平台后端服务管理脚本，支持Linux和Windows系统。

## 文件说明

- **node_manager.sh** - Linux/CentOS服务器版本（Bash脚本）
- **node_manager.ps1** - Windows本地开发版本（PowerShell脚本）

## 一、Linux版本使用说明

### 1. 准备工作

在CentOS服务器上首次使用前，需要设置脚本执行权限：

```bash
chmod +x node_manager.sh
```

### 2. 基本命令

```bash
# 启动服务
./node_manager.sh start

# 停止服务
./node_manager.sh stop

# 重启服务
./node_manager.sh restart

# 查看服务状态
./node_manager.sh status

# 实时查看日志
./node_manager.sh logs
```

### 3. 完整部署流程示例

```bash
# 1. 进入项目目录
cd /path/to/backend

# 2. 安装依赖（首次部署）
npm install

# 3. 配置环境变量
cp env.example .env
vim .env  # 编辑配置

# 4. 启动服务
./node_manager.sh start

# 5. 检查状态
./node_manager.sh status

# 6. 查看日志
./node_manager.sh logs
```

### 4. 常见问题

**Q: 提示 "端口已被占用" 怎么办？**

A: 使用 `./node_manager.sh stop` 停止服务，或手动查找并杀死进程：

```bash
# 查找占用端口的进程
lsof -ti:5350

# 杀死进程
kill -9 $(lsof -ti:5350)
```

**Q: 服务启动失败怎么办？**

A: 查看日志文件定位问题：

```bash
# 查看完整日志
cat logs/nxxmdata-backend.log

# 实时监控日志
tail -f logs/nxxmdata-backend.log
```

## 二、Windows版本使用说明

### 1. 准备工作

首次使用前，可能需要设置PowerShell执行策略：

```powershell
# 以管理员身份运行PowerShell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```

### 2. 基本命令

```powershell
# 启动服务
.\node_manager.ps1 start

# 停止服务
.\node_manager.ps1 stop

# 重启服务
.\node_manager.ps1 restart

# 查看服务状态
.\node_manager.ps1 status

# 实时查看日志
.\node_manager.ps1 logs
```

### 3. 完整部署流程示例

```powershell
# 1. 进入项目目录
cd D:\10-24\nxxmdata\backend

# 2. 安装依赖（首次部署）
npm install

# 3. 配置环境变量
Copy-Item env.example .env
notepad .env  # 编辑配置

# 4. 启动服务
.\node_manager.ps1 start

# 5. 检查状态
.\node_manager.ps1 status

# 6. 查看日志
.\node_manager.ps1 logs
```

### 4. 常见问题

**Q: 提示 "端口已被占用" 怎么办？**

A: 使用脚本停止服务，或手动查找并杀死进程：

```powershell
# 查找占用端口的进程
Get-NetTCPConnection -LocalPort 5350 | Select-Object -ExpandProperty OwningProcess

# 杀死进程（替换 <PID> 为实际进程ID）
Stop-Process -Id <PID> -Force
```

**Q: PowerShell提示无法执行脚本？**

A: 设置执行策略：

```powershell
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
```

## 三、配置说明

### 应用配置

在脚本中已配置以下默认值：

| 配置项 | 值 | 说明 |
|--------|-----|------|
| APP_NAME | nxxmdata-backend | 应用名称 |
| ENTRY_FILE | server.js | 入口文件 |
| APP_PORT | 5350 | 监听端口 |
| NODE_ENV | production | 运行环境 |
| LOG_FILE | logs/nxxmdata-backend.log | 日志文件 |

### 修改配置

如需修改配置，编辑脚本文件的"配置区域"部分：

**Linux版本 (node_manager.sh):**
```bash
# 配置区域
APP_NAME="nxxmdata-backend"
ENTRY_FILE="server.js"
APP_PORT="5350"
```

**Windows版本 (node_manager.ps1):**
```powershell
# 配置区域
$APP_NAME = "nxxmdata-backend"
$ENTRY_FILE = "server.js"
$APP_PORT = 5350
```

## 四、生产环境建议

### 使用 PM2（推荐）

对于生产环境，建议使用PM2进行进程管理：

```bash
# 安装 PM2
npm install -g pm2

# 启动服务
pm2 start server.js --name nxxmdata-backend

# 保存配置
pm2 save

# 设置开机自启
pm2 startup

# 监控服务
pm2 monit
```

### 日志管理

定期清理日志文件，避免占用过多磁盘空间：

```bash
# Linux
find logs -name "*.log" -mtime +30 -delete

# Windows PowerShell
Get-ChildItem logs -Filter *.log | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item
```

## 五、脚本功能特点

### Linux版本特点

- ✅ 优雅停止进程（SIGTERM → SIGKILL）
- ✅ 端口占用检测
- ✅ 进程PID管理
- ✅ 彩色输出提示
- ✅ 详细的状态信息
- ✅ 自动创建日志目录
- ✅ 实时日志查看

### Windows版本特点

- ✅ PowerShell原生支持
- ✅ 端口占用检测
- ✅ 后台进程管理
- ✅ 彩色输出提示
- ✅ 详细的状态信息
- ✅ 自动创建日志目录
- ✅ 实时日志查看

## 六、技术支持

如遇到问题，请检查：

1. Node.js版本是否正确（要求：16.20.2）
2. 依赖是否完整安装（node_modules目录）
3. 环境变量配置是否正确（.env文件）
4. 端口是否被其他程序占用
5. 数据库连接是否正常
6. 日志文件中的错误信息

---

**项目信息：**
- 项目名称：宁夏智慧养殖监管平台
- 后端端口：5350
- 前端端口：5300
- API文档：http://localhost:5350/api-docs

