在linux服务器上可部署多个独立hyperf应用实例,每个实例需隔离代码、配置、端口和进程空间;通过统一php/swoole环境、分端口目录部署、systemd守护及验证访问实现高效多实例管理。

在一台 Linux 服务器上部署多个 Hyperf 应用,核心不是“装多个框架”,而是**隔离运行多个独立项目实例**——每个实例拥有自己的代码、配置、端口和进程空间。只要资源允许(内存、CPU、端口),可轻松部署数十个,无需虚拟机或复杂容器编排。
一、准备统一运行环境
避免重复安装依赖,先一次性配好基础环境:
- 安装 PHP ≥ 8.0(推荐用 Ondřej PPA 源):
sudo add-apt-repository ppa:ondrej/php && sudo apt update && sudo apt install php8.2-cli php8.2-mbstring php8.2-bcmath php8.2-pcntl - 安装 Swoole 扩展(≥5.0,启用协程):
pecl install swoole,然后在/etc/php/8.2/cli/php.ini末尾加:extension=/usr/lib/php/20220829/swoole.so(路径用find /usr -name "swoole.so"确认) - 禁用 CLI 模式 opcache:
echo "opcache.enable_cli=0" | sudo tee -a /etc/php/8.2/cli/php.ini - 确保 Composer 已安装(≥2.5):
curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer
二、为每个项目分配独立端口与目录
Hyperf 默认监听 9501,多个实例必须错开端口,且目录完全隔离:
- 创建项目目录并初始化:
composer create-project hyperf/hyperf-skeleton api-order && cd api-order - 修改端口:编辑
config/autoload/server.php,把'port' => 9501改为9502(第二个项目用9503,依此类推) - 确保 runtime 目录可写:
mkdir -p runtime && sudo chown -R $USER:$USER runtime - 生成 DI 代理类(首次启动前必做):
php bin/hyperf.php di:generate
三、用 systemd 守护每个实例(推荐)
比前台运行或 Supervisor 更轻量、更原生,适合多实例管理:
- 为第一个项目创建服务文件:
sudo nano /etc/systemd/system/hyperf-api-order.service - 填入内容(替换实际路径和用户):
[Unit]
Description=Hyperf API Order Service
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/api-order
ExecStart=/usr/bin/php bin/hyperf.php start
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target - 启用并启动:
sudo systemctl daemon-reload && sudo systemctl enable hyperf-api-order && sudo systemctl start hyperf-api-order - 复制该 service 文件,改名(如
hyperf-api-user.service),更新WorkingDirectory和端口配置,再 reload 启动
四、验证与访问
每个实例独立运行,互不干扰:
- 检查状态:
systemctl status hyperf-api-order(看是否 active (running)) - 查看日志:
journalctl -u hyperf-api-order -f - 测试访问:
curl http://127.0.0.1:9502/health(默认健康检查路由) - 若需外网访问,开放对应端口:
sudo ufw allow 9502,或通过 Nginx 反向代理统一入口(如order.example.com → 127.0.0.1:9502)











