子域名建站方案,搭建多个CMS独立站点:子域名建站方案
如果你手头只有一台服务器,却想用不同子域名分别运行 WordPress、Typecho 或帝国 CMS 等独立站点,核心思路是:每个子域名对应一个独立站点目录和数据库,通过 Web 服务器(Nginx/Apache)的虚拟主机配置区分请求。
整个方案不复杂,零基础用户按下面步骤操作也能完成。
先确认服务器环境和前提条件
开始之前,你需要准备好三样东西。
- 一台已装好宝塔面板的 Linux 服务器(本文以宝塔 + Nginx 为例,其他面板操作逻辑类似)
- 一个主域名,并拥有 DNS 解析管理权限(在域名注册商或 DNS 服务商处操作)
- 每个子域名对应的 CMS 程序安装包(如 WordPress、Typecho 等)
登录宝塔面板后,在「软件商店」确认 Nginx、MySQL、PHP 已安装并运行正常。
如果还没装,直接在面板里搜索安装即可,建议 PHP 选择 7.4 或 8.0 等仍受支持的版本,具体以 CMS 官方要求为准。
第一步:添加子域名 DNS 解析
进入你的域名 DNS 管理后台,为每个子域名添加一条 A 记录:
- 主机记录填
blog,记录值填服务器公网 IP - 主机记录填
shop,记录值同样填服务器公网 IP
以此类推。
解析生效时间取决于 DNS 服务商,通常几分钟到几小时不等。
可以用 ping blog.你的域名.com 检查是否已指向正确 IP。
判断条件:如果 ping 返回的 IP 与服务器公网 IP 一致,说明解析已生效,可以继续下一步。
第二步:在宝塔中为每个子域名新建站点
进入宝塔面板「网站」→「添加站点」,依次填写:
- 域名:
blog.你的域名.com - 根目录:建议保持默认,或手动改为
/www/wwwroot/blog - 数据库:勾选「创建数据库」,每个站点单独一个库
- PHP 版本:按 CMS 要求选择
重复以上操作,为 shop.你的域名.com 再建一个站点,务必使用不同的根目录和不同的数据库。
这里的关键是:每个子域名必须对应独立的网站目录和数据库,不能共用同一个库,否则 CMS 数据会互相覆盖。
第三步:安装 CMS 并配置伪静态
站点建好后,把对应 CMS 的安装包上传到各自根目录并解压。
然后在浏览器访问 http://blog.你的域名.com,按提示填写数据库信息完成安装。
数据库信息可在宝塔「数据库」页面查看,包括数据库名、用户名和密码。
安装完成后,还需要配置伪静态规则。
在宝塔「网站」→ 点击对应站点 →「伪静态」,选择你使用的 CMS 对应的规则并保存。
例如 WordPress 选择 wordpress,Typecho 选择 typecho。
如果列表中没有,可以手动粘贴官方提供的 Nginx 伪静态规则。
验证方式:安装完成后访问子域名首页和后台地址,页面正常打开、能登录后台,说明站点已独立运行。
容易踩坑的几个地方
数据库混用是最常见的问题。
多个站点共用一个数据库,表前缀冲突会导致数据错乱,新建站点时一定要勾选创建独立数据库。
伪静态未配置会导致除首页外的页面全部 404。
安装完 CMS 后立刻检查伪静态规则是否已应用。
HTTPS 证书需要为每个子域名单独申请。
在宝塔「网站」→「SSL」中,可以为每个站点分别申请 Let's Encrypt 免费证书,或上传已有证书。
目录权限方面,宝塔新建站点一般已自动设置好,若 CMS 提示无法写入,检查根目录权限是否为 755,所有者是否为 www。
如何确认多个站点互不影响
全部配置完成后,逐一访问每个子域名,确认:
- 首页能正常显示各自 CMS 的默认页面
- 后台能正常登录
- 发布一篇测试文章,前台能正常访问
如果某个站点异常,
先检查该站点的 Nginx 配置文件(路径通常在 /www/server/panel/vhost/nginx/你的域名.conf),
确认 root 指向的目录是否正确、server_name 是否匹配。
只要每个子域名有独立的目录、数据库和伪静态规则,多个 CMS 站点就可以在同一台服务器上稳定共存。
常见疑问
一个服务器能建多少个这样的站点? 数量取决于服务器配置和每个站点的访问量。
CPU、内存、磁盘和带宽充足的情况下,几十个低流量站点也可以运行,但建议根据实际负载逐步增加。
子域名和子目录建站有什么区别? 子域名是独立站点,有独立目录和数据库,适合不同 CMS 或需要完全隔离的场景;
子目录通常属于同一个站点程序,共享数据库和配置。
必须用宝塔面板吗? 不是。
核心逻辑是 Web 服务器的虚拟主机配置,手动配置 Nginx 的 server 块同样可以实现,宝塔只是把操作图形化了。
后续新增子域名站点怎么做? 重复第二步和第三步即可:加 DNS 解析 → 新建站点(独立目录和数据库)→ 上传 CMS 安装 → 配置伪静态。