2025年了,用 Homebrew 搞 Web 开发,还行吗?
Homebrew 可以说是 macOS 和 Linux 上的“装机必备”了,装个命令行小工具特别方便,一句 brew install
就能搞定,确实好用。
但当你想用它来搭建和管理正经的、多个项目共存的 Web 开发环境(比如需要 Nginx、PHP、各种数据库)时,麻烦就开始浮现了。用它干专业活,真有点不太够用。
环境乱成一锅粥,老得看“医生”
谁没跑过 brew doctor
呢?“Your system is ready to brew.” 这话听起来挺美,但也说明 Homebrew 会动你的系统设置。
不管是以前装到 /usr/local
,还是 Apple Silicon 电脑上的 /opt/homebrew
,它都会改你的系统 PATH
。这导致啥呢?你 brew install git
时,很可能会覆盖掉系统自带的 Git。
装个 Python 吧,系统里立马多出好几个版本。这种版本混乱是很多奇怪 Bug 的源头,有时候排查这些问题花的时间,比写代码修 Bug 还长。
服务更新太坑爹,容易出“事故”
brew services
启停服务倒是挺方便,Nginx、MySQL、PHP-FPM 都能管。但它的“贴心”升级就很让人头疼。
比如,你美滋滋地敲了个 brew upgrade
,把所有东西更新了。啪!你的本地项目突然崩了…… 费劲一查,原来是 Python 从 3.7 默默升到了 3.14,某个扩展不兼容了;或者 MySQL 来个不兼容的大版本更新,数据库都起不来了。这种“好心办坏事”的服务中断,Homebrew 可没少干。对正经搞开发的人来说,这种意外停工真的挺烦人。
切版本?只能单线程干活!(这是硬伤)
用 Homebrew 搞 Web 开发,最大痛点就是这个。现实开发怎么可能只搞一个项目?老项目可能死抱着 Python2.x,新项目都用上 Python 3.14 了。客户的服务器跑 MariaDB 10.6,你自己项目又想试试 PostgreSQL 16。
用 Homebrew 咋办?答案是:痛苦地切换。你只能频繁地用 brew switch
或者更底层的 brew link/unlink
来换版本。操作繁琐不说,还容易出错。最关键的是,它没法让不同版本的服务同时运行!你不能一边跑需要 Python2.x 的项目,一边测试用 Python 3.14 的新项目。搞现代开发还只能单开,这真的有点落伍了。
结论: Homebrew 装点**命令行工具**是真方便,但要拿它当专业的 Web 服务管家?真有点力不从心。如果你是macOS 12的用户,那对不起,Homebrew已经把你抛弃了。
那… 还能用啥?
既然 Homebrew 搞专业环境有点掉链子,大家自然会找别的工具。主要分两类:更“极客”的命令行工具,和更“便捷”的打包软件。
命令行党的选择 (MacPorts, Nix)
MacPorts
走的是完全隔离路线,所有东西装自己地盘(/opt/local
),不污染系统,这确实解决了 Homebrew 的“环境乱炖”问题。但是缺点也很明显:安装慢(很多东西要自己编译),软件数量比 Homebrew 少点,占用空间也更大。解决了老问题,代价是新的麻烦。
Nix
想法很牛,讲究“纯函数式”、“可复现”,隔离性和版本管理能力是顶级。理论上是完美的。
但问题在于:学习难度贼高!它的思路和操作跟你熟悉的包管理器差别巨大。想用它,你得花大把时间重新学一套东西,对只想高效搞 Web 开发的我们来说,真心觉得太折腾。
小结: 这些工具很强,但对我们日常搞 Web 开发来说,感觉要么太慢(MacPorts),要么太难学(Nix)。
老式图形化套装 (MAMP, XAMPP)
很多老司机(包括我)入门那会儿,都靠 MAMP 或者 XAMPP。一键安装,Apache/MySQL/PHP 全齐活,新手友好度满分。
不过现在看,它们的问题也挺明显:
版本老旧切换难: 带的软件版本更新不及时,想换个版本?费老劲了,经常得下载个完全不同的安装包。
又大又慢: 为了保证兼容啥环境都往里塞,结果是软件又臃肿,性能也不太理想。
还得配命令行工具: 你最后肯定还得装 Redis、Node.js 之类的东西,这些 MAMP/XAMPP 不管,你还得用回 Homebrew…… 环境就割裂了。
跟真实环境差太远: 尤其是服务器现在普遍用 Nginx + PHP-FPM 这种组合,这些套装里的 Apache 模式配置就差得多了。
小结: 它们确实简单省事,但代价是牺牲了现代开发必需的灵活性和专业性。
更好的工具?试试 ServBay?
难道只能在“复杂的灵活”(命令行工具)和“僵化的简单”(图形套装)之间二选一吗?也不一定。
这里想提一个叫 ServBay 的工具。我深度用了一段时间,感觉它在设计上确实想解决上面这些痛点,挺有意思的。
真·多版本共存 + 一键切换
这是 ServBay 最拿得出手的功能。你可以装多个独立的 Python(从 2.7,3.5 到 3.14)、MariaDB(从 10.4 到 12.0)、PostgreSQL 版本。最厉害的是,这些不同版本的服务可以同时运行!
如果你是全栈开发者,会多种语言,那你更应该装一个 ServBay。
它不仅支持Python,还支持Node.js、Java、Golang,甚至你想在macOS上跑ASP.NET 4.x古董项目,没问题,ServBay 一样支持。它就像溺爱孩子的妈妈一样,包容你的各种想法,默默地给你提供更多的支持。
你可以想一想
项目 A 的 Nginx 用 Python 2.7。
项目 B 的 Nginx 用 Go 1.22 。
项目 C 的 Nginx 用 Python 3.14。
各自在浏览器里输入项目地址,各跑各的,互不影响。
在 ServBay 清爽的管理界面点几下开关,就能控制每个版本服务的启停。这种多版本并行运行的能力,才配叫现代化开发环境。
沙盒隔离,不搞乱系统
ServBay 的所有服务、配置、数据,都老老实实待在自己地盘里(/Applications/ServBay
)。它绝对不碰 /usr/local
或 /opt/homebrew
,不改系统 PATH,运行服务也不需要 sudo 权限。
效果就是:
你的系统干干净净。
ServBay 和 你的其他程序和平共处,用 ServBay 管 Web 服务(Nginx,PHP/Node.js/Python/Go,DB),一点不冲突。
速度不错 (对比 MAMP 和 MacPorts)
不像 MAMP 那么臃肿,也不像 MacPorts 编译到天荒地老,ServBay 提供的是针对 Apple Silicon (M1/M2/M3) 和 Intel 芯片优化好的预编译包。安装飞快,启动速度和运行性能都挺好,不比你自己手调出来的环境差。
GUI + CLI 双管齐下 (结合两边优点)
ServBay 带一个设计得不错的 macOS 原生界面,管理服务、切版本、看日志、改配置都挺直观。
但它也知道开发者爱用命令行,所以也提供了强大的 servbay-cli
工具。像 .servbay.config
命令来实现项目级的 版本控制。算是兼顾了图形化的易用性和命令行的灵活高效。
开发顺手的额外功能
ServBay 不只是 Web 服务器三件套,它更像一个本地开发工作站,还打包了:
DNS 服务: 支持真实/虚拟域名无缝切换,自动签发SSL证书,大大降低开发成本,并有效避免域名暴露带来的安全风险。
数据库:支持多个数据库实例,满足不同的开发需求。
自动 HTTPS 证书: 一键给本地站点开 HTTPS,方便测试。
邮件服务器: 支持 SMTP 和 POP3 协议,STARTTLS 和 SSL/TLS 加密可立即启用,保障邮件安全
Redis & Memcached: 同样支持同步运行,一键开关。
这些功能都是解决开发中的小痛点,挺实用的。
所以,2025年怎么选?
总结一下我们的探索:
Homebrew:工具神器,服务苦手。装小工具首选,管专业 Web 服务易冲突。
纯命令行方案 (MacPorts/Nix):牛是牛,就是累。隔离性虽好,但要么慢要么难学,不够大众化。
图形化套装 (MAMP/XAMPP):简单是简单,就是笨。快装省心,但版本旧、配置虚、不灵活。
ServBay 的出现,似乎是想找到一个中间点,在易用性、隔离性、性能和多版本支持之间取了个平衡。
我的看法:
如果你是 DevOps 大佬,追求绝对的可复现和控制力,Nix 依然值得你研究。
如果你是专搞 Python/R 的数据科学/ML 同学,Conda/Miniconda 可能更对路。
对于大多数在 macOS 上做 Web 开发的前端、后端、全栈工程师来说, 如果你厌倦了 Homebrew 的版本冲突和“单开”限制,也不满足于 MAMP/XAMPP 的老旧和脱节,那 ServBay 提供的这套开箱即用、多版本共存、不污染系统的方案,算是当前市面上对“本地开发体验”的一个不错的解法。它能省下不少在环境配置上折腾的时间。
有兴趣不妨试试:www.servbay.com
用了 ServBay 之后,最爽的就是能同时跑不同语言版本的项目,跟 brew doctor
彻底说拜拜。感觉 macOS 上的本地开发环境,总算能舒坦一点了。我接单的速度都比别人快了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
个人觉得laradock最灵活好用 :smile:
ServBay 没有windows版本。等出windows版本后,我准备把小皮换ServBay了