frankenphp需借助系统服务机制实现开机自启:linux用systemd(创建frankenphp.service并启用),windows用sc命令注册服务并配置恢复策略,docker则依赖restart策略与宿主机docker自启。

Linux(systemd)方式:最常用且推荐
创建一个 systemd 服务文件,比如 /etc/systemd/system/frankenphp.service:
-
User 和 Group 设为运行项目的非 root 用户(如
www-data或deployer),避免权限过高 - WorkingDirectory 必须指向项目根目录(含 Caddyfile 的位置)
-
ExecStart 写完整路径,例如
/usr/local/bin/frankenphp(不要带子命令,直接运行启动内置 Caddy) - 加上
Restart=always和RestartSec=5,既支持开机自启,也保障异常退出后自动恢复 - 启用服务:
sudo systemctl daemon-reload && sudo systemctl enable --now frankenphp
Windows 方式:用 sc 命令注册服务
以管理员身份运行 CMD 或 PowerShell:
- 执行
sc create FrankenPHP binPath= "C:\path\to\frankenphp.exe" start= auto(注意binPath=后有空格) - 若路径含空格或中文,整个路径要用英文双引号包裹,如
binPath= "\"C:\My App\frankenphp.exe\"" - 注册完成后,进
services.msc找到 FrankenPHP → 右键 → “属性” → “恢复” 页签 - 将第一、二、三次失败都设为“重新启动服务”,延迟建议 30 秒,“重置失败计数”设为 1 天
Docker 环境:靠 restart policy + 守护进程
只要 Docker daemon 本身能开机自启(默认多数 Linux 发行版已启用),你的 FrankenPHP 容器就能跟着起来:
- 在
compose.yaml中确保restart: unless-stopped(比always更合理,避免人为 stop 后又被拉起) - Caddy 证书等数据需挂载到命名卷(如
caddy_data:/data),否则重启后证书丢失 - 确认宿主机已启用 Docker 开机自启:
sudo systemctl enable docker
无论哪种方式,核心逻辑一致:FrankenPHP 是个普通可执行文件,它不会自己注册服务;你得把它“托付”给系统级守护机制,由后者负责拉起、监控和重建。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











