DHappy 相信自己!

一台服务器部署多个网站


阿里云服务器 + 宝塔面板

一台服务器如何部署多个网站?

📖 杂志导读
一台阿里云服务器只有一个公网 IP,却能同时运行多个网站——这是怎么做到的?
本文用“大楼”比喻讲清原理,并手把手教你用宝塔面板完成静态网站和动态网站(含数据库)的部署。


01 / 🏢 大楼比喻:一栋楼里可以开多家公司

现实中的组件 比喻中的角色 作用
阿里云服务器(ECS/轻量应用服务器) 🏛️ 一栋大楼 提供水电、楼层、房间(CPU、内存、硬盘)
服务器的公网 IP(如 123.56.78.90 📍 大楼的统一地址 所有人先找到这栋楼
不同域名(例如 www.a.comblog.a.com 🚪 不同的门牌号(101室、102室) 访客想去具体哪个房间
Nginx / Apache(宝塔面板中自动配置) 👩‍💼 大楼前台接待员 看一眼门牌号,然后指路
网站文件(存放在宝塔的 wwwroot 目录) 🏢 公司内部的办公室 各公司独立办公,互不干扰
MySQL 数据库 🗄️ 公司内部的档案室 存放用户信息、文章、订单等结构化数据

🔑 核心结论

  • 一台服务器(一个 IP)可以承载无数个网站,就像一栋楼可以入驻很多家公司。
  • 区分的关键是域名(包括子域名):前台(Nginx)根据请求中的 Host 字段,把访客带到正确的网站目录。
  • 数据库是独立的“档案室”:多个网站可以共用同一个数据库服务,但建议每个网站创建独立数据库,就像每家公司的档案室不互通。

02 / ⚙️ 技术原理(极简版)

  1. 你在浏览器输入 blog.example.com → DNS 解析得到服务器 IP 123.56.78.90
  2. 浏览器向该 IP 发送 HTTP 请求,并在请求头里写上 Host: blog.example.com
  3. 服务器的 Nginx 读到 Host 值,去匹配自己配置好的网站列表。
  4. 匹配成功 → 返回对应目录下的网页文件(或执行后端代码,读取数据库)。

💡 结论:IP 相同没关系,域名不同就能区分。这就是 “基于域名的虚拟主机” 技术。


03 / 🛠️ 实战:阿里云 + 宝塔面板部署两个网站

假设你已经有一个域名 example.com 解析到了阿里云服务器,并且安装了宝塔面板。现在想增加第二个网站 blog.example.com

📌 第 1 步:在阿里云 DNS 控制台添加子域名解析

字段
记录类型 A
主机记录 blog(最终会得到 blog.example.com
记录值 你的阿里云服务器公网 IP

⏱️ DNS 解析生效需要几分钟到半小时,可以继续后面的步骤。

🔓 第 2 步:在阿里云安全组放行必要端口

  • 进入 阿里云 ECS 控制台 → 找到你的实例 → 点击 “安全组”
  • 添加入方向规则(如果已有可跳过):
端口 用途
80 HTTP
443 HTTPS
8888 宝塔面板默认端口(建议修改后放行新端口)
22 SSH
3306 远程连接数据库(可选,建议用 SSH 隧道代替

⚠️ 如果宝塔面板打不开,99% 是因为安全组没有放行 8888 端口(或你修改后的面板端口)。

🧩 第 3 步:在宝塔面板中添加新站点(静态网站)

  1. 登录宝塔面板(浏览器访问 http://你的IP:8888
  2. 点击左侧菜单 “网站” → 点击 “添加站点”
  3. 填写信息:
    • 域名blog.example.com
    • 根目录:自动生成 /www/wwwroot/blog.example.com,也可以手动修改
    • PHP版本:如果是纯静态 HTML 网站,选择 “纯静态”
  4. 点击 “提交”

📂 第 4 步:上传网站文件

  • 在宝塔面板左侧点击 “文件”
  • 进入新站点的根目录(如 /www/wwwroot/blog.example.com
  • 直接把本地的网页文件(index.html、CSS、JS 等)拖拽上传到该目录
  • 如果上传的是压缩包,右键点击 “解压” 即可

✅ 第 5 步:检查网站是否生效

  • 等待 DNS 解析生效(可以用 ping blog.example.com 看是否返回你的服务器 IP)
  • 在浏览器访问 http://blog.example.com
  • 如果看到你上传的页面,说明部署成功!

🔒 第 6 步(可选):为第二个网站申请 SSL 证书

  • 在宝塔面板 “网站” 列表中找到 blog.example.com,点击 “设置”
  • 切换到 “SSL” 选项卡 → 选择 “Let’s Encrypt”
  • 勾选域名 → 点击 “申请”
  • 宝塔会自动配置好 HTTPS 访问

04 / 🗄️ 数据库部署:让动态网站运行起来

如果你的网站需要存储用户注册信息、文章、订单等(比如一个员工管理系统),就需要用到数据库。下面以 MySQL 为例,介绍在宝塔面板中如何为网站创建和管理数据库。

4.1 安装数据库服务

  • 进入宝塔面板 → “软件商店”“已安装”
  • 如果未安装 MySQL,切换到 “运行环境”,找到 MySQL,选择版本(建议 5.7 或 8.0),点击 “安装”
  • 安装完成后,在 “数据库” 菜单中可以看到 MySQL 服务状态为 “运行中”

4.2 创建独立数据库

  • 进入宝塔面板 → “数据库”“添加数据库”
  • 填写信息:
字段 示例值
数据库名 blog_db
用户名 blog_user
密码 使用宝塔自动生成的强密码(或自己设置并记下来)
访问权限 “本地服务器”(最安全)
  • 点击 “提交”,数据库创建成功

💡 每个网站最好使用独立的数据库和用户,避免数据混在一起,也方便后期备份和迁移。

4.3 导入已有的 SQL 数据

如果你在本地已经有一个数据库(例如员工管理系统的表结构和测试数据),可以通过以下两种方式导入:

方式一:宝塔面板的“导入”功能(推荐新手)

  1. 在宝塔 “数据库” 页面,找到你刚刚创建的数据库(如 blog_db),点击 “管理”
  2. 在弹出的 phpMyAdmin 页面中,点击 “导入”
  3. 选择本地的 .sql 文件,点击 “执行”,等待导入完成

方式二:使用 DataGrip 等本地客户端通过 SSH 隧道导入

  • 参考 “常见问题” 中的 SSH 隧道连接方法,连接成功后,直接运行 SQL 脚本。

4.4 配置网站程序连接数据库

以常见的几种程序为例:

  • WordPress:在根目录的 wp-config.php 中填写数据库信息,主机填 localhost
  • FastAPI + SQLAlchemy
    ```python SQLALCHEMY_DATABASE_URL = “mysql+pymysql://blog_user:你的密码@localhost:3306/blog_db”

Similar Posts

上一篇 Awesome HTMLtoWord

Comments