在轻量应用服务器(Cloud Lightweight Server)上搭建多个网站,核心思路与传统的 VPS 或物理服务器并无本质区别,主要依赖于 Web 服务器软件的多站点配置 和 DNS/域名解析。
由于轻量服务器通常资源有限(CPU、内存、带宽),且预装了宝塔面板等简化运维工具,最推荐的方式是通过 Nginx/Apache + 反向XX 或 虚拟主机(Virtual Host) 技术来实现。
以下是基于主流 Linux 发行版(如 CentOS, Ubuntu, Debian)和常见运维工具(以宝塔面板为例,因其在国内轻量服务器用户中占比极高)的详细操作指南。如果你使用命令行原生配置,原理相同,只是步骤更繁琐。
一、 前期准备
-
域名准备:
- 你需要至少两个域名(或子域名)。例如:
example.com和blog.example.com。 - 确保所有域名已备案(如果服务器位于中国大陆节点)。
- 将域名解析到轻量服务器的公网 IP。
- 你需要至少两个域名(或子域名)。例如:
-
服务器环境:
- 操作系统:CentOS 7+/8+, Ubuntu 20.04+, Debian 10+。
- Web 服务器:Nginx 或 Apache(Nginx 性能更好,适合轻量级高并发场景)。
- 辅助工具:宝塔面板(BT Panel)是首选,极大降低多站点配置难度;若无面板,需手动安装 LAMP/LNMP 栈。
二、 方法一:使用宝塔面板(推荐,适合大多数用户)
这是最简单、可视化程度最高的方式,适合不熟悉 Linux 命令行的用户。
1. 安装并登录宝塔面板
- 在轻量服务器控制台或通过 SSH 执行官方安装脚本。
- 安装完成后,记录登录地址、用户名和密码。
2. 创建第一个网站
- 进入“网站” -> “添加站点”。
- 填写主域名(如
example.com)。 - 选择 PHP 版本(如需动态内容)或纯静态。
- 设置根目录(如
/www/wwwroot/example.com)。 - 点击提交,系统会自动生成 Nginx/Apache 配置文件。
3. 创建第二个网站
- 再次点击“添加站点”。
- 填写另一个域名(如
blog.example.com或site2.com)。 - 同样设置根目录(如
/www/wwwroot/blog)。 - 注意:每个网站必须有独立的根目录,避免文件冲突。
4. 部署代码
- 通过 FTP 或宝塔自带的“文件”管理功能,将对应网站的源码上传至各自的根目录。
- 如果是 WordPress 等 CMS,可在宝塔“一键部署”中选择快速安装。
5. SSL 证书配置(HTTPS)
- 在每个网站的“设置” -> “SSL”中,申请 Let’s Encrypt 免费证书。
- 勾选“强制 HTTPS”,提升安全性。
✅ 优点:图形化操作,自动处理 Nginx 配置、日志分离、SSL 更新。
⚠️ 注意:确保轻量服务器的带宽足以支撑多个网站的并发访问,否则建议为每个网站限制 PHP-FPM 进程数。
三、 方法二:手动配置 Nginx(适合高级用户)
如果你希望完全掌控配置,或使用无面板的纯净系统,可通过修改 Nginx 配置文件实现。
1. 安装 LNMP 环境
# Ubuntu/Debian 示例
sudo apt update
sudo apt install nginx php-fpm mariadb-server -y
2. 创建网站目录结构
sudo mkdir -p /var/www/site1/html
sudo mkdir -p /var/www/site2/html
sudo chown -R $USER:$USER /var/www/site1/html
sudo chown -R $USER:$USER /var/www/site2/html
3. 编写 Nginx 站点配置文件
Nginx 的站点配置通常放在 /etc/nginx/sites-available/,并软链接到 /etc/nginx/sites-enabled/。
创建 site1.conf:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/site1/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
# PHP 支持(如需)
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
创建 site2.conf:
server {
listen 80;
server_name blog.example.com;
root /var/www/site2/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
4. 启用配置并重启 Nginx
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/
# 测试配置语法是否正确
sudo nginx -t
# 重载配置
sudo systemctl reload nginx
5. 验证
- 将 HTML 文件放入对应目录,通过浏览器访问不同域名,应看到各自的内容。
四、 关键注意事项(避坑指南)
-
端口冲突:
- 确保没有两个服务监听同一个端口(如 80/443)。Nginx 通过
server_name区分域名,而非端口。
- 确保没有两个服务监听同一个端口(如 80/443)。Nginx 通过
-
资源隔离:
- 轻量服务器内存小(如 1GB~2GB),若一个网站被攻击或流量突增,可能拖垮整个服务器。
- 建议:为每个 PHP 项目设置独立的 PHP-FPM 池,并限制最大子进程数。
-
防火墙与安全组:
- 在云控制台的安全组中,只开放必要端口(80, 443, SSH)。
- 不要开放数据库端口(3306/5432)到公网。
-
SSL 证书管理:
- 多域名建议使用通配符证书(Wildcard Certificate),如
*.example.com,但需注意部分免费 CA 不支持通配符。 - 若使用不同顶级域名,需分别为每个域名申请证书。
- 多域名建议使用通配符证书(Wildcard Certificate),如
-
SEO 与规范:
- 确保每个网站有独立的
robots.txt和sitemap.xml。 - 避免不同网站内容重复,否则可能被搜索引擎判定为镜像站而降权。
- 确保每个网站有独立的
-
备份策略:
- 定期备份数据库和网站文件。可使用宝塔的定时备份功能,或编写 Shell 脚本结合
rsync同步到对象存储(OSS/COS)。
- 定期备份数据库和网站文件。可使用宝塔的定时备份功能,或编写 Shell 脚本结合
五、 替代方案:容器化部署(Docker)
对于技术能力较强的用户,推荐使用 Docker 运行多个网站实例,实现更好的隔离性和可移植性。
# docker-compose.yml 示例
version: '3'
services:
site1:
image: nginx:alpine
ports:
- "8081:80"
volumes:
- ./site1/html:/usr/share/nginx/html
restart: always
site2:
image: nginx:alpine
ports:
- "8082:80"
volumes:
- ./site2/html:/usr/share/nginx/html
restart: always
然后通过 Nginx 反向XX将域名指向 localhost:8081 和 localhost:8082。这种方式便于扩展和维护,尤其适合微服务架构。
总结
| 方法 | 适用人群 | 优点 | 缺点 |
|---|---|---|---|
| 宝塔面板 | 初学者、中小企业 | 操作简单、可视化管理、插件丰富 | 占用少量系统资源 |
| 手动 Nginx | 高级用户、开发者 | 完全可控、无额外开销 | 配置复杂,易出错 |
| Docker | 技术团队、DevOps | 环境隔离好、易于迁移 | 学习成本高 |
最终建议:
对于绝大多数轻量应用服务器用户,宝塔面板 + Nginx 是最平衡的选择。它既能满足多站点需求,又提供了良好的安全监控和资源管理界面,能有效避免因配置错误导致的服务器不稳定。
云技术博客