ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

WHM与cPanel权威指南:服务器管理员的高效运维实战

WHM与cPanel权威指南:服务器管理员的高效运维实战 1. WHM 的本质服务器房东的总管理台1.1 先搞懂 WHM 和 cPanel 到底是啥关系很多人第一次接触 WHM是在买虚拟主机或者 VPS 之后看到服务商发来的邮件里写了两个地址一个类似https://你的IP:2083另一个类似https://你的IP:2087。2083 是 cPanel 的登录口2087 就是 WHM 的登录口。我见过不少新手把这两个东西搞混以为 WHM 只是 cPanel 的“加强版”这理解其实不对。WHM 的全称是 WebHost Manager它和 cPanel 是同一家公司出的两个产品但定位完全不同。cPanel 是给“租户”用的也就是普通网站站长你在里面管自己的网站文件、数据库、邮箱、域名解析这些WHM 是给“房东”用的也就是服务器管理员你在里面管这台服务器上的所有租户、所有资源、所有系统级配置。一句话总结cPanel 管一台网站的吃喝拉撒WHM 管一台服务器上所有网站的生杀大权。从产品架构上看WHM 和 cPanel 不是两个独立的软件它们共享同一套底层环境。你在 WHM 里创建一个账户就等于在服务器上挖出了一块独立的“隔间”这个隔间对应一套完整的 cPanel 环境独立的网站根目录、独立的数据库账号、独立的邮箱域名、独立的 FTP 账号甚至独立的 PHP 版本和资源限制。也就是说WHM 是“母面板”cPanel 是“子面板”两者是包含关系而不是并列关系。我经常给朋友打一个比方把一台服务器想象成一栋写字楼。WHM 是物业总部的管理系统负责整栋楼的租户签约、水电独立计费、公共区域维护、安保权限分配cPanel 则是每个租户自己办公室的门禁卡你只能打开自己那间房的门想去隔壁串门对不起没权限。这个类比基本能把两者的关系说通透。1.2 WHM 的权限边界到底能管什么搞清楚权限边界是上手 WHM 前最重要的一课。WHM 默认有一个 root 级别的管理员账号这个账号的权限几乎是无限的所以登录 WHM 之后你其实站在服务器权限金字塔的塔尖。它能做的事我粗略列一下你就明白了账户管理创建、挂起、终止任何 cPanel 账户分配 IP、分配资源配额。系统配置修改 DNS 配置比如配置 NS1/NS2、调整邮件投递规则、设置 FTP 服务、管理 SSL 证书。安全策略配置防火墙CSF 集成、封禁 IP、设置密码强度策略、强制两因素认证。资源监控查看每个账户的 CPU、内存、IO、入口进程、数据库负载甚至能看到每个进程的执行命令。软件管理升级 Apache/Nginx、切换 PHP 版本、安装 Perl 模块、管理 MySQL/MariaDB 服务。备份恢复配置整机自动备份也可以手动备份单个账户。这些操作对普通 cPanel 用户来说完全是不可见的。换句话说如果你只有 cPanel 登录权限你永远不会知道服务器上有多少个别的网站、别人占了多少资源、系统的 PHP 是什么版本——因为你没资格看到这些信息。这里我要特别提醒一件事WHM 的管理员账号不要和 cPanel 的账号混用。WHM 登录进去看到的是系统级菜单而 cPanel 登录进去看到的是网站级菜单两者界面几乎完全不一样。很多人第一次从 cPanel 跳转到 WHM会发现自己找不到“文件管理器”在哪因为 WHM 根本没有文件管理器这种功能它不需要替租户管理文件那是 cPanel 该干的事。理解这个边界你后面就不会迷失在菜单里。2. 一台空服务器到正式上线WHM 在完整流程里的位置2.1 安装阶段别指望 WHM 帮你解决所有安装问题WHM 不是一个裸机操作系统它需要跑在 Linux 上而且对发行版有明确支持列表主要是 CentOS、AlmaLinux、CloudLinux 这几个。你在一台刚开好的 VPS 上装 WHM实际上要做的事是先装一个纯净的 Linux 系统然后通过官方安装脚本把 cPanel 全家桶装上去。官方推荐的最小资源配置是 2GB 内存、20GB 硬盘但以我玩了几年 WHM 的经验看2GB 内存跑起来非常勉强至少 4GB 起步才舒服尤其是要开 MySQL 和邮件服务的情况下。安装的时间会非常久官方脚本要下载几百个 rpm 包、编译各种扩展一台 4 核 8GB 的机器大概需要 30-50 分钟配置差点的机器装一两个小时也不奇怪。第一次装的人很容易以为安装卡死了其实没有它在后台默默干活。这里建议你通过 SSH 登录服务器用官方脚本安装而不是直接访问还没配好的 Web 界面因为安装过程中的日志全部输出在终端里你能实时看到进展。2.2 初始化配置域名、IP、DNS 的前置准备安装完成后第一次登录 WHM 会进入一个初始化向导它会逼着你完成几个关键配置包括确认主机名hostname、配置主 IP 和 NS 记录。很多新手在这里会卡住因为向导要求填的东西有点晕。我建议你按照这个顺序准备先买好域名把 DNS 服务器的 NS 记录指向你要用的两个主机名比如 ns1.example.com 和 ns2.example.com。在 WHM 初始化界面里设置主机名为server.example.com这种格式注意主机名不能和任何网站域名相同要单独弄一个子域。配置 nameserver 时填 ns1.example.com 和 ns2.example.com然后在域名注册商那边把 NS 指向这两个地址。这个步骤的逻辑不是给站点用的而是给 WHM 这台服务器本身用的。服务器需要一个域名来标识自己你后面创建 cPanel 账户时系统会自动帮你生成对应的 DNS 区域只要 NS 解析关系对了新站的解析就能自动生效。2.3 首次创建账户一个网站是怎么从无到有的在 WHM 后台创建新账户路径是“创建新账户”。你需要填的基本信息包括域名、用户名、密码、邮箱、包Package决定这个账户的资源上限、IP 地址。填完点创建WHM 会在十几秒内自动完成一系列操作创建 Linux 系统用户、建立网站根目录、生成 Apache/Nginx 虚拟主机配置、创建 MySQL 数据库和用户、创建邮件域名、创建 DNS zone、设置 FTP 账号。这整套流程如果手动在 Linux 命令行里做没一个小时搞不定而且狂容易出错WHM 把它压缩成了点一次按钮。这也是 WHM 托管行业这么多年仍然被大量使用的核心原因——它把服务器运维中最繁琐、最重复的那部分工作全部自动化了。创建完账户之后你会拿到一个 cPanel 的登录链接格式通常是https://服务器IP:2083用户名密码就是刚才创建账户时设的。接下来用户就可以进 cPanel 上传 WordPress、创建数据库、配域名了。而你在 WHM 这边能实时看到这个账户的各项资源使用情况比如磁盘占用、带宽流量、进程数量等。3. 管理员每天在 WHM 里做的最多的事五个高频操作场景3.1 管理账户状态挂起、终止、转移的前因后果我见过很多做代维的朋友管理了一堆服务器天天除了修故障就是处理账户。WHM 里账户管理这块有几种常见状态正常、挂起Suspend、终止Terminate、转移Migrate。挂起不等于删除。当你发现某个账户跑恶意脚本、发垃圾邮件、占资源异常时最快的止损方式就是挂起它。挂起之后该账户的所有网站会变成“暂时无法访问”的状态系统用户的 shell 会被改成 nologin网站的请求会被拦截。但这个账户的数据全部还在你随时可以取消挂起恢复服务。我处理境外客户退款纠纷时如果客户不配合我一般会先挂起账户等沟通结果而不是直接删除——删了数据就真没了到时候打官司都没证据。终止则是物理删除账户里面的网站文件、数据库、邮件、配置全部移除。WHM 在执行终止操作时默认会要求你勾选是否删除邮箱账户、是否删除 DNS 记录勾选之前一定要确认你已经做过备份。这里有个很多人不知道的小坑WHM 的终止操作默认不会自动删除备份文件备份路径下的老备份不会被清理所以服务器硬盘空间不会因为删账户而立刻变空时间久了容易积累出一堆僵尸文件占满磁盘。3.2 包Package/Plan机制用配额限制一个账户的疯狂WHM 不需要你手动限制每个账户的资源而是通过“包”这种机制来批量管理。你可以创建几个不同的套餐包比如“基础版”限制 2GB 磁盘、5 个数据库、10 个邮箱账户“进阶版”限制 10GB 磁盘、50 个数据库、不限邮箱。创建账户时选择对应的包这个账户就自动套上了所有限制。包的配置项非常细除了磁盘和数据库数量还能限制每月带宽上限、FTP 账户数量、子域名数量、CPU 使用时间、内存上限、IO 优先级、Entry Process同时运行的进程数等。这些参数对虚拟主机服务商特别重要因为大家合租一台服务器如果某个客户跑了个失控的 WordPress 插件把 CPU 吃满其他人的网站都会遭殃。包的限制就是给这种“租户风险”上的一道保险。我给生产服务器做包配置时一般会在磁盘配额上额外留 20% 余量比如客户买的是 10GB 套餐我实际在包里配 12GB防止客户因为日志文件、临时文件把磁盘塞满导致数据库写入失败。磁盘满是一个很隐蔽的故障网站表现不一定是打不开而可能是后台能登录、数据库写入报错、邮件发不出去这些症状。3.3 安全策略配置WHM 里值得优先处理的几件事WHM 的安全配置菜单数量多得吓人什么 CPanel Ports、Shell Access、Password Strength 等等。我的建议是不用全部配完但有几个必须优先处理修改 WHM/cPanel 默认端口默认端口是 2087/2083大量扫描器每天都在扫这些端口。虽然改端口不能绝对防住扫描但能把绝大多数自动化攻击挡在门外。改完记得把新端口加入防火墙白名单。开启两因素认证2FAWHM 支持强制所有管理员开启两因素认证这个东西真的救了我好几次。有一次我的服务器密码因为某个管理面板的后门泄露了攻击者拿到了 root 密码但登录 WHM 时卡在 TOTP 验证码那一步最后只删掉了一个不重要的文件就被我发现了。配置 CSFConfigServer Security FirewallCSF 是最常用的 WHM 防火墙插件安装后需要手动开启。它的核心功能是检测暴力破解攻击比如登录失败 5 次就自动封禁 IP还能基于端口连接数做限流。没装 CSF 的 WHM 服务器用不了半天就会被扫描器扫出 cPanel 的登录口然后开始一轮又一轮的撞库。禁用 root 直接登录 WHMWHM 支持创建除 root 外的管理员账户给管理员分配子权限。生产环境里我几乎不用 root 登录 WHM而是创建一个名字不带 root 的管理员账号日常工作用这个低权限账号。即使这个账号泄露攻击者也没法直接动系统级配置我又多了层防护。3.4 备份的正确的打开方式一个让你晚上睡得着觉的步骤WHM 的备份配置在“备份”菜单里支持两种方式配置式备份Configure Backup和手动备份Backup Now。配置式备份适合启用完整的自动备份计划你可以选择备份全部账户、部分账户或系统文件备份目标可以是本地磁盘、FTP、SFTP 服务器甚至 Amazon S3 等远程存储。我强烈建议把备份传到远程不要只存在本机。原因很简单如果服务器本身被入侵挖矿攻击者通常会顺手删掉本地备份让服务器管理员找不回数据。我修复过一个客户的裸金属服务器勒索病毒把网站文件全部加密了本地备份全被删光最后只能从远程备份恢复损失降到了最低。备份频率方面个人站长可以每周一次商业虚拟主机服务商建议至少每天一次增量备份。WHM 的备份是“先压缩打包、再传输”如果网站文件特别大比如超过 20GB建议把网站拆分成多个账户或者用 cPanel 里的“备份向导”配合外部定时脚本做更细粒度的备份否则默认配置容易把磁盘 IO 完全占满导致线上网站访问变慢。3.5 资源监视要看的四个指标WHM 首页左下角有一个“服务器信息”板块里面是内存、CPU、磁盘、负载的数据。但这只是宏观指标真正常被忽视的在这几个地方CPU 限制和 MySQL 负载在 WHM 首页的服务状态里能看到 MySQL 的实时负载。如果 MySQL CPU 占用长期超过 50%大概率有慢查询或缓存没配好。磁盘 I/O 等待硬盘 IO 高并不一定是流量大很可能是某个账户在跑大量小文件操作。你可以在 WHM 的“服务器状态”里看到目前哪个账户占用 IO 最多。邮件队列WHM 的“邮件投递报告”和邮件队列管理是排查垃圾邮件问题的重要入口。如果某个账户发信量异常邮件队列里会积累大量未投递的信件这时你应该去检查是不是有账户被黑后成了垃圾邮件发送器。登录日志WHM 记录所有管理员和用户的登录尝试包括失败和成功的记录。如果你发现某个 IP 频繁尝试登录 cPanel 或 WHM哪怕没成功也建议先封掉这个 IP因为这说明它正在对你做定向攻击。4. 那些容易被忽略但能决定成败的“冷门”设置4.1 PHP 版本选择与 MultiPHP ManagerWHM 内置了“MultiPHP Manager”可以在系统层面统一配置服务器的默认 PHP 版本。很多人不知道它的重要性以为装好 WHM 默认的 PHP 就不用管了。但默认 PHP 版本往往不是最新的而且你可能需要为不同账户指定不同的 PHP 版本。MultiPHP 的逻辑是这样的它通过 PHP-FPM 的方式为不同虚拟主机加载不同的 PHP 二进制文件。你可以在 WHM 里为每个账户分别设置 PHP 版本比如一个跑老旧程序的账户用 PHP 7.4一个跑 WordPress 新站的账户用 PHP 8.2。这个功能在虚拟主机服务行业特别常用因为客户手里的老程序不一定兼容新 PHP你不可能逼所有客户升级代码但你又不能因为一个老程序拉低了整台服务器的 PHP 版本——MultiPHP 让两者共存。这里有个性能相关的经验PHP-FPM 模式下每个账户的 PHP 进程默认会独立运行内存占用会稍微高一些但在隔离性和稳定性上远胜旧的 mod_php 方式。如果服务器内存只有 4GB建议先把 PHP-FPM 的进程数上限调低防止某个流量大的站点把所有进程都占满。4.2 邮件服务的正确配置MX 记录与反向 DNSWHM 自带 Exim 邮件服务但也带来一个特别常见的坑发往 Gmail、Outlook 等大厂的邮件被扔进垃圾箱甚至直接被退信。原因几乎总是同一个服务器的反向 DNSPTR 记录没有配置好。反向 DNS 是什么简单说正常的邮件服务器之间是相互验证的。Gmail 收到你的邮件时会查看发件服务器 IP 的反向解析结果看看是否与发件服务器的域名一致。如果 PTR 记录缺失Gmail 很大概率会把邮件判定为垃圾邮件。这个配置的坑爹之处在于它不在 WHM 里设置而是要去你的服务器提供商VPS 商后台找网络/IP 管理界面在 IP 设置里添加反向 DNS 指向你的主机名。还有一个容易被忽略的设置是 SPF 记录。WHM 创建账户时会自动帮忙创建 DNS zone但默认的 zone 里可能没有 SPF 记录。我建议在 WHM 的 DNS 管理里为每个域名的 zone 手动加一条TXT记录内容类似vspf1 a mx -all这表示“只有我绑定的 A 记录和 MX 记录的 IP 才能用我的域名发信”。没配 SPF 的域名是垃圾邮件过滤器重点怀疑对象。4.3 SSL 证书自动配置Lets Encrypt 的自动化和手动管理WHM 自带“SSL 证书管理器”和“Autossl”功能。Autossl 可以自动为所有启用了 cPanel 的账户配置 Lets Encrypt 免费证书全程无缝。我见过不少站长手动去 cPanel 里一个一个上传 SSL 证书其实完全没必要在 WHM 里开启 Autossl 并选择“所有可用域名都签发”就行了。但需要注意Autossl 默认配置的是单域名证书。如果你一个站点有多个域名比如 example.com 和 www.example.com就要在 WHM 里把 Autossl 的模式改为多域名或者单独为这个账户生成包含所有域名的证书签名单。这里有个小坑Lets Encrypt 证书的有效期是 90 天Autossl 自动续期一般没问题但如果某次服务器 DNS 解析临时故障导致验证没过续期失败后证书过期网站就会出现“不安全连接”的红色警告。我的经验是设置一个 cron 任务每天检查所有证书的到期时间提前 7 天发现快要过期的证书并手动处理避免周末被客户电话叫醒。4.4 WHM API给批量操作插上翅膀很多管理员用 WHM 很多年却不知道它有完整的 API 接口。WHM 支持 Web API通过 https 请求调用和 UAPI用户面板 API这意味着你可以自己写脚本批量创建账户、批量挂起、批量修改配额甚至做自动化的账户迁移。举个例子你手头有 500 个域名要搬家手动在 WHM 里一个个创建账户累死也忙不完。但你可以写一段脚本读取 CSV 里的域名和用户名循环调用 WHM 的createacct接口瞬间就能把 500 个账户全部建好。我做过最夸张的一次用 WHM API 帮一个客户把 200 个老虚拟主机账户从一台服务器迁移到另一台全程用脚本控制只花了两个小时其中大部分时间还花在带宽传输上。调 WHM API 需要先在 WHM 安全中心生成一个 API Token然后通过这个 Token 发起请求。如果是用 PHP 写脚本官方有 cPanel WHM SDK用 Python 也可以用 requests 库直接调。不过建议先拿一个测试账户试试再批量跑避免脚本逻辑错误导致批量误操作。5. 选 WHM 还是选其他面板不同场景下的真实判断5.1 用 WHM 的典型场景虚拟主机商、代理主机商、小集群运维WHM 最强的场景就是批量管理多个独立网站账户。如果你做的事情包含以下任何一条WHM 确实是最顺手的选择你在卖虚拟主机客户需要独立的 cPanel 登录界面能自己管网站。你做域名停放手头有大量域名想统一建站、统一配置邮箱。你帮客户代维服务器需要处理多个客户的网站和资源隔离。你希望给每个网站一个完全独立的环境避免一个站被黑牵连其他站。WHM 的底层其实就是让每个网站以独立的 Linux 用户运行这在权限隔离方面做得相当好。单独用宝塔或纯净 Nginx 配置也能实现类似效果但要做到 WHM 这种“建账户自动建 DNS、自动建邮箱、自动配 SSL”的全套自动化纯手写运维脚本的工程量相当大。5.2 不需要 WHM 的场景单站站点和轻量级开发者如果你只是运行一个自己的 WordPress 博客、一个企业官网或者只是个人项目用的 API 服务那 WHM 对你来说完全是杀鸡用牛刀。WHM 的授权费不便宜系统资源占用也高而且管理复杂度远高于轻量级面板。这类场景下我更推荐直接使用云厂商的轻量应用服务器的镜像系统或者用宝塔面板、Docker 容器方案。宝塔的优势是安装简单、中文界面、免费版功能也基本够用缺点嘛就是它的架构里“一个站点”不是一个完全独立的系统用户权限隔离不如 WHM 干净。对不涉及多租户的场景这个短板一般也影响不大。5.3 授权费和资源占用用数字算一笔账WHM 商业授权是按月交的官方价格目前是单台服务器每月 30 到 40 美元左右具体看是否包含技术支持一年下来是笔不小的开销。虽然有一些替代方案比如 DirectAdmin、Plesk但它们在“账户隔离自动化”这条路上做得都不如 cPanel 这套产品线成熟。资源占用方面WHM 加上配套的 MySQL、Apache/Nginx、Exim、FTP、BIND DNS 服务开机稳定跑起来大约占用 1.5GB 到 2GB 内存。如果你的 VPS 只有 2GB 内存装了 WHM 之后基本就没什么余量给网站跑了。所以如果你真的要做 WHM 服务器最好是 4GB 以上内存并且把不需要的服务比如 FTP 如果没客户在用、某个无用的 Perl 模块关掉给业务留出更多资源。6. 我踩过的几个 WHM 大坑排查过程和处理思路6.1 坑一服务器被暴力破解root 密码被频繁尝试登录某次半夜收到服务器的登录失败告警看日志发现一台新上线的 WHM 服务器被人用 root 用户名疯狂尝试密码一分钟几百次。第一时间我的反应不是去看哪个 IP 在扫而是先检查 root 的 SSH 登录权限。WHM 服务器默认是允许 root 通过 SSH密码登录的这是最危险的一环。处理步骤是这样的先用 CSF 封禁扫描来源 IP然后在 WHM 的“SSH 访问”里禁用 root 的密码登录改为仅允许密钥登录接着强制所有管理员开两因素认证。改完这些攻击者的成功率就降为零了。排查日志的路径是 WHM 首页的“终端”或通过 SSH 查看/var/log/secure和/var/log/messages。这里有个经验出现暴力破解不奇怪关键是确认攻击者有没有成功过。你需要在日志里搜索Accepted password的记录如果有陌生 IP 的 Accepted 记录那说明已经有人进来过了必须立即排查后门文件和系统账户不能只封 IP 了事。6.2 坑二磁盘满了但找不到哪个文件在吃空间有一次客户的服务器网站全部报警“无法写入”我登录 WHM 一看/分区 100% 占用。我当时翻了半天文件也没找到什么大的文件后来才发现问题出在 MySQL 的 Error log 和 cPanel 的备份目录。WHM 的备份目录默认在/backup如果你启用了本地备份但没做远程传输它会一直往本地磁盘写直到把分区塞满。备份目录不显眼因为里面是按账户名分的子目录每个目录看起来体积不大但加起来能把整个盘吃掉。排查时我用了一个命令du -sh /backup/*直接按账户列出备份目录大小立马发现了几个巨大无比的备份文件夹然后赶紧清理并修改备份策略为“只保留最近 3 个备份”。另一个经典吃盘点是 Exim 邮件队列。如果某个账户被黑后大量发信邮件队列里可能积压几万封待投递的邮件每一封都是完整文件加起来轻轻松松几百 GB。处理方式是在 WHM 的邮件队列管理里清空队列然后立刻挂起被黑的账户。6.3 坑三误删除账户后的数据恢复失败只因没有远程备份坦白说这个坑是我的教训。有一次我操作 WHM 后台本来想挂起一个测试账户结果手滑点了“终止账户”还顺手勾了“删除备份”。那一瞬间我脑子是懵的——客户的 Wordpress 站点的时间线、图片、留言全没了而我本地的备份策略因为“备份目录太大”被我临时改成关闭状态。后来幸好这个客户用的是旧版本的 WP 插件数据库里的内容在一些文章页面的缓存里还能捞出来一部分但终究损失了很多数据。这件事彻底改变了我对备份的重视程度。现在我给任何服务器部署 WHM第一件事永远是先配好远程备份第二件事是设置“终止账户时必须输入‘confirm’几个字符才能继续”。WHM 的这个二次确认选项很多人没留意但真的能让手滑的概率大幅下降。7. 最后分享几个提升 WHM 效率的小技巧到了这个位置核心概念和实操经验都聊得差不多了我再分享几个日常使用 WHM 时真正能提效的小细节。技巧一学会用 WHM 的“终端”功能。WHM 后台里集成了基于 Web 的终端模拟器不用再单独开 SSH 窗口。批量操作、查看日志、跑脚本直接在浏览器里就能完成。不过真到紧急排查时还是建议用终端软件的 SSH 方式因为 Web 终端断连时容易把正在跑的长任务打断。技巧二把 WHM 接口做成内部监控。前面说过 WHM 有 API我后来做了一个小工具每天通过 API 拉取所有账户的磁盘占用和邮箱队列数超过阈值就发钉钉告警。这样我从不用主动登录 WHM 看状态有异常它会自己告诉我。技巧三定期更新 WHM 版本。WHM 提供自动更新选项我建议打开“每周一次”的自动检查更新。WHM 每个版本都会修复若干安全漏洞长期不更新就是把这些漏洞挂在公网上等攻击者来打。更新前先在后台创建一个快照或完整备份然后执行更新更新过程中网站会短暂不可用选在业务低谷时段操作。回到最开始的问题WHM 是什么它不是某个 fad而是一套相当成熟的托管级运维面板。它解决的问题很朴素——在服务器上批量化、规范化地管理多个网站用户的权限、资源、配置和备份。如果你正好干的是多租户虚拟主机、代维、或者批量搭建站点这类事情理解 WHM 的这套模型比死盯着在某一个 cPanel 里点按钮要重要得多。它给你的是一种“从站在服务器顶上看全局”的视角而这种视角才是把一台服务器真正当成一门生意来运营的开端。
返回列表