直接在腾讯云CVM单机部署Hyperf需绕过PHP-FPM,利用Swoole协程运行常驻服务,关键步骤包括:安装PHP 8.2+及Swoole扩展、Composer与Git工具;拉取Hyperf骨架项目并配置端口与PID文件;放行安全组及UFW防火墙端口;使用Supervisor守护进程并开机自启;可选Nginx反向代理支持HTTPS与域名。

直接在腾讯云CVM单机上部署Hyperf项目,核心是绕过传统PHP-FPM模式,利用Swoole协程能力跑起常驻服务。整个过程不依赖Nginx转发(可选),但需注意系统环境、进程守护和端口暴露三个关键点。
安装基础运行环境
确保CVM系统为Ubuntu 22.04或CentOS 7+,执行以下命令:
- 安装PHP 8.2+(含Swoole扩展):腾讯云镜像源已预装Swoole,若未启用,执行
sudo pecl install swoole并确认extension=swoole.so写入/etc/php/8.2/cli/php.ini和fpm/php.ini - 安装Composer:
curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer - 安装Git与常用工具:
sudo apt update && sudo apt install -y git unzip curl
拉取并初始化Hyperf项目
推荐使用骨架项目快速启动,避免手动配置错误:
腾讯云跨账号资源迁移工具,支持将账号A的VPC、CLB、NAT、CVM、安全组等资源迁移至账号B,通过CCN云联网实现跨账号网络互通,提供自动扫描、配置生成、Terraform部署功能。
- 执行
composer create-project hyperf/hyperf-skeleton /var/www/hyperf --no-dev --prefer-dist - 进入目录:
cd /var/www/hyperf - 修改
config/autoload/server.php中settings.port为9501(或你期望的端口),并确认settings.pid_file路径可写(如/var/run/hyperf.pid) - 若需数据库支持,安装
hyperf/database组件并配置.env文件
配置防火墙与安全组
腾讯云CVM默认关闭所有入站端口,必须显式放行:
- 登录腾讯云控制台 → CVM实例 → 安全组 → 编辑入站规则
- 添加规则:协议类型
TCP,端口范围填9501(或你设的端口),源IP建议限制为0.0.0.0/0仅调试期,上线后应缩小范围(如CDN回源IP段或公司出口IP) - 服务器本地防火墙(如UFW)也需同步开放:
sudo ufw allow 9501
进程守护与开机自启
Hyperf是常驻进程,必须用进程管理工具保障稳定性:
- 推荐使用Supervisor(比systemd更适配PHP协程):
sudo apt install supervisor - 创建配置文件
/etc/supervisor/conf.d/hyperf.conf,内容如下:
command=php /var/www/hyperf/bin/hyperf.php start
directory=/var/www/hyperf
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/hyperf.log
- 重载配置:
sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start hyperf - 验证进程状态:
sudo supervisorctl status应显示RUNNING
(可选)接入Nginx反向代理
若需HTTPS、域名绑定或静态资源托管,建议加一层Nginx:
- 安装Nginx:
sudo apt install nginx - 配置
/etc/nginx/sites-available/hyperf,核心段落:
proxy_pass http://127.0.0.1:9501;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
- 启用站点:
sudo ln -sf /etc/nginx/sites-available/hyperf /etc/nginx/sites-enabled/,然后sudo nginx -t && sudo systemctl reload nginx

















