# LiteMall 轻商城 - 运维指令手册

> 服务器IP: 111.229.171.59
> 项目路径: /root/.openclaw/workspace/lobster-mall/
> 技术栈: Node.js + Express + SQLite + Vue 3
> 进程管理: PM2
> 数据库: SQLite (server/data/litemall.db)

---

## 一、项目目录结构

```
/root/.openclaw/workspace/lobster-mall/
├── server/          # 后端API服务（Node.js + Express）
│   ├── src/app.js   # 主入口
│   ├── src/routes/  # API路由
│   ├── src/lib/     # 业务库（支付/通知等）
│   ├── data/        # SQLite数据库
│   ├── logs/        # 运行日志
│   └── .env         # 环境变量
├── admin/           # 管理后台（Vue3 + Element Plus）
│   └── dist/        # 构建产物
├── mobile/          # 移动端H5（Vue3 + Vant）
│   └── index.html   # SPA单页
├── pc/              # PC端用户前台（Vue3 + Element Plus）
│   └── index.html   # SPA单页
├── miniapp/         # 微信小程序源码
├── docs/            # 开发文档
├── deploy/          # 部署相关
├── start.sh         # 旧启动脚本
└── install.sh       # 安装脚本
```

## 二、服务管理（PM2）

```bash
# 查看服务状态
pm2 list
pm2 show litemall

# 启动/重启/停止
pm2 start litemall
pm2 restart litemall
pm2 stop litemall
pm2 delete litemall

# 查看实时日志
pm2 logs litemall
pm2 logs litemall --lines 200

# 监控资源
pm2 monit

# 保存进程列表（修改后执行）
pm2 save

# 开机自启（已配置，仅重装系统后需要）
pm2 startup
```

## 三、Nginx 操作

```bash
# 安装 Nginx
apt-get update && apt-get install nginx -y

# 部署配置
cp /root/.openclaw/workspace/lobster-mall/deploy/nginx-litemall.conf /etc/nginx/sites-available/litemall.conf
ln -sf /etc/nginx/sites-available/litemall.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default

# 测试配置
nginx -t

# 重载/启停
systemctl reload nginx
systemctl restart nginx
systemctl start nginx
systemctl stop nginx
```

## 四、HTTPS 证书（https://litemall.yourdomain.com）

```bash
# 1. 确保域名已解析到服务器IP (111.229.171.59)
# 2. 安装 Certbot
apt-get install certbot python3-certbot-nginx -y

# 3. 申请证书（会自动修改Nginx配置）
certbot --nginx -d litemall.yourdomain.com

# 4. 证书续期（自动，certbot有定时任务）
certbot renew --dry-run

# 5. 如需手动切换到HTTPS配置
cp /root/.openclaw/workspace/lobster-mall/deploy/nginx-ssl.conf /etc/nginx/sites-available/litemall-ssl.conf
```

## 五、数据库操作

```bash
# 手动备份
bash /root/.openclaw/workspace/lobster-mall/deploy/backup.sh

# 查看备份列表
ls -lh /root/backups/litemall/

# 恢复数据库
bash /root/.openclaw/workspace/lobster-mall/deploy/restore.sh /root/backups/litemall/litemall-20260613-xxxxxx.db.gz

# 直接查询数据库
cd /root/.openclaw/workspace/lobster-mall/server/data
sqlite3 litemall.db "SELECT * FROM users;"
sqlite3 litemall.db ".tables"
```

## 六、代码更新

```bash
# 1. 切换到项目目录
cd /root/.openclaw/workspace/lobster-mall

# 2. 更新代码（如果是git仓库）
git pull

# 3. 重启服务
pm2 restart litemall

# 4. 检查日志
pm2 logs litemall --lines 20
```

## 七、回滚步骤

```bash
# 1. 如果数据库变更导致问题，先恢复备份
bash deploy/restore.sh /root/backups/litemall/变更前的时间戳.db.gz

# 2. 回滚代码（git）
git log --oneline -5        # 查看最近提交
git reset --hard <前一版本SHA>

# 3. 重启服务
pm2 restart litemall

# 4. 验证
curl -s http://localhost:3001/api/order/list | head -50
```

## 八、日常巡检

```bash
# 1. 服务状态
pm2 status
curl -s -o /dev/null -w "%{http_code}" http://localhost:3001/api/product/list

# 2. 磁盘占用
df -h

# 3. 内存占用
free -h

# 4. 数据库大小
ls -lh /root/.openclaw/workspace/lobster-mall/server/data/

# 5. Nginx日志（如果配置了）
tail -100 /var/log/nginx/litemall-access.log
```

## 九、端口说明

| 端口 | 用途 | 说明 |
|------|------|------|
| 3001 | Node.js API | 主服务，Nginx反向代理指向此端口 |
| 80 | HTTP | Nginx 监听 |
| 443 | HTTPS | Nginx SSL 监听（配置后） |
| 22 | SSH | 服务器远程管理 |

## 十、常见问题

**Q: 服务挂了怎么办？**
```bash
pm2 list                    # 看状态
pm2 logs litemall --lines 50  # 看错误日志
pm2 restart litemall         # 重启
```

**Q: 内存占用太高？**
```bash
pm2 restart litemall  # 重启进程回收内存
pm2 start src/app.js -i max --name litemall  # 集群模式（多核）
```

**Q: 数据库损坏怎么恢复？**
```bash
# 使用最近备份恢复
bash deploy/restore.sh /root/backups/litemall/最新备份文件
```
