一台 4 核 8G 的服务器,跑十个企业站完全没问题。但前提是配置得当,否则会出现"一个站被攻击,全部遭殃"或者"一个站跑满 CPU,其他站打不开"。
一、目录怎么规划
宝塔默认把站点放在 /www/wwwroot/域名/。这个结构可以用,但建议做两件事:
- 目录名用域名,别用"web1""site2",后期根本分不清。
- 日志统一放
/www/wwwlogs/,便于集中清理。
如果站点很多(超过二十个),可以按客户或项目分二级目录,但宝塔的站点管理是按目录绑定的,分太深反而麻烦。
二、PHP 版本怎么分配
宝塔支持多版本共存。建议按程序需求分配,而不是全部用最新版:
| 程序类型 | 推荐版本 |
|---|---|
| 老 CMS(五年前) | PHP 7.4 |
| 主流 CMS / WordPress | PHP 8.1 / 8.2 |
| 自研项目 | 按框架要求 |
版本越多,占用的内存越多。三个版本是上限,超过就要考虑拆服务器。
三、五个必做的隔离
1. 防跨站(open_basedir)
宝塔站点设置里有"防跨站攻击"开关,必须打开。它限制每个站只能访问自己的目录,是防"一站被黑、全站沦陷"的关键。
2. 独立数据库用户
每个站用独立数据库和独立用户,权限只给本库。绝不用一个 root 账号连所有站。
3. 独立 PHP 进程池
宝塔默认每个站点使用共享的 PHP-FPM 池。站点多了之后,建议给重点站点单独配置进程池,避免被其他站拖死。
4. 上传目录禁执行
在每个站的上传目录加一条 Nginx 规则:
location ~* ^/uploads/.*\.(php|php5|phtml)$ {
deny all;
}
5. 独立日志与限额
给每个站设置日志大小上限和磁盘配额(如果文件系统支持),防止某个站写满磁盘影响全部。
四、资源怎么分配
一台服务器上,资源是共享的。要避免"一个站吃掉全部":
- PHP 进程数:按站点重要性分配。核心站多给,展示站少给。
- MySQL 连接数:总量有限,站点多时要限制单站的最大连接数。
- 带宽:如果按固定带宽计费,某站被刷会拖慢全部。建议上 CDN 分摊。
五、备份怎么管
多站点的备份最容易失控:十个站每天各备一次,磁盘很快满。
建议策略:
- 核心站每天备份,普通站每周备份。
- 备份直接传对象存储,不在本地堆积。
- 保留份数按重要性设,核心站 14 份,普通站 4 份。
- 每月检查一次备份任务是否都成功。
六、什么时候该拆服务器
三个信号:
- CPU 长期高于 60%,优化后仍降不下来。
- 内存经常接近满载,PHP 进程频繁被杀。
- 某个站被攻击,影响了其他站。
拆的原则是按"业务重要性"拆,不是按"站点数量"拆。把核心站单独放一台,其余共享一台。
多站点最怕的两件事
一是磁盘写满:某个站的日志或备份把盘吃光,所有站一起挂。二是 PHP 进程被单个站占满:一个站被刷,其他站全部 502。
解法分别是给每个站设日志上限与备份轮转,以及给重点站点单独配置 PHP 进程池。
多站点的资源隔离
一是磁盘写满:某个站的日志或备份把盘吃光,所有站一起挂。二是 PHP 进程被单个站占满:一个站被刷,其他站全部 502。
解法分别是给每个站设日志上限与备份轮转,以及给重点站点单独配置 PHP 进程池。多站点不是把站丢上去就不管。
每个站单独设日志上限和备份份数,别让一个站把磁盘吃满。重点站单独配 PHP 进程池,避免被其他站拖垮。
每个站单独设日志上限和备份份数,重点站单独配 PHP 进程池。
常见问题
一台服务器能放多少个站
看流量和程序。轻量企业站,4 核 8G 放 20-30 个没问题;有商城的,5-10 个就要考虑拆分。
多站点会不会互相影响 SEO
如果站点内容无关、且互相不做大量交叉链接,一般不影响。但同 IP 下大量低质站点,可能被连带评估。
能不能用子目录放多个站
可以,但不推荐。子目录站的权限隔离更麻烦,URL 也容易混乱。用子域名或独立域名更清晰。
多站点的基础环境配置,见宝塔面板安装教程。