Files
soul/开发文档/服务器管理/SKILL.md

315 lines
12 KiB
Markdown
Raw Normal View History

---
name: 服务器管理
description: 宝塔服务器统一管理与自动化部署。触发词服务器、宝塔、部署、上线、发布、Node项目、SSL证书、HTTPS、DNS解析、域名配置、端口、PM2、Nginx、MySQL数据库、服务器状态。涵盖多服务器资产管理、Node.js项目一键部署、SSL证书管理、DNS配置、系统诊断等运维能力。
---
# 服务器管理
让 AI 写完代码后,无需人工介入,自动把项目「变成一个在线网站」。
---
## 快速入口(复制即用)
### 服务器资产
| 服务器 | IP | 配置 | 用途 | 宝塔面板 |
|--------|-----|------|------|----------|
| **小型宝塔** | 42.194.232.22 | 2核4G 5M | 主力部署Node项目 | https://42.194.232.22:9988/ckbpanel |
| **存客宝** | 42.194.245.239 | 2核16G 50M | 私域银行业务 | https://42.194.245.239:9988 |
| **kr宝塔** | 43.139.27.93 | 2核4G 5M | 辅助服务器 | https://43.139.27.93:9988 |
### 凭证速查
```bash
# SSH连接小型宝塔为例
ssh root@42.194.232.22
密码: Zhiqun1984
# 宝塔面板登录(小型宝塔)
地址: https://42.194.232.22:9988/ckbpanel
账号: ckb
密码: zhiqun1984
# 宝塔API密钥
小型宝塔: hsAWqFSi0GOCrunhmYdkxy92tBXfqYjd
存客宝: TNKjqDv5N1QLOU20gcmGVgr82Z4mXzRi
kr宝塔: qcWubCdlfFjS2b2DMT1lzPFaDfmv1cBT
```
---
## 一键操作
### 1. 检查服务器状态
```bash
# 运行快速检查脚本
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/服务器管理/scripts/快速检查服务器.py
```
### 2. 部署 Node 项目(标准流程)
```bash
# 1. 压缩项目(排除无用目录)
cd /项目路径
tar --exclude='node_modules' --exclude='.next' --exclude='.git' \
-czf /tmp/项目名_update.tar.gz .
# 2. 上传到服务器
sshpass -p 'Zhiqun1984' scp /tmp/项目名_update.tar.gz root@42.194.232.22:/tmp/
# 3. SSH部署
ssh root@42.194.232.22
cd /www/wwwroot/项目名
rm -rf app components lib public styles *.json *.js *.ts *.mjs *.md .next
tar -xzf /tmp/项目名_update.tar.gz
pnpm install
pnpm run build
rm /tmp/项目名_update.tar.gz
# 4. 宝塔面板重启项目
# 【网站】→【Node项目】→ 找到项目 → 点击【重启】
```
### 3. SSL证书检查/修复
```bash
# 检查所有服务器SSL证书状态
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/服务器管理/scripts/ssl证书检查.py
# 自动修复过期证书
python3 /Users/karuo/Documents/个人/卡若AI/01_系统管理/服务器管理/scripts/ssl证书检查.py --fix
```
### 4. 常用诊断命令
```bash
# 检查端口占用
ssh root@42.194.232.22 "ss -tlnp | grep :3006"
# 检查PM2进程
ssh root@42.194.232.22 "/www/server/nodejs/v22.14.0/bin/pm2 list"
# 测试HTTP响应
ssh root@42.194.232.22 "curl -I http://localhost:3006"
# 检查Nginx配置
ssh root@42.194.232.22 "nginx -t"
# 重载Nginx
ssh root@42.194.232.22 "nginx -s reload"
# DNS解析检查
dig soul.quwanzhi.com +short @8.8.8.8
```
---
## 端口配置表(小型宝塔 42.194.232.22
| 端口 | 项目名 | 类型 | 域名 | 状态 |
|------|--------|------|------|------|
| 3000 | cunkebao | Next.js | mckb.quwanzhi.com | ✅ |
| 3001 | ai_hair | NestJS | ai-hair.quwanzhi.com | ✅ |
| 3002 | kr_wb | Next.js | kr_wb.quwanzhi.com | ✅ |
| 3003 | hx | Vue | krjzk.quwanzhi.com | ⚠️ |
| 3004 | dlmdashboard | Next.js | dlm.quwanzhi.com | ✅ |
| 3005 | document | Next.js | docc.quwanzhi.com | ✅ |
| 3006 | soul | Next.js | soul.quwanzhi.com | ✅ |
| 3015 | 神射手 | Next.js | kr-users.quwanzhi.com | ⚠️ |
| 3018 | zhaoping | Next.js | zp.quwanzhi.com | ✅ |
| 3021 | is_phone | Next.js | is-phone.quwanzhi.com | ✅ |
| 3031 | word | Next.js | word.quwanzhi.com | ✅ |
| 3036 | ymao | Next.js | ymao.quwanzhi.com | ✅ |
| 3043 | tongzhi | Next.js | touzhi.lkdie.com | ✅ |
| 3045 | 玩值大屏 | Next.js | wz-screen.quwanzhi.com | ✅ |
| 3050 | zhiji | Next.js | zhiji.quwanzhi.com | ✅ |
| 3051 | zhiji1 | Next.js | zhiji1.quwanzhi.com | ✅ |
| 3055 | wzdj | Next.js | wzdj.quwanzhi.com | ✅ |
| 3305 | AITOUFA | Next.js | ai-tf.quwanzhi.com | ✅ |
| 9528 | mbti | Vue | mbtiadmin.quwanzhi.com | ✅ |
### 端口分配原则
- **3000-3099**: Next.js / React 项目
- **3100-3199**: Vue 项目
- **3200-3299**: NestJS / Express 后端
- **3300-3399**: AI相关项目
- **9000-9999**: 管理面板 / 特殊用途
---
## 核心工作流程
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Node项目一键部署流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ START │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 1. 压缩本地代码 │ 排除 node_modules, .next, .git │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 2. 上传到服务器 │ scp 到 /tmp/ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 3. 清理旧文件 │ 保留 .env 等配置文件 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 4. 解压新代码 │ tar -xzf │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 5. 安装依赖 │ pnpm install │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 6. 构建项目 │ pnpm run build │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 7. 宝塔面板重启 │ Node项目 → 重启 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 8. 验证访问 │ curl https://域名 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ SUCCESS │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 操作优先级矩阵
| 操作类型 | 优先方式 | 备选方式 | 说明 |
|---------|---------|---------|------|
| 查询信息 | ✅ 宝塔API | SSH | API稳定 |
| 文件操作 | ✅ 宝塔API | SSH | API支持 |
| 配置Nginx | ✅ 宝塔API | SSH | API可读写 |
| 重载服务 | ⚠️ SSH | - | API无接口 |
| 上传代码 | ⚠️ SSH/scp | - | 大文件 |
| 添加项目 | ❌ 宝塔界面 | - | API不稳定 |
---
## 常见问题速查
### Q1: 外网无法访问ERR_EMPTY_RESPONSE
**原因**: 腾讯云安全组只开放443端口
**解决**:
1. 必须配置SSL证书
2. Nginx配置添加443监听
### Q2: Node项目启动失败Could not find production build
**原因**: 使用 `npm run start` 但未执行 `npm run build`
**解决**: 先 `pnpm run build` 再重启
### Q3: 端口冲突EADDRINUSE
**解决**:
```bash
# 检查端口占用
ss -tlnp | grep :端口号
# 修改package.json中的端口
"start": "next start -p 新端口"
```
### Q4: DNS被代理劫持
**现象**: 本地DNS解析到198.18.x.x
**解决**:
- 关闭代理软件
- 或用手机4G网络测试
### Q5: 宝塔与PM2冲突
**原因**: 同时使用root用户PM2和宝塔PM2
**解决**:
- 停止所有独立PM2: `pm2 kill`
- 只使用宝塔界面管理
---
## 安全约束
### 绝对禁止
- ❌ 输出完整密码/密钥到聊天
- ❌ 执行危险命令rm -rf /, reboot等
- ❌ 跳过验证步骤
- ❌ 使用独立PM2避免与宝塔冲突
### 必须遵守
- ✅ 操作前检查服务器状态
- ✅ 操作后验证结果
- ✅ 生成操作报告
---
## 相关脚本
| 脚本 | 功能 | 位置 |
|------|------|------|
| `快速检查服务器.py` | 一键检查所有服务器状态 | `./scripts/` |
| `一键部署.py` | 根据配置文件部署项目 | `./scripts/` |
| `ssl证书检查.py` | 检查/修复SSL证书 | `./scripts/` |
---
## 相关文档
| 文档 | 内容 | 位置 |
|------|------|------|
| `宝塔API接口文档.md` | 宝塔API完整接口说明 | `./references/` |
| `端口配置表.md` | 完整端口分配表 | `./references/` |
| `常见问题手册.md` | 问题解决方案大全 | `./references/` |
| `部署配置模板.md` | JSON配置文件模板 | `./references/` |
| `系统架构说明.md` | 完整架构图和流程图 | `./references/` |
---
## 历史对话整理
### kr_wb白板项目部署2026-01-23
- 项目类型: Next.js
- 部署位置: /www/wwwroot/kr_wb
- 域名: kr_wb.quwanzhi.com
- 端口: 3002
- 遇到问题: AI功能401错误API密钥未配置
- 解决方案: 修改 lib/ai-client.ts改用 SiliconFlow 作为默认服务
### soul项目部署2026-01-23
- 项目类型: Next.js
- 部署位置: /www/wwwroot/soul
- 域名: soul.quwanzhi.com
- 端口: 3006
- 部署流程: 压缩→上传→解压→安装依赖→构建→PM2启动→配置Nginx→配置SSL