mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-08 11:02:48 +08:00
feat: 初步增加frankenphp构建二进制
This commit is contained in:
105
extend/ua/build/BuildDoc.md
Normal file
105
extend/ua/build/BuildDoc.md
Normal file
@@ -0,0 +1,105 @@
|
||||
## 核心需求
|
||||
|
||||
**将FrankenPHP + ThinkPHP应用打包成单一二进制文件,支持一行命令启动多种服务**
|
||||
|
||||
## 详细要求
|
||||
|
||||
### 1. 打包方式
|
||||
- 使用FrankenPHP的embed机制将ThinkPHP代码打包到Go二进制文件中
|
||||
- 最终产出:一个独立的可执行文件,包含所有ThinkPHP代码和依赖
|
||||
- 支持跨平台编译:Linux和Windows
|
||||
|
||||
### 2. 服务启动模式
|
||||
```bash
|
||||
# Linux
|
||||
./frankphp serve -daemon -port 8080
|
||||
|
||||
# Windows
|
||||
frankphp.exe serve -daemon -port 8080
|
||||
```
|
||||
**一行命令同时启动:**
|
||||
- FrankenPHP的PHP-FPM模式(HTTP服务器)
|
||||
- ThinkPHP应用程序(如Workerman等Worker进程)
|
||||
- 进入后台守护进程模式
|
||||
|
||||
### 3. 命令系统支持
|
||||
**系统管理命令:**
|
||||
- `serve` - 启动所有服务
|
||||
- `stop` - 停止守护进程
|
||||
- `restart` - 重启服务
|
||||
- `status` - 查看运行状态
|
||||
- `version` - 版本信息
|
||||
- `install` - 安装为系统自动启动服务
|
||||
- `uninstall` - 卸载系统自动启动服务
|
||||
|
||||
**ThinkPHP框架命令:**
|
||||
- 支持think命令:`./frankphp make:controller`, `./frankphp migrate:run`
|
||||
- 支持自定义命令:`./frankphp my-command --option=value`
|
||||
- 直接执行PHP脚本:`./frankphp php script.php`
|
||||
|
||||
### 4. 守护进程特性
|
||||
- 后台运行
|
||||
- PID文件管理
|
||||
- 信号处理(SIGTERM, SIGHUP等)
|
||||
- 进程监控和重启机制
|
||||
|
||||
### 5. 多服务并发运行
|
||||
- **HTTP服务**:FrankenPHP处理ThinkPHP Web请求
|
||||
- **Worker服务**:运行Workerman等长驻进程
|
||||
- 所有服务在同一进程中并发运行
|
||||
|
||||
### 6. 自动启动服务管理
|
||||
**Linux系统:**
|
||||
- 生成systemd服务文件
|
||||
- 支持`systemctl enable/disable`
|
||||
- 开机自动启动
|
||||
|
||||
**Windows系统:**
|
||||
- 注册为Windows服务
|
||||
- 支持服务管理器控制
|
||||
- 开机自动启动
|
||||
|
||||
### 7. ThinkPHP框架集成
|
||||
- 支持ThinkPHP的think命令行工具
|
||||
- 兼容ThinkPHP的目录结构
|
||||
- 支持ThinkPHP的配置文件
|
||||
- 集成ThinkPHP的命令系统
|
||||
|
||||
### 8. 技术实现细节
|
||||
- 使用Go的`embed`包嵌入ThinkPHP文件
|
||||
- 运行时提取文件到临时目录
|
||||
- 使用goroutine并发管理多个服务
|
||||
- 跨平台的服务安装/卸载实现
|
||||
- 统一的日志输出和错误处理
|
||||
|
||||
### 9. 部署便利性
|
||||
- 单文件部署,无需PHP环境
|
||||
- 跨平台编译支持(Linux/Windows)
|
||||
- 支持系统服务管理
|
||||
- 一键安装自动启动
|
||||
- 一行命令启动完整应用栈
|
||||
|
||||
### 10. 使用示例
|
||||
```bash
|
||||
# 构建
|
||||
./build.sh
|
||||
|
||||
# 启动服务
|
||||
./frankphp serve -daemon -port 8080
|
||||
|
||||
# ThinkPHP命令
|
||||
./frankphp make:controller User
|
||||
./frankphp migrate:run
|
||||
|
||||
# 安装为系统服务
|
||||
sudo ./frankphp install
|
||||
|
||||
# 卸载系统服务
|
||||
sudo ./frankphp uninstall
|
||||
|
||||
# Windows下
|
||||
frankphp.exe install
|
||||
frankphp.exe uninstall
|
||||
```
|
||||
|
||||
**核心价值:将ThinkPHP应用环境(HTTP服务器 + Worker进程 + 命令行工具)打包成一个跨平台的独立二进制文件,支持系统服务管理和一键部署。**
|
||||
Reference in New Issue
Block a user