7.5 KiB
slake-school-service · 本地环境
1. 环境要求
| 项 | 说明 |
|---|---|
| PHP | 8.1+(当前锁定 Laravel 10,与 composer.json 一致;若本机为 PHP 8.2+ 可考虑后续升级到 Laravel 11+) |
| 扩展 | openssl、pdo_mysql、mbstring、tokenizer、xml、ctype、json、bcmath(Laravel 常规) |
| Composer | 2.x |
| MySQL | 5.7+ 或 8.0+(开发推荐 8.0) |
2. 配置方式
项目根目录的 **.env** 为本地实际配置(已加入 .gitignore,勿提交秘钥)。仓库内 **.env.example** 为模板,可执行:
cp .env.example .env
php artisan key:generate
当前默认约定与 **.env.example** 一致:
| 变量 | 默认值 | 说明 |
|---|---|---|
APP_NAME |
Slake School Service | 应用名 |
APP_URL |
http://127.0.0.1:8000 | 与 php artisan serve 一致 |
DB_HOST |
127.0.0.1 | 数据库地址 |
DB_PORT |
3307 | 与下方 Docker MySQL 映射一致;若使用本机已有 MySQL 的 3306,请改为 3306 并调整库名/账号 |
DB_DATABASE |
slake_school | 库名 |
DB_USERNAME / DB_PASSWORD |
root / root_local |
与 docker-compose.yml 中 MYSQL_ROOT_PASSWORD 一致;应用账号也可用 slake / slake_local |
若登录接口或任意接口报 SQLSTATE[HY000] [2002] Connection refused:表示 MySQL 未在本机监听(常见为未启动 Docker 容器或端口不一致)。请先启动数据库(见下文 Docker),或改用本机已安装的 MySQL 并同步修改 DB_HOST、DB_PORT、账号密码。
3. 使用 Docker 启动 MySQL(可选)
若本机未安装 MySQL,可在项目根目录执行:
docker compose up -d
会启动容器 slake-school-mysql,将容器 3306 映射到本机 3307,与默认 .env 对齐。
- root 密码(仅本机调试用):
root_local - 建库、账号在
docker-compose.yml的environment中已定义,与DB_* 默认一致。
4. 使用本机已安装的 MySQL
- 手动创建数据库:
CREATE DATABASE slake_school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 创建用户并授权,或沿用
root;在**.env** 中修改DB_PORT(如3306)、DB_USERNAME、DB_PASSWORD。 - 与 Docker 不要同时占用同一端口。
5. 初始化与启动
cd /path/to/slake-school-service
composer install
# 已存在 .env 且含 APP_KEY 时可跳过
cp -n .env.example .env && php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan serve
已有数据库仅需增量挂载「运营管理」侧栏:
php artisan db:seed --class=OperationsMenusSeeder。仅补课程用字典:php artisan db:seed --class=CourseDictionarySeeder。
工作台菜单(驾驶舱 + 雷达地图归组):php artisan db:seed --class=WorkbenchMenusSeeder(见docs/工作台驾驶舱与雷达地图.md)。
数据资产 · Banner 图管理菜单:php artisan db:seed --class=DataAssetsMenusSeeder(见docs/后台菜单目录结构.md§7)。
php artisan db:seed(默认 DatabaseSeeder)会依次执行 AdminInitSeeder(RBAC、菜单、管理员)与 CourseDictionarySeeder(course_system / course_type / yes_no,对齐 prototype/pages/course-create.html)。
浏览器访问:http://127.0.0.1:8000 应出现 Laravel 欢迎页。
AdminInitSeeder 会初始化 RBAC、菜单(含工作台、运营管理、系统管理)、默认超级管理员账号:
| 项目 | 值 |
|---|---|
| 用户名 | admin |
| 初始密码 | Admin@123456(登录后请立即修改) |
管理端 API 前缀为 /api/admin/v1(见 routes/admin.php)。
6. 与 slake-school-web 联调(Vite)
在仓库 code/slake-school-web:
cp .env.example .env.development
npm install
npm run dev
默认 VITE_API_BASE_URL=/api,Vite 将 /api 代理到 VITE_PROXY_TARGET(与 php artisan serve 的 127.0.0.1:8000 一致)。
高校雷达网地图使用腾讯地图,请在 .env.development 中配置 VITE_TENCENT_MAP_KEY(Key 申请后填入,见 docs/工作台驾驶舱与雷达地图.md)。
后端需在 .env 中配置 SANCTUM_STATEFUL_DOMAINS(模板见 .env.example),包含本机前端地址(如 localhost:5173),以便后续若启用 Cookie 会话与 Sanctum 协同。
7. 说明
- Sanctum:管理端当前使用 Bearer Token(
Authorization: Bearer <token>),由登录接口签发;personal_access_tokens表由框架维护。 - 生产环境务必将
APP_DEBUG=false、使用强密码与独立APP_KEY。
8. 修订记录
| 日期 | 说明 |
|---|---|
| 2026-05-18 | 初始化改为 php artisan db:seed;补充 CourseDictionarySeeder 与增量说明。 |
| 2026-05-29 | 新增 §9 小程序 H5 本地调试与 dev-login 说明。 |
9. 小程序 H5 本地调试(slake-school-wx)
目标:在浏览器中调试 UniApp 页面并调用真实后端,无需微信开发者工具;小程序真机/开发者工具仍走微信登录。
9.1 后端
- 按 §5 启动 MySQL 与
php artisan serve(http://127.0.0.1:8000)。 .env关键项:
| 变量 | 说明 |
|---|---|
APP_ENV=local |
启用 POST /api/miniapp/v1/auth/dev-login |
WX_APPID / WX_SECRET |
微信小程序 code2session(H5 调试可不测此项) |
- 验证接口:
curl -X POST http://127.0.0.1:8000/api/miniapp/v1/auth/dev-login \
-H 'Content-Type: application/json' \
-d '{"nickname":"本地调试"}'
应返回 token 与 user。
9.2 前端(H5)
cd code/slake-school-wx
cp .env.development .env.development.local # 可选,覆盖 API 地址
npm install
npm run dev:h5
浏览器打开 http://localhost:5174 或 http://127.0.0.1:5174(vite.config.ts 已设置 host: 0.0.0.0)。Vite 将 /api 代理到 127.0.0.1:8000(见 vite.config.ts)。
- 登录页在 H5 环境自动走 开发登录,无需
wx.login。 - 报名、我的课程/活动、资料、需求等需登录接口会携带 Bearer Token。
9.3 微信小程序
npm run dev:mp-weixin
微信开发者工具导入 dist/dev/mp-weixin,勾选「不校验合法域名」。API 直连 VITE_MP_API_BASE(默认 http://127.0.0.1:8000/api/miniapp/v1)。
更多 API 清单见 docs/小程序UniApp开发方案.md §8。