ansible部署hyperf的关键是标准化php+swoole环境、幂等化项目安装、配置与进程守护,并确保安全可观测性。需先满足php≥8.0、swoole≥5.0等前提,再通过playbook统一安装依赖、拉取代码、渲染配置、生成代理类、部署systemd服务及日志轮转等。

用 Ansible 在多台 Linux 服务器上快速部署 Hyperf,关键在于把 PHP 环境准备、框架安装、服务配置和进程守护这四步标准化、幂等化。Hyperf 不是开箱即用的二进制程序,它依赖特定版本的 PHP 和 Swoole,所以 Ansible 的作用不是“一键装好”,而是“精准复现可运行环境”。
确保目标机满足 Hyperf 运行前提
Ansible 不能绕过底层约束,必须先确认或强制达成以下条件:
- PHP ≥ 8.0(推荐 8.1 或 8.2),且 CLI 模式下 opcache.enable_cli = 0(必须显式关闭)
- Swoole ≥ 5.0,且 coroutine 支持已启用(通过
php --ri swoole验证) - 系统已安装
curl、unzip、git、composer(建议用官方安装脚本而非包管理器源) - 目标目录有写权限(尤其
runtime/和storage/)
用 playbook 统一安装与配置 PHP+Swoole
不要依赖系统默认源——Ubuntu/Debian 默认 PHP 版本常偏低,CentOS/Rocky 的 EPEL 源也未必含新版 Swoole。推荐在 playbook 中明确指定安装路径:
- 添加 Ondřej PPA(Ubuntu)或 Remi 仓库(Rocky/CentOS),再
apt install php8.2-cli php8.2-zip php8.2-mbstring ... - 用
pecl install swoole安装,并在php.ini末尾追加绝对路径的extension=/usr/lib/php/20220829/swoole.so - 用
lineinfile模块确保opcache.enable_cli=0存在且生效 - 最后用
command: php -v && php --ri swoole做断言校验,失败则中断部署
自动化拉取、安装并启动 Hyperf 项目
避免手动 composer create-project,全部交由 Ansible 执行:
- 用
git模块克隆你的私有项目仓库(支持 SSH key 或 token 认证) - 用
composer模块执行install --no-dev --optimize-autoloader,指定working_dir - 用
template模块渲染.env和config/autoload/server.php(如动态填入 IP、端口、Redis 地址) - 用
shell模块运行php bin/hyperf.php di:generate生成代理类(避免首次请求卡顿) - 用
systemd模块部署 service 文件(hyperf.service),启用并启动服务
补充:安全与可观测性基础项
批量部署不只是“跑起来”,还要能长期稳住:
- 用
file模块确保runtime/目录属主为运行用户(如www-data),权限为0755 - 用
firewalld或ufw模块开放监听端口(如 9501),禁止非必要端口 - 用
copy模块分发日志轮转配置(/etc/logrotate.d/hyperf),防止磁盘打满 - 可选:用
get_url下载轻量监控脚本(如检查ps aux | grep hyperf进程数),配合 cron 定期执行
不复杂但容易忽略










