签入版本

This commit is contained in:
小蚂蚁云
2026-10-25 17:24:27 +08:00
parent 48911cc08f
commit fdbeae092a
1010 changed files with 30682 additions and 95274 deletions
@@ -1,196 +1,79 @@
# 2.2 后端服务启动
# 2.4 后端服务启动
:::warning 特别提醒
官方精心制作本教程,目的在于方便用户快速掌握软件产品的使用和部署。通过此教程,刚入行的开发者也可以快速掌握并投入产品研发。本地部署时务必请耐心阅读文档操作。
:::tip 概述
后端是单二进制服务,入口 `cmd/api`。启动时完成配置校验、数据库/缓存初始化、路由注册与定时任务装配,监听 `:8000`。
:::
## 步骤一:获取源码
## 启动命令
前往 [官方网站](https://www.rxthink.cn) 购买授权后,按以下步骤获取源码:
```bash
# 前台启动(读 config/config.yaml)
make run
# Windows 无 make 时
make.bat run
```
## 启动过程
```text
1. 登录[官方网站](https://www.rxthink.cn),进入「个人中心」→「我的订单」页面。
2. 在订单列表中找到已购买的授权订单,点击「下载」按钮。
3. 下载的压缩包包含完整的前后端源码、数据库脚本及部署配置文件。
4. 将压缩包解压到本地开发目录(如 D:\xampp8.2\htdocs\ 或 ~/www/)。
读取配置并校验(fail-fast:JWT 密钥与 DSN 不合法直接退出)
│
▼
初始化日志 / 缓存(Redis 探测失败自动降级内存并告警)
│
▼
连接数据库(gorm.Open + 连接池参数)
│
▼
注册路由(registerControllers 内 Bind 反射扫描全部控制器,
写入路由元数据表;公开白名单/权限码/日志配置同源落表)
│
▼
启动定时任务调度器(service.DaemonInit)
│
▼
监听 server.address(默认 :8000)
```
## 常用启动变体
```bash
# 进入项目目录(以实际解压路径为准)
cd RXThinkCMF_ThinkPhp8_EleVue
make build # 编译到 bin/
./bin/admin-server # 直接运行编译产物(Windows: bin\ 下可执行文件)
# 环境变量覆盖配置示例(临时切库)
APP_DATABASE_DEFAULT_DBNAME=mydb APP_SERVER_ADDRESS=:9000 make run
```
:::tip 温馨提示
1. 源码包请务必从[官方网站](https://www.rxthink.cn)订单中心下载,确保获取的是正版授权的最新版本。
2. 授权有效期内可无限次下载最新版本,版本更新后可重新下载获取最新源码。
3. 解压后请先阅读根目录下的 `README.md` 和 `CHANGELOG.md` 了解版本更新内容。
:::
## 步骤二:安装 Composer 依赖
## 验证服务
```bash
# -----------------------------------------------------------------------------
# 安装项目依赖(从 composer.lock 精确安装,确保版本一致)
# -----------------------------------------------------------------------------
# install → 读取 composer.lock,安装锁定版本的依赖
# 安装完成后生成 vendor/ 目录,包含所有第三方库
composer install
# -----------------------------------------------------------------------------
# 如果国内下载慢,先配置阿里云镜像(加速依赖下载)
# -----------------------------------------------------------------------------
# config -g → 修改全局配置(所有项目生效)
# repo.packagist → 设置 Packagist 仓库的镜像地址
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer install
curl http://127.0.0.1:8000/api/health
```
安装完成后,项目根目录会生成 `vendor/` 目录,包含所有第三方依赖。
健康检查 `/api/health` 为免登录端点,返回 200 即服务就绪。
## 步骤三:配置环境文件
## 日志
```bash
# 复制环境配置模板(.env.example 是模板文件,.env 是实际配置)
cp .env.example .env
```
- 控制台输出由 `logger.stdout` 控制
- 文件日志写入 `log/` 目录(`logger.path`)
- 启动日志只打阶段就绪与非常态告警,不复述配置明细
编辑 `.env` 文件,配置数据库连接等信息:
## 优雅关闭
```ini
; 开启调试模式(开发环境 true,生产环境必须 false)
APP_DEBUG = true
进程收到退出信号后按序关闭:**停 HTTP → 停定时任务 → 关 DB → 关 Redis**。直接 Ctrl+C 即触发完整关闭链。
; 数据库连接配置
[DATABASE]
TYPE = mysql ; 数据库类型(mysql / pgsql / sqlsrv / oracle / sqlite)
HOSTNAME = 127.0.0.1 ; 数据库服务器地址
DATABASE = rxthinkcmf.thinkphp8.elevue ; 数据库名称
USERNAME = root ; 数据库用户名
PASSWORD = root ; 数据库密码
HOSTPORT = 3306 ; 数据库端口
PREFIX = think_ ; 表前缀
## 常见启动失败
; JWT 签名密钥(生产环境务必修改为强随机字符串)
[JWT]
SECRET = rxthinkcmf_jwt_secret_key_2024
| 现象 | 原因与处理 |
|---|---|
| 配置校验失败退出 | JWT 密钥为空/过短,或 DSN 字段不完整——修正 config.yaml 或环境变量 |
| 数据库连接失败 | MySQL 未启动或账号密码错误——核对 database 节 |
| 端口占用 | `server.address` 改端口或释放 8000 端口 |
; 文件上传配置
[FILE]
UPLOAD_DIR = D:\xampp8.2\htdocs\RXThinkCMF_ThinkPhp8_EleVue\uploads ; 上传文件存储目录(绝对路径)
DOMAIN_URL = http://file.thinkphp8.elevue ; 文件访问域名
```
更多见 [2.8 常见问题 FAQ](/zh/quickstart/faq.html)。
:::danger 生产环境务必修改
1. `[JWT]` 下的 `SECRET` 必须修改为强随机字符串,生成方式:`php -r "echo bin2hex(random_bytes(32));"`
2. `APP_DEBUG` 生产环境必须设为 `false`
3. `[DATABASE]` 下的 `PASSWORD` 必须修改为强密码
:::
## 下一步
## 步骤四:启动内置开发服务器
ThinkPHP 内置了 PHP 开发服务器,无需安装 Nginx/Apache 即可启动:
```bash
# -----------------------------------------------------------------------------
# 启动开发服务器(默认监听 127.0.0.1:8000)
# -----------------------------------------------------------------------------
# run → 启动 ThinkPHP 内置的 PHP 开发服务器
# 启动后浏览器访问 http://localhost:8000 即可
php think run
# -----------------------------------------------------------------------------
# 指定端口(当 8000 被占用时更换端口)
# -----------------------------------------------------------------------------
# --port → 指定监听端口
php think run --port 8080
# -----------------------------------------------------------------------------
# 指定主机和端口(允许局域网其他设备访问)
# -----------------------------------------------------------------------------
# --host 0.0.0.0 → 监听所有网络接口(默认只监听 127.0.0.1)
# 适用于手机调试、前后端分离开发等场景
php think run --host 0.0.0.0 --port 8000
```
启动成功后会看到:
```html
ThinkPHP Development server is started
<http://0.0.0.0:8000>
You can exit with `CTRL-C`
```
## 步骤五:验证服务
```bash
# -----------------------------------------------------------------------------
# 访问根路径,确认服务正常运行
# -----------------------------------------------------------------------------
# curl → 命令行 HTTP 客户端工具
# 正常响应:{"code":200,"msg":"RxThinkCMF API Server","data":{"version":"1.0.0"}}
curl http://localhost:8000/
# -----------------------------------------------------------------------------
# 测试登录接口(POST 请求 + JSON 请求体)
# -----------------------------------------------------------------------------
# -X POST → 使用 POST 方法
# -H → 设置请求头(Content-Type: application/json)
# -d → 发送 JSON 格式的请求体
curl -X POST http://localhost:8000/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456"}'
# 测试租户账号登录
curl -X POST http://localhost:8000/api/login \
-H "Content-Type: application/json" \
-d '{"username":"tenant001","password":"123456"}'
```
:::tip 内置演示账号
| 账号 | 密码 | 角色 | 说明 |
|------|------|------|------|
| admin | 123456 | 超级管理员 | 平台管理,可管理所有租户 |
| tenant001 | 123456 | 租户管理员(客户租户A) | 租户视角,体验数据隔离效果 |
:::
## 常见问题
### 1. `composer install` 报错内存不足
```bash
# -d memory_limit=-1 → 取消 PHP 内存限制(-1 表示无限制)
php -d memory_limit=-1 /usr/local/bin/composer install
```
### 2. `vendor/` 目录权限问题
```bash
# 755 → owner 可读写执行,group/others 可读可执行
chmod -R 755 vendor/
```
### 3. 数据库连接失败
检查 `.env` 中的数据库配置是否正确:
```bash
# 1. 检查 .env 中 [DATABASE] 配置:HOSTNAME、PORT、USERNAME、PASSWORD、DATABASE 是否正确
# 2. 确认数据库服务已启动
# 3. 用原生 SQL 测试连接是否正常(以 MySQL 为例)
mysql -h 127.0.0.1 -P 3306 -u root -p -e "SELECT 1;"
```
### 4. 端口被占用
```bash
# Windows:查找占用 8000 端口的进程
# findstr → Windows 版的 grep(过滤文本)
netstat -ano | findstr :8000
# macOS / Linux:查找占用 8000 端口的进程
# -i :8000 → 只显示使用 8000 端口的进程
lsof -i :8000
# 更换端口启动(避免冲突)
php think run --port 8080
```
→ [2.5 前端服务启动](/zh/quickstart/frontend-start.html)