Files
soul/开发文档/8、部署/本机运行文档.md

99 lines
3.4 KiB
Markdown
Raw Normal View History

# Soul 主站 · 本机运行文档
> 主项目一场soul的创业实验本机与服务器运行说明。永平版多服务架构见「永平版优化对比与合并说明」中的本机运行文档参考。
---
## 一、主项目运行架构(单 Next 站)
### 1.1 进程与端口
| 说明 | 端口 | 命令 |
|----------|------|------|
| 开发 | 3000 | `pnpm dev`Next 默认) |
| 生产 | 3006 | `pnpm build``PORT=3006 HOSTNAME=0.0.0.0 node .next/standalone/server.js` |
### 1.2 目录与部署
- **本地开发**:根目录即 Next 源码,`app/``lib/``components/``book/``miniprogram/` 同层。
- **生产部署**:小型宝塔 42.194.232.22,项目路径 `/www/wwwroot/soul`PM2 进程名 `soul`,端口 3006。
---
## 二、本机运行步骤
### 2.1 安装依赖
```bash
pnpm install
```
### 2.2 开发模式
```bash
pnpm dev
```
- 默认端口 3000可在 `package.json` 或环境变量中指定 `PORT=3006`
- 访问http://localhost:3000或 http://localhost:3006
### 2.3 生产模式(本地模拟)
```bash
pnpm build
PORT=3006 HOSTNAME=0.0.0.0 node .next/standalone/server.js
```
- 需先完成 `pnpm build`standalone 输出在 `.next/standalone/`
- 环境变量:`.env.local` 中配置 `MYSQL_*`(可选)、`SKIP_DB`(本地无 DB 时可设 `SKIP_DB=1`,部分接口会报错,适合纯前端联调)。
### 2.4 数据库
- 默认使用腾讯云 MySQL`lib/db.ts` 默认值)。
- 本地无数据库时:设置 `SKIP_DB=1`,接口中依赖 DB 的会抛错,可配合 Mock 或仅跑静态页。
- 环境变量覆盖:`MYSQL_HOST``MYSQL_PORT``MYSQL_USER``MYSQL_PASSWORD``MYSQL_DATABASE`
---
## 三、关键配置
### 3.1 环境变量(.env.local
| 配置项 | 说明 |
|--------|------|
| MYSQL_HOST / MYSQL_PORT / MYSQL_USER / MYSQL_PASSWORD / MYSQL_DATABASE | 数据库连接,不设则用代码默认值 |
| SKIP_DB | 设为 1 或 true 时跳过 DB 连接,适合无 DB 环境 |
| ADMIN_USERNAME / ADMIN_PASSWORD | 后台管理员账号密码(默认 admin / key123456 |
| ADMIN_SESSION_SECRET | 管理员 Cookie 签名密钥(生产建议修改) |
### 3.2 管理后台
- 登录http://localhost:3000/admin/login开发或 /admin/login生产
- 默认账号admin / key123456与 .cursorrules 一致,可通过环境变量覆盖)
- 登出 API`POST /api/admin/logout`(清除管理员 Cookie可与「退出登录」按钮对接
---
## 四、与永平版差异
- **永平版**多服务Go API 8080、Vue 管理后台 5174、Next 主站 3006见永平根目录 `本机运行文档.md`
- **本主项目**:单 Next 应用,无独立 Go/Vue管理后台为 Next 内 `/admin`API 为 Next 内 `/api/*`
- CORS主项目在 `middleware.ts``next.config.mjs` 中配置;永平可能由 Nginx/Go 处理。
---
## 五、常见问题
1. **端口被占用**
修改启动命令:`PORT=3007 pnpm dev``PORT=3007 node .next/standalone/server.js`
2. **数据库连接失败**
检查 `.env.local``MYSQL_*` 及本机网络是否能访问腾讯云 MySQL或设 `SKIP_DB=1` 做无 DB 联调。
3. **API 跨域**
主项目已通过 `middleware.ts``/api/:path*` 设置 CORS允许来源见 `ALLOWED_ORIGINS`
---
**文档状态**:适用于主项目单站部署与本机开发;多服务架构以永平版文档为准。