Mac Dev Staging

Polar Sponsor
爱发电 赞助
.NET 9.0

将 macOS 机器变为本地 PHP/MariaDB 暂存服务器,使用 macOS 自带 Apache、Homebrew PHP 8.5、MariaDB、内置 SFTP、npm 工具链以及本地开发环境。

Mac Dev Staging 10

功能概述

Mac Dev Staging 10是一项面向实际任务的技能,主要用于当您想要让 Mac 行为像可重复本地开发或中继服务器时, 请使用此技能;此技能是围绕您在现代 Apple Silic 上实际拥有的堆栈构建的。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Mac 开发环境预发布(Staging)配置

当你希望一台 Mac 表现为可重复构建的本地开发或预发布服务器时,请使用本技能。

该技能围绕现代 Apple Silicon Mac 实际具备的软件栈构建:

  • 系统自带的 macOS Apache(/usr/sbin/httpd)
  • 通过 Homebrew 安装的 PHP 8.5
  • 通过 Homebrew 安装的 MariaDB
  • macOS 内置的 SSH/SFTP
  • 由 npm 管理的 JavaScript 工具链,用于本地构建/测试工作流
  • 一个与主 OpenClaw 网关共存的、仅限开发使用的网关接入面(gateway surface)
  • 可选的 Homebrew nginx

它不假设采用 Linux 风格的包布局,也不假装 Mac 应当完全模拟你的 Ubuntu 网关行为。

适用场景

  • 在 Mac 上进行本地 PHP 预发布环境搭建
  • Joomla、WordPress、CodeIgniter、Laravel 等 PHP 应用
  • 在系统默认的 macOS Apache 中启用 PHP 8.5
  • 添加 MariaDB 并建立可预测的本地数据库环境
  • 自动生成虚拟主机(vhost)配置文件和 Apache 片段,避免凭记忆手动编辑
  • 通过 SFTP 暴露项目,用于部署、编辑及预发布环境同步
  • 以可复现的方式安装 browser-sync 等 JS 工具链
  • 在不干扰主网关的前提下,测试轻量级 Mac 本地网关/控制器
  • 可选的 nginx 前端代理或旁路(sidecar)本地测试

不适用场景

  • 面向公网的生产环境托管
  • 替代你的主 Linux 网关
  • 明确倾向容器化方案时(如 Docker 优先的本地开发栈)
  • 误以为本技能可绕过 sudo 权限直接修改 /etc/apache2 目录下的配置

现实考量

在 macOS 上,难点不在于安装 PHP 或 MariaDB,而在于使 Apache 配置具备可复现性,且不破坏系统稳定性。

因此,本技能遵循分阶段执行模式:

  1. 检测当前系统状态
  2. 安装或验证 Homebrew 托管的服务
  3. 生成安全的 Apache 配置片段
  4. 明确告知操作者哪些步骤需使用 sudo
  5. 变更后验证整套技术栈运行状态
  6. 若文件部署是工作流的一部分,则验证 SFTP 可用性
  7. 保留操作凭证(receipts)与日志,便于自动化与预发布流程审计

工作流

1. 检测当前技术栈

运行:

scripts/detect-stack.sh
scripts/detect-ports.sh

检查内容包括:

  • 系统自带 Apache 的版本
  • 是否已启用虚拟主机(vhosts)
  • 是否通过 Homebrew 安装了 PHP
  • 是否已安装 MariaDB
  • 是否已安装 nginx
  • 当前 brew services 状态
  • 是否存在与主网关或本地 JS 工具链的端口冲突

2. 安装核心软件包

运行:

scripts/bootstrap-brew.sh
scripts/bootstrap-npm-tooling.sh

安装以下组件:

  • php
  • mariadb
  • nginx
  • 本地 npm 工具链(例如 browser-sync)

该步骤不会静默修改 /etc/apache2 下的任何文件。

3. 渲染 Apache + PHP 配置

生成推荐的 Apache PHP 启用配置片段:

scripts/render-apache-php-snippet.sh

生成本地虚拟主机配置:

scripts/render-vhost.sh 
  --server-name mysite.test 
  --docroot /Users/you/Sites/mysite/public

这些脚本会输出应写入以下路径的配置内容:

  • /etc/apache2/httpd.conf
  • /etc/apache2/extra/httpd-vhosts.conf

将配置实际写入上述路径仍需使用 sudo 权限。

4. 启用服务

对于 Homebrew 托管的服务:

brew services start php
brew services start mariadb
brew services start nginx

对于系统自带的 Apache:

sudo apachectl restart

若需部署一个与主 Ryzen 网关共存的 Mac 本地开发网关,请先渲染推荐的环境配置:

scripts/render-local-gateway-env.sh

默认规则如下:

  • 主 Ryzen 网关保持绑定于 192.168.88.11:18789
  • Mac 本地开发网关仅绑定回环地址(loopback)
  • Mac 本地开发网关使用非冲突的测试端口(如 28789)

5. 验证技术栈

运行:

scripts/verify-stack.sh

验证内容包括:

  • Apache 是否响应请求
  • PHP CLI 是否可用
  • PHP 模块路径是否正确加载
  • MariaDB 的 Unix socket 或 TCP 端口是否就绪
  • 如预期启用,nginx 是否正在运行
  • 预期的本地端口是否空闲或已被有意占用
  • 本地开发网关测试端口是否与生产网关端口发生冲突

6. 启用并验证 SFTP

对预发布环境而言,SFTP 通常是部署最简路径。

检查当前状态:

scripts/detect-sftp.sh

若“远程登录”(Remote Login)未启用,可通过 macOS 系统设置或以下命令开启:

sudo systemsetup -setremotelogin on

推荐实践:

  • 创建或选用专用的预发布用户
  • 将项目文件置于该用户的家目录下,或置于明确归属的共享路径中
  • 当 SFTP 文件同步已满足需求时,避免授予广泛的 shell 访问权限

在将该 Mac 暴露给局域网内其他设备前,请先阅读 references/sftp-on-macos.md。

7. 凭证记录与控制器操作

本技能假定所有预发布操作均应留痕。

当你需要一个稳定入口点统一管理本地服务控制、构建步骤、验证、端口检查或网关连通性测试时,可使用轻量级控制器:

scripts/controller.sh status
scripts/controller.sh verify
scripts/controller.sh build /Users/you/Sites/mysite build
scripts/controller.sh gateway-ping http://127.0.0.1:28789/

记录操作凭证:

scripts/write-receipt.sh --action "bootstrap-brew" --status ok --detail "Installed php mariadb nginx"
scripts/write-receipt.sh --action "verify-stack" --status ok --detail "Apache php mariadb verified"

凭证记录用途包括:

  • Markdown 格式查看器展示
  • CRM 或内部仪表盘集成
  • 故障回滚与排查

请参阅 references/controller-surface.md 了解该轻量级 Mac 控制平面的设计意图。

默认架构

推荐的本地预发布环境布局:

  • 应用服务使用 Apache,监听 :80
  • Apache 内嵌加载 PHP 8.5,或通过 PHP-FPM 运行
  • MariaDB 仅绑定 localhost
  • SFTP 用于部署/同步,监听 :22
  • 可选:nginx 监听 :8080,用于替代反向代理方案测试
  • npm 托管的测试服务使用显式端口(如 3000 或 5173)
  • 可选:Mac 本地开发网关监听 127.0.0.1:28789

优先保持简洁;仅在确有需要时再引入 Proxy Manager。

本地网关兼容性

目标并非替代主 Ryzen 网关,而是让 Mac 能够运行一个轻量级本地开发控制面,同时不干扰生产级编排系统。

推荐规则:

  • 主 OpenClaw 网关仍是唯一面向局域网的共享网关
  • Mac 本地开发网关仅绑定 127.0.0.1
  • Mac 本地开发网关使用非默认测试端口(如 28789)
  • 测试控制器应连接本地 Mac 网关或控制器,而非直连生产网关——除非工作流明确要求
  • 即使本地网关/控制器宕机,Mac 仍应作为普通节点及本地预发布环境正常运行

运行以下命令生成一份可复现的纯本地网关环境契约:

scripts/render-local-gateway-env.sh

可选的 nginx / NPM

nginx 可通过 Homebrew 直接便捷安装。

Nginx Proxy Manager 为可选组件,应视为独立层级,通常以容器方式部署。本技能不自动安装 NPM,因其引入的复杂度远超大多数 Mac 本地预发布环境所需。

在添加该层级前,请先阅读 references/nginx-and-npm.md。

安全规范

  • 除非明确需要远程访问,否则始终将 MariaDB 绑定至 localhost
  • 将 Mac 视为预发布环境,而非公开服务器
  • 本地虚拟主机应使用明确的域名(如 mysite.test)
  • 切勿将密钥(secrets)硬编码进生成的 Apache 配置中
  • 推荐为 SFTP 创建专用预发布用户,而非广泛共享主登录账户
  • 若 SFTP 已满足工作流需求,则不应额外授予 shell 访问权限
  • 切勿将 Mac 的预发布技术栈直接暴露于公网互联网
  • Mac 本地开发网关默认仅绑定回环地址(loopback)
  • 为初始化(bootstrap)、服务变更及测试控制器操作保留完整凭证记录
  • 在启动 BrowserSync、Vite、nginx 或本地网关前,优先执行显式端口检查
  • 若控制器或本地网关失效,Apache/MariaDB 预发布栈仍应维持本地正常运行

相关文件

  • scripts/detect-stack.sh:检查当前 Mac 技术栈状态
  • scripts/bootstrap-brew.sh:安装核心 Homebrew 软件包
  • scripts/bootstrap-npm-tooling.sh:安装本地预发布工作流所需的基线 npm 工具链
  • scripts/controller.sh:轻量级 Mac 侧控制器,支持服务管理/构建/验证等操作
  • scripts/detect-ports.sh:检查 Apache、nginx、JS 工具链及本地网关之间的端口冲突
  • scripts/render-apache-php-snippet.sh:输出 Apache 启用 PHP 8.5 的配置片段
  • scripts/render-local-gateway-env.sh:输出安全的纯本地网关环境契约
  • scripts/render-vhost.sh:输出安全的虚拟主机(vhost)配置块
  • scripts/verify-stack.sh:验证最终技术栈完整性
  • scripts/detect-sftp.sh:检查 macOS 内置 SSH/SFTP 当前状态
  • scripts/write-receipt.sh:为预发布/控制器操作追加可审计的操作凭证
  • references/apache-layout.md:关于系统自带 macOS Apache 的说明
  • references/sftp-on-macos.md:面向预发布场景的安全 SFTP 配置指南
  • references/nginx-and-npm.md:判断何时值得引入 nginx 或 NPM
  • references/controller-surface.md:轻量级 Mac 控制器设计模式
  • references/gateway-coexistence.md:如何隔离本地网关测试与生产网关

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习