lhai / scf
swoole cloud framework
Requires
- php: >=8.1
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-iconv: *
- ext-libxml: *
- ext-openssl: *
- ext-pdo: *
- ext-posix: *
- ext-redis: *
- ext-simplexml: *
- ext-sockets: *
- ext-sodium: *
- ext-xlswriter: *
- alibabacloud/client: 1.5.32
- alibabacloud/darabonba-openapi: 0.2.13
- alibabacloud/dysmsapi-20170525: 3.1.0
- alibabacloud/green-20220302: 2.2.6
- alibabacloud/sts-20150401: 1.1.4
- alibabacloud/tea: 3.2.1
- alibabacloud/tea-utils: 0.2.21
- aliyuncs/oss-sdk-php: ^2.6
- brick/math: ^0.9.3
- endroid/qr-code: ^4.4
- hedeqiang/ten-im: ^1.1
- ircmaxell/filterus: ^1.0
- laravel/prompts: ^0.1.24
- mix/redis: ^3.0
- monolog/monolog: ^2.3
- nelexa/zip: ^4.0
- overtrue/pinyin: ^5.0
- php-mqtt/client: ^2.1
- simps/mqtt: ^1.4
- swlib/saber: ^1.0
- swoole/ide-helper: ~5.1.3
- symfony/console: ^6.4
- symfony/yaml: 6.4.8
- twig/twig: ^3.0
- dev-main
- v1.4.79
- v1.4.78
- v1.4.77
- v1.4.76
- v1.4.75
- v1.4.74
- v1.4.73
- v1.4.72
- v1.4.71
- v1.4.70
- v1.4.69
- v1.4.68
- v1.4.67
- v1.4.66
- v1.4.65
- v1.4.64
- v1.4.63
- v1.4.62
- v1.4.61
- v1.4.60
- v1.4.59
- v1.4.58
- v1.4.57
- v1.4.56
- v1.4.55
- v1.4.54
- v1.4.53
- v1.4.52
- v1.4.51
- v1.4.50
- v1.4.49
- v1.4.48
- v1.4.47
- v1.4.46
- v1.4.45
- v1.4.44
- v1.4.43
- v1.4.42
- v1.4.41
- v1.4.40
- v1.4.39
- v1.4.38
- v1.4.37
- v1.4.36
- v1.4.35
- v1.4.34
- v1.4.33
- v1.4.32
- v1.4.31
- v1.4.30
- v1.4.29
- v1.4.28
- v1.4.27
- v1.4.26
- v1.4.25
- v1.4.24
- v1.4.23
- v1.4.22
- v1.4.21
- v1.4.20
- v1.4.19
- v1.4.18
- v1.4.17
- v1.4.16
- v1.4.15
- v1.4.14
- v1.4.13
- v1.4.12
- v1.4.11
- v1.4.10
- v1.4.9
- v1.3.99
- v1.3.98
- v1.3.97
- v1.3.96
- v1.3.95
- v1.3.94
- v1.3.93
- v1.3.92
- v1.3.91
- v1.3.90
- v1.3.89
- v1.3.88
- v1.3.87
- v1.3.86
- v1.3.85
- v1.3.84
- v1.3.83
- v1.3.82
- v1.3.81
- v1.3.80
- v1.3.79
- v1.3.78
- v1.3.77
- v1.3.76
- v1.3.75
- v1.3.74
- v1.3.73
- v1.3.72
- v1.3.71
- v1.3.70
- v1.3.69
- v1.3.68
- v1.3.67
- v1.3.66
- v1.3.65
- v1.3.64
- v1.3.63
- v1.3.62
- v1.3.61
- v1.3.60
- v1.3.59
- v1.3.58
- v1.3.57
- v1.3.56
- v1.3.55
- v1.3.54
- v1.3.53
- v1.3.52
- v1.3.51
- v1.3.50
- v1.3.49
- v1.3.48
- v1.3.47
- v1.3.46
- v1.3.45
- v1.3.44
- v1.3.43
- v1.3.42
- v1.3.41
- v1.3.40
- v1.3.39
- v1.3.38
- v1.3.37
- v1.3.36
- v1.3.35
- v1.3.34
- v1.3.33
- v1.3.32
- v1.3.31
- v1.3.30
- v1.3.29
- v1.3.28
- v1.3.27
- v1.3.26
- v1.3.25
- v1.3.24
- v1.3.23
- v1.3.22
- v1.3.21
- v1.3.20
- v1.3.19
- v1.3.18
- v1.3.17
- v1.3.16
- v1.3.15
- v1.3.14
- v1.3.13
- v1.3.12
- v1.3.11
- v1.3.10
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.2.99
- v1.2.98
- v1.2.97
- v1.2.96
- v1.2.95
- v1.2.94
- v1.2.93
- v1.2.92
- v1.2.91
- v1.2.90
- v1.2.89
- v1.2.88
- v1.2.87
- v1.2.86
- v1.2.85
- v1.2.84
- v1.2.83
- v1.2.82
- v1.2.81
- v1.2.80
- v1.2.79
- v1.2.78
- v1.2.77
- v1.2.76
- v1.2.75
- v1.2.74
- v1.2.73
- v1.2.72
- v1.2.71
- v1.2.70
- v1.2.69
- v1.2.68
- v1.2.67
- v1.2.66
- v1.2.65
- v1.2.64
- v1.2.63
- v1.2.62
- v1.2.61
- v1.2.60
- v1.2.59
- v1.2.58
- v1.2.57
- v1.2.56
- v1.2.55
- v1.2.54
- v1.2.53
- v1.2.52
- v1.2.51
- v1.2.50
- v1.2.49
- v1.2.48
- v1.2.47
- v1.2.46
- v1.2.45
- v1.2.44
- v1.2.43
- v1.2.42
- v1.2.41
- v1.2.40
- v1.2.39
- v1.2.38
- v1.2.37
- v1.2.36
- v1.2.35
- v1.2.34
- v1.2.33
- v1.2.32
- v1.2.31
- v1.2.30
- v1.2.29
- v1.2.28
- v1.2.27
- v1.2.26
- v1.2.25
- v1.2.24
- v1.2.23
- v1.2.22
- v1.2.21
- v1.2.20
- v1.2.19
- v1.2.18
- v1.2.17
- v1.2.16
- v1.2.15
- v1.2.14
- v1.2.13
- v1.2.12
- v1.2.11
- v1.2.10
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.102
- v1.1.101
- v1.1.100
- v1.1.99
- v1.1.98
- v1.1.97
- v1.1.96
- v1.1.95
- v1.1.94
- v1.1.93
- v1.1.92
- v1.1.91
- v1.1.90
- v1.1.89
- v1.1.88
- v1.1.87
- v1.1.86
- v1.1.85
- v1.1.84
- v1.1.83
- v1.1.82
- v1.1.81
- v1.1.80
- v1.1.79
- v1.1.78
- v1.1.77
- v1.1.76
- v1.1.75
- v1.1.74
- v1.1.73
- v1.1.72
- v1.1.71
- v1.1.70
- v1.1.69
- v1.1.68
- v1.1.67
- v1.1.66
- v1.1.65
- v1.1.64
- v1.1.63
- v1.1.62
- v1.1.61
- v1.1.60
- v1.1.59
- v1.1.58
- v1.1.57
- v1.1.56
- v1.1.55
- v1.1.54
- v1.1.53
- v1.1.52
- v1.1.51
- v1.1.50
- v1.1.49
- v1.1.48
- v1.1.47
- v1.1.46
- v1.1.45
- v1.1.44
- v1.1.43
- v1.1.42
- v1.1.41
- v1.1.40
- v1.1.39
- v1.1.38
- v1.1.37
- v1.1.36
- v1.1.35
- v1.1.34
- v1.1.33
- v1.1.32
- v1.1.31
- v1.1.30
- v1.1.29
- v1.1.28
- v1.1.27
- v1.1.26
- v1.1.25
- v1.1.24
- v1.1.23
- v1.1.22
- v1.1.21
- v1.1.20
- v1.1.19
- v1.1.18
- v1.1.17
- v1.1.16
- v1.1.15
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.7
- v1.0.6
This package is auto-updated.
Last update: 2026-04-06 01:04:49 UTC
README
Swoole Cloud Framework(SCF)命令与启动说明文档。
本文基于当前 bin 与 src/Command 实现整理,重点覆盖:
- 各模块启动方式
- 参数格式与默认行为
- 应用初始化 / 安装 / 发布流程
1. 运行入口与参数约定
1.1 建议运行位置
多数脚本使用相对路径 php ../boot ...,建议在 scf/bin 目录执行:
cd <scf_root>/bin
1.2 参数格式
- 基本格式:
./<script> <action> -key=value -flag action为位置参数(如start/stop/release)- 选项建议统一写成
-key=value - 布尔开关直接写
-d、-force这类无值参数 - 查看帮助:
./<script> -h或php ../boot <command> -h
2. bin 目录入口总览
| 脚本 | 实际转发 | 说明 |
|---|---|---|
./server |
boot gateway ... |
固定走 Gateway 启动链路 |
./gateway |
boot gateway ... |
无参数默认 start;支持 start/stop/reload/restart/status 快捷 |
./crontab |
boot crontab ... |
一次性任务入口;log 默认注入 -nopack(未显式指定 pack 时) |
./build |
boot build ... |
应用打包/发布/回滚 |
./install |
boot install ... |
应用创建/拉取/列表 |
./framework |
boot framework ... |
框架打包/推送/版本查询 |
./native |
boot native ... |
桌面应用相关 |
./toolbox |
boot toolbox ... |
工具箱 |
./cli |
boot toolbox cli ... |
toolbox cli 快捷入口 |
./ar |
boot toolbox ar ... |
toolbox ar 快捷入口 |
3. Command 模块说明(src/Command)
当前 Runner 注册的主命令:
servergatewaygateway_upstreamcrontabinstallbuildframeworknativetoolboxrunbot
3.1 server(HTTP 服务管理)
常用 action:
startstopreloadrestartstatus
常用参数:
-app=<应用目录>-env=<dev|production>-role=<master|slave>-port=<端口>-d(守护进程)-force(强制停止)
示例:
./server start -app=example_app -env=dev -role=master ./server stop -app=example_app -role=master ./server reload -app=example_app -role=master
说明:./server 现在固定走 gateway 命令链路。
3.2 gateway(代理网关)
action:
startstopreloadrestartrestart_crontabrestart_redisqueuestatus
常用参数:
-app-env-role-host-port-rpc_port-control_port-upstream_host-upstream_port-upstream_rpc_port-spawn_upstream-reuse_upstream
示例:
./gateway start -app=example_app -env=dev -role=master -port=9502 ./gateway stop -app=example_app -role=master ./server restart_crontab -app=example_app -role=master
说明:bin/gateway 快捷脚本只对 start/stop/reload/restart/status 做了首参识别;restart_crontab、restart_redisqueue 建议使用 ./server ... 或 php ../boot gateway ... 直接调用。
3.3 gateway_upstream(代理托管业务实例,内部命令)
action:
start
参数:
-app-env-role-port-rport
示例:
php ../boot gateway_upstream start -app=example_app -env=dev -port=19502 -rport=19602
3.4 crontab(一次性定时任务)
action:
list(列出可执行任务)log(查看统一日志)<classname>(执行任务)
参数:
-app-env-role-namespace=<完整类名>(优先级高于 classname)-entry_id=<Linux crontab 条目ID>-n=<行数>/-lines=<行数>-f/-follow=1|0-clear
示例:
./crontab list -app=example_app -env=dev -role=master ./crontab log -app=example_app -n=200 -f ./crontab TaskClass -app=example_app -env=dev -role=master php ../boot crontab -app=example_app -entry_id=123
3.5 install(应用初始化/安装)
action:
create(创建新应用)pull(从云端拉取已发布应用)list(查看本地应用)
参数:
-appid-path-key-server
示例:
./install create -path=example_app -appid=SCF_EXAMPLE_APPID -key=your_app_auth_key ./install pull -path=example_app ./install pull -path=example_app -key=your_install_key -server=https://xx/upload/scfapp/example_app-version.json ./install list
3.6 build(应用发布)
action:
release(默认 action,不写也会进入)rollbackhistory
参数:
-app=<应用目录>-file=<build目录配置名,不含.json>-version=<回滚目标版本>
示例:
./build release -app=example_app
./build -app=example_app
./build release -app=example_app -file=buildfile
./build rollback -app=example_app -version=1.2.3
./build history -app=example_app
说明:
release交互模式会选择打包类型:1源码打包2静态资源打包3全部打包
- 发布成功后会更新
build/<APP_ID>-version.json并输出安装秘钥。
3.7 framework(框架发布)
action:
build(打包并上传框架包)push(推送代码与 tag)dashboard(打包上传 dashboard 静态包)version(查询最新 tag 版本)
示例:
./framework build ./framework push ./framework version ./framework dashboard
3.8 toolbox(工具箱)
action:
clirpcarinfotranslogsnodesconfig
示例:
./toolbox info -app=example_app ./cli -app=example_app ./ar -app=example_app
3.9 run(脚本执行)
参数:
{path}:应用目录下脚本路径(不含.php后缀,建议以/开头)
示例:
php ../boot run /scripts/demo -app=example_app
3.10 bot(机器人)
action:
run
参数:
-app
4. 应用初始化 / 安装 / 启动(推荐流程)
4.1 创建新应用(本地初始化)
cd <scf_root>/bin ./install create -path=example_app -appid=SCF_EXAMPLE_APPID -key=your_app_auth_key
不传参数时会进入交互输入。
4.2 拉取已有应用(云端安装)
./install pull -path=example_app
会要求输入安装秘钥;也可显式传:
./install pull -path=example_app -key=your_install_key -server=https://your-version-json-url
4.3 启动应用(Gateway 模式)
./server start -app=example_app -env=dev -role=master
5. 应用发布流程
5.1 交互发布
./build release -app=example_app
流程包括:
- 选择打包类型(源码/静态资源/全部)
- 填写版本号与版本说明
- 上传包到 OSS
- 更新版本引导文件
- 生成安装秘钥
5.2 配置文件发布
在 build 目录准备 buildfile.json(示例):
{
"type": 3,
"version": "1.2.3",
"remark": "release note"
}
执行:
./build release -app=example_app -file=buildfile
5.3 回滚与历史
./build rollback -app=example_app -version=1.2.2
./build history -app=example_app
6. 常用快速命令
# 查看某命令帮助 php ../boot server -h php ../boot gateway -h php ../boot crontab -h # 查看本地应用 ./install list # 启动/停止 ./server start -app=example_app -env=dev -role=master ./server stop -app=example_app -role=master # 查看一次性任务日志 ./crontab log -app=example_app -n=200 -f
7. 备注
- 当前命令体系由
src/Command/Runner.php注册,boot负责初始化和分发。 server/gateway属于进程循环管理链路,建议始终显式传-app、-env、-role,减少默认值差异带来的歧义。
8. 部署环境变量(系统级)
本节为“应用部署时可配置的系统环境变量”说明,基于当前 boot 与 Env::initialize 真实实现整理。
8.1 变量总表
| 变量名 | 用途 | 默认值 | 常见取值 |
|---|---|---|---|
APP_DIR |
默认应用目录(未传 -app 时生效) |
app |
example_app |
APP_ENV |
默认运行环境(未传 -env 且未传 -dev 时生效) |
production |
dev / production |
SERVER_ROLE |
默认节点角色(未传 -role 时生效) |
master |
master / slave |
APP_SRC |
应用源码模式默认值 | 自动推导 | dir / phar |
HOST_IP |
容器/组网场景内网 IP(优先用于 SERVER_HOST) |
自动探测 | 172.17.x.x 等 |
NETWORK_MODE |
网络模式开关(影响 IP 获取逻辑) | 空 | single / group |
SCF_UPDATE_SERVER |
框架更新/版本引导地址 | https://lky-chengdu.oss-cn-chengdu.aliyuncs.com/scf/version.json |
自建版本服务 URL |
TZ |
时区(boot 与 gateway 入口读取) | Asia/Shanghai |
Asia/Shanghai |
SCF_FROM_CRON |
标记 Linux crontab 运行态(一般由系统任务自动注入) | 空 | 1 |
SCF_PHP_BIN |
bin/crontab 使用的 PHP 可执行路径 |
自动探测 | /usr/bin/php 等 |
STATIC_HANDLER |
启动期保留字段(已采集但当前无直接逻辑分支) | 空 | 自定义 |
OS_NAME |
启动期保留字段(已采集但当前无直接逻辑分支) | 空 | 自定义 |
8.2 参数优先级(很关键)
大多数启动参数优先级为:
命令行参数 > 环境变量 > 框架默认值
例如:
-app优先于APP_DIR-env/-dev优先于APP_ENV-role优先于SERVER_ROLE
但 APP_SRC 存在特殊优先级(见 Env::initialize):
-phar / -dir > APP_SRC > -src > 自动推导
也就是说,设置了 APP_SRC 时,会覆盖 -src 的默认选择逻辑。
8.3 各变量的实际影响范围
APP_DIR
- 决定默认应用目录(
APP_PATH、日志目录、PID 文件命名) server/gateway的 stop/restart 控制标记文件也依赖它
APP_ENV
- 影响
SERVER_RUN_ENV(dev/production) - 进而影响默认源码模式推导(生产偏向
phar,开发偏向dir)
SERVER_ROLE
- 影响 master/slave 角色行为
- 影响 PID 文件、节点标识、gateway 进程识别
APP_SRC
- 指定应用运行源码类型(
dir或phar) - 常用于强制部署模式,避免自动推导误判
HOST_IP+NETWORK_MODE
- 在 Docker 或
NETWORK_MODE=group时优先用于内网地址 SCF_FROM_CRON=1时若未配置HOST_IP,会退化到本机地址/127.0.0.1,避免 cron 阻塞
SCF_UPDATE_SERVER
- 用于框架自愈下载与版本检查
- 也会被 dashboard/升级链路读取
TZ
- 影响启动期与 gateway/direct-upstream 运行时的时区
SCF_FROM_CRON/SCF_PHP_BIN
SCF_FROM_CRON:标记一次性任务来自系统 cronSCF_PHP_BIN:bin/crontab找不到 php 时可显式指定;LinuxCrontabManager 也会自动注入
8.4 部署推荐(systemd / Docker / Crontab)
- systemd(推荐显式设置)
[Service] Type=simple WorkingDirectory=<scf_root>/bin Environment=APP_DIR=example_app Environment=APP_ENV=production Environment=SERVER_ROLE=master Environment=APP_SRC=phar Environment=TZ=Asia/Shanghai Environment=NETWORK_MODE=single ExecStart=/bin/bash <scf_root>/bin/server start -app=example_app -env=production -role=master ExecStop=/bin/bash <scf_root>/bin/server stop -app=example_app -role=master Restart=always
- Docker(建议最少变量)
export APP_DIR=example_app export APP_ENV=production export SERVER_ROLE=master export APP_SRC=phar export TZ=Asia/Shanghai export NETWORK_MODE=group export HOST_IP=172.17.0.10 /bin/bash <scf_root>/bin/server start -app=example_app -env=production -role=master
- Linux Crontab(一次性任务)
统一使用 scf/bin/crontab,例如:
SCF_FROM_CRON=1 SCF_PHP_BIN=/usr/bin/php /bin/bash <scf_root>/bin/crontab \ TaskClass -app=example_app -env=production -role=master
8.5 线上实践建议
- 线上务必显式设置:
APP_DIR、APP_ENV、SERVER_ROLE、APP_SRC、TZ - 生产部署建议显式传参:
-app、-env、-role,不要只依赖环境变量 - 如果使用私有更新源,务必设置
SCF_UPDATE_SERVER STATIC_HANDLER、OS_NAME当前版本属于保留输入,建议仅在有定制代码时使用