- 阿里云服务器 + 宝塔面板
阿里云服务器 + 宝塔面板
一台服务器如何部署多个网站?
📖 杂志导读
一台阿里云服务器只有一个公网 IP,却能同时运行多个网站——这是怎么做到的?
本文用“大楼”比喻讲清原理,并手把手教你用宝塔面板完成静态网站和动态网站(含数据库)的部署。
01 / 🏢 大楼比喻:一栋楼里可以开多家公司
| 现实中的组件 | 比喻中的角色 | 作用 |
|---|---|---|
| 阿里云服务器(ECS/轻量应用服务器) | 🏛️ 一栋大楼 | 提供水电、楼层、房间(CPU、内存、硬盘) |
服务器的公网 IP(如 123.56.78.90) |
📍 大楼的统一地址 | 所有人先找到这栋楼 |
不同域名(例如 www.a.com、blog.a.com) |
🚪 不同的门牌号(101室、102室) | 访客想去具体哪个房间 |
| Nginx / Apache(宝塔面板中自动配置) | 👩💼 大楼前台接待员 | 看一眼门牌号,然后指路 |
网站文件(存放在宝塔的 wwwroot 目录) |
🏢 公司内部的办公室 | 各公司独立办公,互不干扰 |
| MySQL 数据库 | 🗄️ 公司内部的档案室 | 存放用户信息、文章、订单等结构化数据 |
🔑 核心结论
- 一台服务器(一个 IP)可以承载无数个网站,就像一栋楼可以入驻很多家公司。
- 区分的关键是域名(包括子域名):前台(Nginx)根据请求中的
Host字段,把访客带到正确的网站目录。 - 数据库是独立的“档案室”:多个网站可以共用同一个数据库服务,但建议每个网站创建独立数据库,就像每家公司的档案室不互通。
02 / ⚙️ 技术原理(极简版)
- 你在浏览器输入
blog.example.com→ DNS 解析得到服务器 IP123.56.78.90。 - 浏览器向该 IP 发送 HTTP 请求,并在请求头里写上
Host: blog.example.com。 - 服务器的 Nginx 读到
Host值,去匹配自己配置好的网站列表。 - 匹配成功 → 返回对应目录下的网页文件(或执行后端代码,读取数据库)。
💡 结论: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 步:在宝塔面板中添加新站点(静态网站)
- 登录宝塔面板(浏览器访问
http://你的IP:8888) - 点击左侧菜单 “网站” → 点击 “添加站点”
- 填写信息:
- 域名:
blog.example.com - 根目录:自动生成
/www/wwwroot/blog.example.com,也可以手动修改 - PHP版本:如果是纯静态 HTML 网站,选择 “纯静态”
- 域名:
- 点击 “提交”
📂 第 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 数据
如果你在本地已经有一个数据库(例如员工管理系统的表结构和测试数据),可以通过以下两种方式导入:
方式一:宝塔面板的“导入”功能(推荐新手)
- 在宝塔 “数据库” 页面,找到你刚刚创建的数据库(如
blog_db),点击 “管理” - 在弹出的 phpMyAdmin 页面中,点击 “导入”
- 选择本地的
.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”