没有不值得去解决的问题,也没有不值得去学习的技术!

分类: 项目构建

  • 在多次 OneinStack 生产环境升级和兼容性处理之后,我将已经实际验证并固化到代码中的修改整理为 oneinstack-custom 定制分支,并正式公开到 GitHub。该分支继续保留 OneinStack 原有目录结构和运维方式,重点补充 PHP 8.5.9 构建兼容、GNU libiconv 冲突处理、Imagick 3.8.1、PHP-FPM 状态验证以及 Nginx/OpenSSL 3.5.7 构建等内容。本文同时梳理 OneinStack 原生能力与定制分支的边界,并说明哪些历史运维实践尚未自动化进入仓库。

  • 本文记录在阿里云 ECS 的 OneinStack 环境中,将源码安装的 Redis 7.0.11 升级到 Redis 8.10.0 的完整过程。内容包括升级前环境审计、vm.overcommit_memory 与 Transparent Huge Pages 优化、手动生成 RDB、双重备份与自动回滚、RedisBloom 等附加模块编译失败分析、Redis 核心二进制单独构建、旧版 RDB 兼容检查、临时端口与 PHP Redis 读写测试,以及生产切换后的 WordPress、W3 Total Cache、内存和缓存状态验证。

  • 本文记录在 Alibaba Cloud Linux 3 与 OneinStack 环境中,将 Nginx 从 1.24.0 升级到 1.30.4,并将其静态编译使用的 OpenSSL 从 1.1.1t 升级到 3.5.7 的完整过程。操作采用旁路编译、生产配置预检、完整备份、短暂停机切换和自动回滚方案,期间解决了 GitHub 下载失败、Perl 模块缺失、Python 3.6 语法不兼容以及旧版 HTTP/2 配置警告等问题。升级后,中文站、英文站、管理子域、WordPress REST API、PHP-FPM 和源站 HTTP/2 均通过验证。

  • 本文记录了一次在 OneinStack 已有 Nginx 虚拟主机中追加 en.shuijingwanwq.com 子域名,并重新签发包含多个域名的 SSL 证书的实操过程。由于主站已经有稳定访问量,且 Nginx 配置中包含多项自定义规则,作者没有采用“删除虚拟主机后重新添加”的方式,而是选择在现有 vhost 中追加 server_name、调整跳转规则、检查 Nginx 配置、添加 DNS 解析,并通过 acme.sh 重新签发和安装证书。文章也说明了这一步是后续将 WordPress 英文站从 /en/ 迁移到 en.shuijingwanwq.com 的服务器与证书准备工作。

  • 本文记录了在 WordPress 网站使用 Polylang 插件批量处理标签时,因 W3 Total Cache 的 Redis 对象缓存引发 OOM 错误的解决过程。通过排查发现 Redis 最大内存限制过小且淘汰策略配置不当,导致写入被拒绝。解决方案是通过修改配置文件将最大内存上限提升至 1GB,并将淘汰策略调整为 allkeys-lru,最终使批量脚本顺利完成,验证了调整内存参数和淘汰策略的有效性。

  • 个人博客出现 504 Gateway Timeout,排查发现服务器因恶意扫描和分布式爬虫导致严重过载。内存被过多的 PHP-FPM 进程耗尽,引发负载飙升。通过降低 PHP-FPM 进程数以适配硬件配置,在 Nginx 层面封禁恶意扫描 IP 及爬虫 IP 段,并重启 ECS 清理积压进程,最终解决了资源耗尽问题,恢复了服务正常响应。

  • 本文针对在 LNMP 2.1 环境中执行 lnmp nginx reload 时出现的 listen … http2 指令已弃用的警告,提供了解决方法。用户需打开报错路径下的 Nginx 配置文件,将原代码 listen 443 ssl http2; 修改为 listen 443 ssl; 并在新行添加 http2 on;。保存更改后再次执行重载命令,经测试不再显示该警告信息,成功完成了配置更新。

  • 在 LNMP 2.1 环境中,为了彻底删除默认的 default 虚拟主机,需要手动处理残留的配置与文件。虽然默认的 Web 目录文件已删除,但 Nginx 主配置文件中仍保留相关 server 段,需编辑 /usr/local/nginx/conf/nginx.conf 移除该配置。同时,由于目录下的 .user.ini 文件被锁定,必须先使用 chattr 命令解除锁定再删除。最后,执行 lnmp nginx reload 重新加载配置,即可完成清理流程。

  • 本文针对 PHP 报错提示 exif_imagetype 函数未定义的问题,记录了在 LNMP 2.1 环境中安装并启用 PHP EXIF 扩展的操作流程。首先通过 phpinfo 确认扩展所在目录,随后进入 LNMP 安装目录运行 addons.sh 脚本安装 exif 扩展,完成安装后重启 PHP-FPM 服务使更改生效,最后通过查看 phpinfo 验证扩展已成功启用。

  • 基于 LNMP 2.1 部署后接口响应 500,查看 Nginx 错误日志发现报错提示 open_basedir 限制生效,目标文件不在允许路径内。检查项目目录下的 .user.ini 文件确认配置问题,执行 chattr 命令解除文件锁定后尝试修改,但问题依旧。最终决定删除 .user.ini 文件,改为直接在 php.ini 中进行相关设置以解决该报错。

👨‍💻 个人品牌

王世强|PHP / Go 技术顾问

15+ 年 Web 后端开发经验,专注于系统维护、架构优化、性能调优及 Linux 运维。

持续运营技术博客 10+ 年,累计发布 1000+ 篇原创技术文章。

为创业团队、中小企业及独立开发者提供长期技术支持与远程合作服务。

👉 关于我 & 合作

.env (14) add (16) AI 翻译 (30) Apache (13) Array (19) A Tour of Go (67) Cache (13) CentOS (23) ChatGPT (20) ChatGPT Plus (15) chrome (19) Cloudflare (33) Codex (22) composer (42) composer.json (22) composer install (13) composer update (14) console (16) Container (25) curl (16) delete (31) Docker (32) Dockerfile (15) EdgeOne (33) environment variable (19) error (24) file (15) filter (20) Git (27) GitHub (23) Gitlab (15) GLM-5.2 (26) Go (61) go-tour-i18n (14) Google AdSense (29) Go 语言 (24) GraphQL (24) GraphQL API (14) Gutenberg (34) http (21) https (22) Interface (19) Jquery (13) json (24) Laravel (37) Laravel 6 (55) Laravel 9 (25) Lighthouse (17) Lighthouse 5 (14) Linux (22) Migrate (13) Module (17) MySQL (78) MySQL 5.7 (22) Nginx (63) normalize.css (28) OKX (15) OneinStack (21) PHP (67) php-fpm (19) php.ini (24) PHP 7.1.12 (22) PHP 7.4 (26) phpmyadmin (15) PhpStorm (24) Polylang (58) postman (18) Query (17) queue (16) Rancher (24) Redis (50) RESTful (27) RESTful API (23) Shopify (19) SlyTranslate (20) SQL (24) String (14) TortoiseGit (14) Twenty Twenty-Five (20) Ubuntu (40) update (20) VPN (17) W3 Total Cache (38) Windows 10 (46) WireGuard (28) WordPress (132) WordPress 多语言 (13) WPCode (23) Wstunnel (15) Yii (40) Yii 2 (70) Yii 2.0 (51) ZgoCloud (13) 多语言网站 (13) 多语言翻译 (35) 技术博客 (15) 故障排查 (15) 数据库迁移 (16) 浏览器 (14) 阿里云 (19)

2026 年 9 月
 123456
78910111213
14151617181920
21222324252627
282930