3.2 安装侵入性:谁把系统弄得更“脏”
一句话判断:1Panel 像“精装修”——东西都摆在规定房间(/opt 与 Docker 容器)里;宝塔像“现场和面烙饼”——LNMP 直接揉进系统里,香是真的香,走的时候清理也要费更多功夫。
什么是“侵入性”,为什么该在意
“侵入性”听起来像技术术语,翻译成人话就是:装完这个面板,你的系统里多了多少“属于它、而不属于你”的东西?
为什么这事重要?想象两个租客:
- 租客 A 住进来,自带一个集装箱(Docker),他的锅碗瓢盆全在集装箱里。退租时,集装箱吊走,房间原样。
- 租客 B 住进来,直接在你家厨房砌了一个灶台、改了烟道、通了自来水(LNMP 编译安装)。退租时,灶台可以砸,但烟道的洞、水管的接口,多半要留几个印子。
服务器也一样。侵入性低的好处有三:一,出问题时排障范围小;二,和系统里其他软件冲突的概率低;三,哪天不想要了,能删干净。这一节我们就按这三个尺度,看两家面板各是什么做派。
先看“东西放在哪”:两份安装地图
1Panel 的安装地图(来源:官方安装文档与快照功能说明):
| 位置 | 放了什么 |
|---|---|
/opt/1panel(默认,安装时可改) |
面板主目录、网站目录(V2 迁移后网站配置存于 {安装目录}/www)、本地备份、应用数据 |
/usr/local/bin/1panel、/usr/local/bin/1pctl |
面板二进制与命令行工具 |
/etc/systemd/system/1panel.service |
systemd 服务单元 |
/etc/docker/daemon.json |
Docker 配置(安装脚本可选是否改写) |
| Docker 引擎与应用容器 | 应用商店所有应用(OpenResty、MySQL、PHP……)都以容器形式运行 |
宝塔的安装地图(来源:官方新手文档与 FAQ 排障文档):
| 位置 | 放了什么 |
|---|---|
/www |
面板与全部软件的统一根目录(安装确认语即 “Do you want to install Bt-Panel to the /www directory now?”) |
/www/server/panel |
面板程序本体;data/db 下有 site.db、database.db 两个 SQLite,存网站与数据库列表 |
/www/server/ 下各子目录 |
软件商店安装的 Nginx、MySQL、PHP 等运行环境 |
/www/backup/panel |
面板自动备份压缩包 |
| 系统服务与计划任务 | 面板服务、LNMP 各组件系统服务、cron 计划任务 |
看出差别了吗?
- 1Panel 的“领土”集中在
/opt和 Docker 两个地方。应用是容器,彼此隔离,删一个应用就是删一个容器,系统层面的射程很短。 - 宝塔的领土也是集中的——集中在
/www。这值得为宝塔说句公道话:它并非满地乱扔,统一目录也方便整体备份和迁移(整机迁移功能就建立在“把/www搬走”的思路上)。真正的差别不在“乱不乱”,而在运行环境与系统耦合的深浅。
真正的分歧:LNMP 是“装进系统”还是“装进容器”
宝塔的运行环境是“原住民”式的。看看官方新手文档的原话:安装 Nginx 有极速安装(预编译包)和编译安装两种方式,编译安装“性能和稳定性最好”,适合正式生产环境。编译安装意味着什么?源码在你机器上现场编译成二进制,生成系统服务(systemctl/init.d 管理),写环境变量、注册开机启动、和系统目录产生千丝万缕的联系。好处是与内核贴得近、性能损耗小、老运维闭着眼都能调;代价是这套环境本质上成为了系统的一部分。
1Panel 的运行环境是“集装箱”式的。应用商店里的应用全部容器化:OpenResty 是容器、MySQL 是容器、PHP 运行环境也是容器。面板通过 Docker 管理它们。官方 FAQ 的原话可以做个佐证:“1Panel 基于 Docker 来部署管理其他应用,对系统的侵入影响非常小。”
| 对比维度 | 宝塔(原生 LNMP) | 1Panel(全容器化) |
|---|---|---|
| 应用与系统关系 | 直接装进系统,注册服务、共用系统库 | 跑在 Docker 容器内,与系统隔离 |
| 典型安装方式 | 极速安装(预编译)/ 编译安装(现场编译) | 拉镜像、起容器 |
| 资源损耗 | 原生进程,无虚拟化开销 | 容器化很轻,但 Docker 本身有常驻开销 |
| 多版本共存 | PHP 多版本可共存,软件商店切换 | 每个应用独立容器,版本天然隔离 |
| 依赖故障影响 | 某服务挂了需逐个排查系统服务 | Docker 挂了 = 所有应用一起挂(容器派的软肋) |
一句公允的话:容器化不是“先进”,原生也不是“落后”,它们是两种不同的运维哲学。原生 LNMP 的优势是直接、高效、没有中间层——这也是为什么大量传统运维对宝塔模式熟到手生不了锈;容器化的优势是隔离、标准化、好挪——这也是为什么 DevOps 团队见到 1Panel 会心一笑。对你的机器来说,哪种“脏”都不是问题,问题是你习惯哪种清洁方式。
卸载这件事:官方工具 vs 社区经验
侵入性最见真章的时刻,是你说“我不要你了”的那一刻。
1Panel:官方提供卸载命令。 命令行工具 1pctl 的命令清单里直接列着:
1pctl uninstall # 卸载 1Panel 服务
配合容器化的设计,应用层面的清理性较好:删掉容器、删掉 /opt/1panel、停掉 systemd 服务,主要痕迹就没了。官方快照功能的备份清单(包括 /usr/local/bin/1panel、/usr/local/bin/1pctl、/etc/systemd/system/1panel.service、/etc/docker/daemon.json)反过来正好给了你一张“该清哪些文件”的核对单——官方明确知道自己在系统里放了什么,才列得出这张单子。
宝塔:官方有卸载入口,社区长期讨论残留。 宝塔官方新手文档在解释“面板是管理工具不是虚拟主机”时写道:“你随时可以把它卸掉,参考官方'安全卸载'文档,服务器该怎么用还怎么用。”——官方卸载入口是存在的。但需要如实记录社区共识:“卸载残留”是宝塔多年来的经典老话题,社区里常见的残留点位包括 /www 残留目录、系统服务残留、防火墙规则残留等。这里必须把话说周全:残留与否、残留多少,与版本、安装方式、是否用过卸载脚本强相关,属于“以实际卸载结果为准”的范畴——我们只描述这个话题在社区里长期存在,不替任何一方下“干净 / 脏”的定论。
一个可操作的对照表:
| 卸载相关 | 1Panel | 宝塔 |
|---|---|---|
| 官方卸载途径 | 1pctl uninstall(命令行工具内置) |
官方“安全卸载”文档(新手文档中有指引) |
| 应用层痕迹 | 删容器即清,应用数据在 /opt/1panel 下 |
LNMP 各软件为系统级安装,需按软件卸载 |
| 社区印象 | 官方自述“侵入很小”,社区反馈少有残留纠纷 | “卸载残留”是长期社区话题(社区共识,非官方结论) |
| 回滚手段 | 快照备份恢复(官方功能,见 03-4 节) | 面板自动备份(/www/backup/panel,bt 18 可管理) |
类比收束:精装修 vs 板房
最后用本章导语的比喻收个口:
| 1Panel | 宝塔 | |
|---|---|---|
| 像什么 | 精装修公寓:家电都在固定位置,也都好拆;退租时把家电一搬,房间恢复毛坯 | 自己砌的板房:灶台是砌的、管子是通的,用起来最趁手,拆的时候也最费 bricks |
| 代价 | 万一“集装箱”(Docker)本身出问题,整个应用栈一起停摆 | 环境 = 系统的一部分,排障要从系统层面查,搬走要整机迁移 |
本节要点
- 侵入性的本质是“环境与系统的耦合深度”:1Panel 全容器化、领土集中于
/opt,官方提供1pctl uninstall;宝塔 LNMP 原生安装于/www,与系统服务深度耦合。 - 宝塔的侵入不是“乱”(它的目录管理集中而清晰),而是“深”——这是传统运维模式的必然代价,换来的是无虚拟化层的直接与高效。
- 卸载残留是宝塔的长期社区话题(社区共识),官方确有卸载文档;1Panel 的快照清单反证其“知道自己装了什么”。谁更“脏”取决于你如何定义干净。
延伸阅读: 1Panel 的安装与 1pctl uninstall 卸载命令,原文见 《1Panel 官方文档:产品介绍与安装部署》;宝塔的卸载流程与善后处理,可对照本站 《宝塔面板运维与安全实战》。
下一步: 在测试机上把两款面板各装一遍,卸载后用 find / -name "*1panel*" -o -name "bt" 之类的命令自己看一遍残留(危险命令请加目录限定,别全盘扫)。亲手看过一次,比读懂十篇对比都管用。看完残留,下一节我们聊一个更现实的问题:装完之后,它们各自吃掉你多少内存(03-3 节)。
