安装指南

从空服务器开始。

首次安装显示交互菜单。Nginx、SQL 数据库和主 PHP 由主安装流程选择,额外服务单独安装。

01 / PREPARE

确认环境与 root 权限

使用全新的 Ubuntu 22.04 LTS、amd64 / x86_64 服务器。amd64 和 x86_64 是同一架构的两个名称。

确认系统与权限
cat /etc/os-release
uname -m
sudo -i
02 / INSTALL

下载并安装主环境

在全新服务器上以 root 执行下面的下载、校验和安装命令。

root · 主环境安装
wget https://pub-2ea34f95a2324956a95f065b9335af1b.r2.dev/onmp0.1.3-dev.tar.gz -O onmp0.1.3-dev.tar.gz && wget https://pub-2ea34f95a2324956a95f065b9335af1b.r2.dev/onmp0.1.3-dev.sha256 -O onmp0.1.3-dev.sha256 && grep '  onmp0.1.3-dev.tar.gz$' onmp0.1.3-dev.sha256 | sha256sum -c - && tar zxf onmp0.1.3-dev.tar.gz && cd onmp0.1.3-dev && ./install.sh onmp

按菜单选择 Nginx、数据库和 PHP。设置 SQL root 密码时输入不回显,直接回车生成随机密码。

组件首次编译需要一些时间,以终端输出为准。安装完成后保留 onmp0.1.3-dev/ 目录,不要删除或移动。

03 / COMPONENTS

安装额外服务与扩展

下方选择只生成额外组件的命令,不会在浏览器中执行安装。Redis 和 MongoDB 选定版本后会提示设置密码。

按需安装 · 可调整上方选项
onmp install redis
onmp install mongodb 8.0
onmp php-extension redis
onmp php-extension mongodb
onmp status

MongoDB 新安装账号:onmp;认证数据库:admin;角色:root。已有安装继续保留原账号和密码。

多 PHP 与工具版本

可选组件示例
onmp install mphp 8.3
onmp php-extension redis /usr/local/php8.3
onmp php-extension mongodb /usr/local/php8.3
onmp install node 22
onmp install pnpm 11
onmp install composer 2.10.3

0.1.2 的主 PHP 8.4.26 / 额外 PHP 8.3.35 曾完成共存测试,但这两个旧补丁已受本次漏洞影响,不应继续选用。新版本验收状态见下载页和更新记录。

04 / MANAGE

检查状态,开始管理

常用管理命令
onmp status
onmp redis check
onmp mongodb check
onmp vhost add
onmp vhost list
onmp database add
onmp database list

服务配置、数据和日志的位置可在 配置目录 中查找。MongoDB 跨大版本和 SQL 升级需要独立迁移流程,当前开发版不直接覆盖已有数据库。

05 / REALTIME

Laravel Reverb 与 Ably

基础 Reverb 无需 Swoole。0.1.2 新安装的 PHP CLI 已允许常驻服务监听端口,PHP-FPM 继续使用原来的函数限制。

Laravel 项目内安装
cd /home/wwwroot/你的站点
# 在站点用户身份下执行,按项目选择一种方案:
php artisan install:broadcasting --reverb
# 或使用 Ably:
php artisan install:broadcasting --ably

Reverb 需配置进程管理和 Nginx WebSocket 转发;安装包内示例:conf/example/reverb-example.conf。Ably 需要你自己的应用密钥,示例命令使用 Laravel 的 Pusher 兼容方案。配置流程见 Laravel 官方广播文档。

旧安装可在更新脚本后执行 onmp php-cli enable。不要在已经安装的环境上重新执行完整安装器。

查看 PHP CLI / FPM 配置 ↗
06 / SECURITY

已有服务器:升级每个 PHP 实例

本版升级入口只支持同一 PHP 分支的补丁升级:8.2 → 8.2.35、8.3 → 8.3.36、8.4 → 8.4.27、8.5 → 8.5.12。跨分支升级请另建 PHP 实例,完成应用和扩展验证后再迁移站点。

本版升级流程的测试范围见更新记录;生产环境仍需独立备份和项目验证。

1. 保留旧环境,准备独立的新脚本目录

先备份每个 PHP 实例的 etc/php.ini、etc/php-cli.ini、etc/php-fpm.conf、conf.d/ 和第三方扩展。保留原 ONMP 管理目录、onmp.conf 和 .state/。

下载两份 0.1.3-dev 配套文件到服务器的同一目录,校验后解压到一个新建的独立目录:

已有环境 · 校验并准备独立升级目录
grep '  onmp0.1.3-dev.tar.gz$' onmp0.1.3-dev.sha256 | sha256sum -c - &&
upgrade_dir=$(mktemp -d ./onmp-upgrade.XXXXXX) &&
tar zxf onmp0.1.3-dev.tar.gz -C "$upgrade_dir" &&
cd "$upgrade_dir/onmp0.1.3-dev"

如果旧 onmp.conf 有自定义编译设置,将它复制到当前新包目录的 onmp.conf,确认设置符合现有环境。不要在已有服务器运行 install.sh 或 setup.sh。

2. 使用新包内的升级脚本

保持在上一步进入的新包目录。主 PHP 执行:

主 PHP · 按提示选择同分支安全补丁
sudo bash ./upgrade.sh php

额外 PHP 实例在新包目录另行执行,并按提示选择目标实例与对应补丁版本:

多 PHP · 每个实例分别升级
sudo bash ./upgrade.sh mphp

这里直接调用新包的升级脚本,避免原 onmp 命令仍指向旧脚本。本流程不会自动迁移旧的 onmp 命令链接,管理命令显示的包版本也可能仍是旧版。

3. 验证版本、扩展与应用

同分支补丁升级会保留现有 CLI / FPM 配置、conf.d/ 与 Composer,并只停止和启动目标 PHP 实例;增加失败回滚以恢复原实例及对应服务。实机验证范围仍以上方进度说明为准。

补丁升级默认只处理 Redis / MongoDB 两种第三方模块;其他 PECL 扩展与旧插件需要单独评估、重新编译和迁移,不承诺全部自动兼容。

以主 PHP 和每个 /usr/local/php8.x/bin/php 的实际版本、配置、扩展加载及对应 PHP-FPM 的网站请求作为验收依据,不以 onmp --version 单独判断 PHP 是否修复。重启使用旧二进制的队列、Reverb 和其他常驻进程,具体应用服务名由项目决定。

4. 备份、失败目录与升级日志

路径中的“时间戳”为本次升级开始时间,格式是 YYYYMMDDHHMMSS。8.x 替换为实际额外 PHP 分支,例如 8.3。

实例 / 用途路径保留规则
主 PHP原实例备份/usr/local/oldphp<时间戳>升级成功后仍保留原实例备份。
主 PHP失败的新实例/usr/local/failedphp<时间戳>仅在升级失败且已产生新安装时出现。
主 PHP升级日志/root/upgrade_onmp_php<时间戳>.log按本次时间戳查找。
多 PHP原实例备份/usr/local/mphp-8.x-backup<时间戳>升级成功后仍保留对应实例备份。
多 PHP失败的新实例/usr/local/mphp-8.x-failed<时间戳>仅在升级失败且已产生新安装时出现。
多 PHP升级日志/root/upgrade_mphp<时间戳>.log按本次时间戳查找。

升级或回滚失败时,先查看对应日志并保留上述目录,确认原实例、失败实例和服务状态后再处理。不要盲目删除或移动备份目录,也不要反复执行完整安装。

仅更新网页、替换 ONMP 脚本、执行 apt upgrade 或调整 PHP 配置,都不等于已经安装修复后的 PHP。