feat(日志): 实现定时日志清理功能并统一服务端口为19070

- 添加每小时定时清理项目控制台日志功能,保留最新1000条且不超过24小时
- 将所有服务端口统一调整为19070,包括后端API、Nginx配置和文档
- 优化前端日志显示,支持单行折叠和点击展开
- 更新相关测试用例和部署文档
This commit is contained in:
2026-01-22 14:06:44 +08:00
parent 4551ae5733
commit 240e708fbe
21 changed files with 472 additions and 211 deletions

View File

@@ -100,8 +100,8 @@
- 服务器类型NAS
【访问信息】
- 前端访问地址blv-rd.tech:20001
- 后端API地址http://127.0.0.1:3001
- 前端访问地址blv-rd.tech:19199
- 后端API地址http://127.0.0.1:19070
【文件路径】
- 项目文件目录:/vol1/1000/Docker/nginx/project/bls/bls_project_console

View File

@@ -12,7 +12,7 @@ RestartSec=10
StandardOutput=append:/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/systemd-out.log
StandardError=append:/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/systemd-err.log
Environment=NODE_ENV=production
Environment=PORT=19910
Environment=PORT=19070
[Install]
WantedBy=multi-user.target

View File

@@ -6,8 +6,8 @@
**检查日期**: 2026-01-16
**部署架构**: NginxDocker容器+ Express后端systemd管理
**前端访问地址**: blv-rd.tech:20100
**后端API地址**: http://127.0.0.1:19910
**前端访问地址**: blv-rd.tech:19199
**后端API地址**: http://127.0.0.1:19070
## 二、配置文件清单
@@ -21,7 +21,7 @@
```nginx
server {
listen 20001;
listen 19199;
server_name blv-rd.tech;
root /var/www/bls_project_console;
@@ -30,7 +30,7 @@ server {
client_max_body_size 100M;
location /api/ {
proxy_pass http://host.docker.internal:3001;
proxy_pass http://host.docker.internal:19070;
proxy_http_version 1.1;
proxy_set_header Host $host;
@@ -54,10 +54,10 @@ server {
**检查项**:
- ✅ 监听端口: 20100(正确)
- ✅ 监听端口: 19199(正确)
- ✅ 服务器名称: blv-rd.tech正确
- ✅ 静态文件根目录: /var/www/bls_project_console正确
- ✅ API代理地址: http://host.docker.internal:19910正确Nginx在Docker容器中
- ✅ API代理地址: http://host.docker.internal:19070正确Nginx在Docker容器中
- ✅ 文件上传大小限制: 100M正确
- ✅ Vue Router history模式支持: try_files $uri $uri/ /index.html正确
- ✅ 超时设置: 连接60s、发送60s、读取300s正确
@@ -93,7 +93,7 @@ RestartSec=10
StandardOutput=append:/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/systemd-out.log
StandardError=append:/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/systemd-err.log
Environment=NODE_ENV=production
Environment=PORT=3001
Environment=PORT=19070
[Install]
WantedBy=multi-user.target
@@ -109,7 +109,7 @@ WantedBy=multi-user.target
- ✅ 重启策略: on-failure正确
- ✅ 重启延迟: 10秒合理
- ✅ 日志输出: 标准输出和错误日志分离(正确)
- ✅ 环境变量: NODE_ENV=production, PORT=19910正确
- ✅ 环境变量: NODE_ENV=production, PORT=19070正确
- ✅ 开机自启: WantedBy=multi-user.target正确
**说明**:
@@ -129,7 +129,7 @@ WantedBy=multi-user.target
**关键配置**:
```javascript
const PORT = 19910;
const PORT = parsePort(process.env.PORT, 19070);
app.use(cors());
app.use(express.json());
@@ -145,7 +145,7 @@ app.get('/api/health', (req, res) => {
**检查项**:
- ✅ 端口配置: 19910与systemd配置一致
- ✅ 端口配置: 19070与systemd配置一致
- ✅ CORS中间件: 已启用(正确)
- ✅ JSON解析: 已启用(正确)
- ✅ API路由: /api/logs, /api/commands, /api/projects正确
@@ -155,7 +155,7 @@ app.get('/api/health', (req, res) => {
**说明**:
- 端口19910与systemd服务配置中的PORT环境变量一致
- 端口19070与systemd服务配置中的PORT环境变量一致
- 提供健康检查端点便于监控
- 支持优雅关闭确保Redis连接正确关闭
@@ -181,7 +181,7 @@ export default defineConfig({
port: 3000,
proxy: {
'/api': {
target: 'http://localhost:3001',
target: 'http://localhost:19070',
changeOrigin: true,
},
},
@@ -200,7 +200,7 @@ export default defineConfig({
- ✅ 源码根目录: src/frontend正确
- ✅ 输出目录: ../../dist正确
- ✅ 开发服务器端口: 3000正确
- ✅ API代理: /api -> http://localhost:3001(正确,仅用于开发环境)
- ✅ API代理: /api -> http://localhost:19070(正确,仅用于开发环境)
- ✅ 路径别名: @ -> src/frontend正确
**说明**:
@@ -270,10 +270,10 @@ app.mount('#app');
| 配置项 | 端口 | 状态 |
| -------------------------- | ----- | --------------- |
| 后端服务器 (server.js) | 19910 | ✅ |
| Systemd服务 (PORT环境变量) | 19910 | ✅ |
| Nginx代理目标 | 19910 | ✅ |
| Nginx监听端口 | 20100 | ✅ |
| 后端服务器 (server.js) | 19070 | ✅ |
| Systemd服务 (PORT环境变量) | 19070 | ✅ |
| Nginx代理目标 | 19070 | ✅ |
| Nginx监听端口 | 19199 | ✅ |
| Vite开发服务器 | 3000 | ✅ (仅开发环境) |
### 路径配置一致性
@@ -303,7 +303,7 @@ app.mount('#app');
2. ✅ 上传dist文件夹内容到: /vol1/1000/Docker/nginx/project/bls/bls_project_console
3. ✅ 上传Nginx配置到: /vol1/1000/Docker/nginx/conf.d/bls_project_console.conf
4. ✅ 重启Nginx容器: `docker restart nginx`
5. ✅ 访问地址: http://blv-rd.tech:20100
5. ✅ 访问地址: http://blv-rd.tech:19199
### 后端部署流程
@@ -321,7 +321,7 @@ app.mount('#app');
### 1. Nginx容器网络配置
**问题**: Nginx容器需要能够访问宿主机的3001端口
**问题**: Nginx容器需要能够访问宿主机的19070端口
**建议**:
@@ -386,8 +386,8 @@ npm --version
redis-cli ping
# 4. 检查端口占用
netstat -tlnp | grep 3001
netstat -tlnp | grep 20001
netstat -tlnp | grep 19070
netstat -tlnp | grep 19199
```
### 部署后验证
@@ -397,16 +397,16 @@ netstat -tlnp | grep 20001
systemctl status bls-project-console.service
# 2. 检查后端服务
curl http://localhost:3001/api/health
curl http://localhost:19070/api/health
# 3. 检查Nginx容器
docker ps | grep nginx
# 4. 检查前端访问
curl http://blv-rd.tech:20001
curl http://blv-rd.tech:19199
# 5. 检查API代理
curl http://blv-rd.tech:20001/api/health
curl http://blv-rd.tech:19199/api/health
```
---

View File

@@ -9,8 +9,8 @@
## 二、环境信息
- **前端访问地址**: blv-rd.tech:20100
- **后端API地址**: http://127.0.0.1:19910
- **前端访问地址**: blv-rd.tech:19199
- **后端API地址**: http://127.0.0.1:19070
- **NAS项目文件目录**: `/vol1/1000/Docker/nginx/project/bls/bls_project_console`
- **NAS配置文件目录**: `/vol1/1000/Docker/nginx/conf.d`
- **Systemd服务目录**: `/etc/systemd/system/`
@@ -45,11 +45,11 @@ docker port nginx
### 3. 检查端口占用
```bash
# 检查后端端口19910是否被占用
netstat -tlnp | grep 19910
# 检查后端端口19070是否被占用
netstat -tlnp | grep 19070
# 检查前端端口20100是否被占用
netstat -tlnp | grep 20100
# 检查前端端口19199是否被占用
netstat -tlnp | grep 19199
```
### 4. 检查Redis服务
@@ -166,7 +166,7 @@ docker exec nginx nginx -s reload
在浏览器中访问:
```
http://blv-rd.tech:20100
http://blv-rd.tech:19199
```
应该能看到项目的前端页面。
@@ -265,7 +265,7 @@ nano .env
```env
NODE_ENV=production
PORT=19910
PORT=19070
REDIS_HOST=localhost
REDIS_PORT=6379
```
@@ -283,7 +283,7 @@ cd /vol1/1000/Docker/nginx/project/bls/bls_project_console/backend
node server.js
# 如果看到类似以下输出,说明启动成功:
# BLS Project Console backend server is running on port 19910
# BLS Project Console backend server is running on port 19070
```
如果启动失败,查看错误信息并修复:
@@ -293,7 +293,7 @@ node server.js
redis-cli ping
# 检查端口占用
netstat -tlnp | grep 19910
netstat -tlnp | grep 19070
# 查看详细错误日志
node server.js 2>&1 | tee startup.log
@@ -332,7 +332,7 @@ RestartSec=10
StandardOutput=append:/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/systemd-out.log
StandardError=append:/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/systemd-err.log
Environment=NODE_ENV=production
Environment=PORT=19910
Environment=PORT=19070
[Install]
WantedBy=multi-user.target
@@ -401,10 +401,10 @@ tail -f /vol1/1000/Docker/nginx/project/bls/bls_project_console/backend/logs/sys
```bash
# 检查端口监听
netstat -tlnp | grep 19910
netstat -tlnp | grep 19070
# 测试API接口
curl http://localhost:19910/api/projects
curl http://localhost:19070/api/projects
# 查看服务进程
ps aux | grep "node server.js"
@@ -413,7 +413,7 @@ ps aux | grep "node server.js"
在浏览器中访问:
```
http://blv-rd.tech:20100/api/projects
http://blv-rd.tech:19199/api/projects
```
应该能返回JSON数据。
@@ -573,7 +573,7 @@ docker logs nginx --tail 100
**可能原因**:
- 后端服务未启动
- 后端端口不是19910
- 后端端口不是19070
- Redis连接失败
- 防火墙阻止了连接
@@ -584,7 +584,7 @@ docker logs nginx --tail 100
sudo systemctl status bls-project-console.service
# 2. 检查后端端口
netstat -tlnp | grep 19910
netstat -tlnp | grep 19070
# 3. 查看服务日志
sudo journalctl -u bls-project-console.service -n 50
@@ -593,7 +593,7 @@ sudo journalctl -u bls-project-console.service -n 50
redis-cli ping
# 5. 测试后端API
curl http://localhost:19910/api/projects
curl http://localhost:19070/api/projects
# 6. 重启服务
sudo systemctl restart bls-project-console.service
@@ -624,7 +624,7 @@ cat /etc/systemd/system/bls-project-console.service
ls -la /vol1/1000/Docker/nginx/project/bls/bls_project_console/backend
# 5. 检查端口占用
netstat -tlnp | grep 3001
netstat -tlnp | grep 19070
# 6. 检查Redis服务
sudo systemctl status redis
@@ -640,7 +640,7 @@ node server.js
**可能原因**:
- 配置文件语法错误
- 端口20100已被占用
- 端口19199已被占用
- 配置文件路径错误
**解决方法**:
@@ -650,7 +650,7 @@ node server.js
docker exec nginx nginx -t
# 2. 检查端口占用
netstat -tlnp | grep 20100
netstat -tlnp | grep 19199
# 3. 查看Nginx错误日志
docker logs nginx --tail 100
@@ -865,8 +865,8 @@ docker restart nginx
```bash
# 只允许必要的端口
sudo ufw allow 20100/tcp
sudo ufw allow 19910/tcp
sudo ufw allow 19199/tcp
sudo ufw allow 19070/tcp
sudo ufw enable
```

View File

@@ -105,7 +105,7 @@ module.exports = {
max_memory_restart: '1G',
env: {
NODE_ENV: 'production',
PORT: 19910,
PORT: 19070,
},
error_file: './logs/pm2-error.log',
out_file: './logs/pm2-out.log',
@@ -187,14 +187,14 @@ pm2 status
pm2 logs bls-project-console
# 测试健康检查接口
curl http://localhost:19910/api/health
curl http://localhost:19070/api/health
```
#### 8.2 检查前端访问
在浏览器中访问:
- `http://localhost/` 或配置的域名
- `http://localhost:19199/` 或配置的域名
#### 8.3 检查 API 代理
@@ -252,7 +252,7 @@ nginx -v
1. 检查端口是否被占用:
```bash
netstat -ano | findstr :19910
netstat -ano | findstr :19070
```
2. 检查 Redis 连接:
@@ -297,13 +297,13 @@ nginx -v
2. 检查 Nginx 代理配置:
```bash
# 确保 proxy_pass 指向正确的后端地址
curl http://localhost:19910/api/health
curl http://localhost:19070/api/health
```
## 端口说明
- **19910**: 后端 API 服务端口
- **80**: Nginx HTTP 服务端口
- **19070**: 后端 API 服务端口
- **19199**: Nginx HTTP 服务端口
## 注意事项

View File

@@ -2,11 +2,11 @@
## 一、环境信息
- **前端访问地址**: blv-rd.tech:20100
- **前端访问地址**: blv-rd.tech:19199
- **NAS项目文件目录**: `/vol1/1000/Docker/nginx/project/bls/bls_project_console`
- **NAS配置文件目录**: `/vol1/1000/Docker/nginx/conf.d`
- **项目类型**: Vue3前端 + Express后端
- **后端端口**: 19910
- **后端端口**: 19070
## 二、本地编译步骤
@@ -137,7 +137,7 @@ pm2 delete bls-project-console
**注意**:
- 后端服务会在宿主机上运行端口为19910
- 后端服务会在宿主机上运行端口为19070
- 确保Redis服务已启动并可访问
- PM2会自动管理进程崩溃重启
@@ -170,7 +170,7 @@ docker exec nginx nginx -t
在浏览器中访问:
```
http://blv-rd.tech:20100
http://blv-rd.tech:19199
```
应该能看到项目的前端页面。
@@ -180,7 +180,7 @@ http://blv-rd.tech:20100
在浏览器中访问:
```
http://blv-rd.tech:20100/api/projects
http://blv-rd.tech:19199/api/projects
```
应该能返回JSON数据如果后端正常运行
@@ -221,14 +221,14 @@ docker exec nginx tail -f /var/log/nginx-custom/error.log
**可能原因**:
- 后端服务未启动
- 后端端口不是19910
- 后端端口不是19070
- `host.docker.internal` 无法解析
- 防火墙阻止了连接
**解决方法**:
1. 检查PM2服务状态`pm2 status`
2. 检查后端端口:`netstat -tlnp | grep 19910`
2. 检查后端端口:`netstat -tlnp | grep 19070`
3. 查看PM2日志`pm2 logs bls-project-console`
4. 在Nginx容器内测试连接`docker exec nginx ping host.docker.internal`
5. 检查防火墙规则
@@ -239,13 +239,13 @@ docker exec nginx tail -f /var/log/nginx-custom/error.log
**可能原因**:
- 配置文件语法错误
- 端口20100已被占用
- 端口19199已被占用
- 配置文件路径错误
**解决方法**:
1. 检查配置文件语法:`docker exec nginx nginx -t`
2. 检查端口占用:`netstat -tlnp | grep 20100`
2. 检查端口占用:`netstat -tlnp | grep 19199`
3. 查看Nginx错误日志`docker logs nginx`
## 六、后续更新流程
@@ -342,7 +342,7 @@ Web_BLS_ProjectConsole/
- 应用名称:`bls-project-console`
- 工作目录:`/vol1/1000/Docker/nginx/project/bls/bls_project_console/backend`
- 启动脚本:`./server.js`
- 环境变量:`NODE_ENV=production`, `PORT=19910`
- 环境变量:`NODE_ENV=production`, `PORT=19070`
- 内存限制1GB超过自动重启
- 日志文件:`./logs/pm2-error.log` 和 `./logs/pm2-out.log`
@@ -374,7 +374,7 @@ pm2 show bls-project-console
## 九、注意事项
1. **端口映射**: 确保Nginx容器的20100端口已映射到宿主机的20100端口
1. **端口映射**: 确保Nginx容器的19199端口已映射到宿主机的19199端口
2. **host.docker.internal**: 在Linux上需要在Docker Compose中添加 `extra_hosts` 配置
3. **文件权限**: 确保上传的文件有正确的读写权限
4. **Redis连接**: 确保后端能连接到Redis服务

View File

@@ -10,7 +10,7 @@ module.exports = {
max_memory_restart: '1G',
env: {
NODE_ENV: 'production',
PORT: 19910,
PORT: 19070,
},
error_file: './logs/pm2-error.log',
out_file: './logs/pm2-out.log',

View File

@@ -1,5 +1,5 @@
server {
listen 20100;
listen 19199;
server_name blv-rd.tech;
root /var/www/bls_project_console;
@@ -8,7 +8,7 @@ server {
client_max_body_size 100M;
location /api/ {
proxy_pass http://host.docker.internal:19910;
proxy_pass http://host.docker.internal:19070;
proxy_http_version 1.1;
proxy_set_header Host $host;

View File

@@ -1,12 +1,12 @@
server {
listen 80;
listen 19199;
server_name localhost;
root C:/nginx/sites/bls_project_console;
index index.html;
location /api/ {
proxy_pass http://127.0.0.1:19910;
proxy_pass http://127.0.0.1:19070;
proxy_http_version 1.1;
proxy_set_header Host $host;

View File

@@ -5,7 +5,7 @@ info:
description: |
BLS Project Console 后端 API与当前实现保持一致
servers:
- url: http://localhost:3001
- url: http://localhost:19070
paths:
/api/health:
get: