在轻量云服务器(如阿里云、腾讯云、华为云等提供的轻量应用服务器)上部署多个网站,核心思路其实和传统的 VPS 或物理机没有本质区别:通过 Web 服务器软件(Nginx/Apache)进行反向XX,利用域名或端口区分不同的站点。
轻量云的优势在于“镜像化”和“一体化”,很多厂商提供了一键安装的 WordPress 或 LAMP/LNMP 环境。但如果你要跑多个独立网站,直接复用这些一键包往往不够灵活,或者容易互相干扰。
下面我以目前最主流、配置最清晰的 LNMP (Linux + Nginx + MySQL + PHP) 架构为例,讲清楚怎么从零开始,在一台轻量云上把三个不同域名的网站跑起来。假设你的轻量云系统是 CentOS 7/8 或 Ubuntu 20.04/22.04。
第一步:基础环境准备
-
购买与系统选择
- 建议直接选择纯净版 Linux 系统(CentOS 或 Ubuntu),不要选带预装环境的镜像,除非你非常熟悉那个特定的一键包结构。
- 确保防火墙已放行 HTTP(80) 和 HTTPS(443) 端口。轻量云控制台里通常有“安全组”或“防火墙”设置,记得加上规则。
-
安装 Nginx 和 PHP-FPM
- 这里不推荐用宝塔面板(虽然简单),因为对于技术博客来说,掌握底层命令更有助于排查问题。当然,如果你追求极致效率,宝塔也是个好选择,逻辑是一样的。
- 以 Ubuntu 为例:
sudo apt update sudo apt install nginx php-fpm php-mysql mysql-server -y - 启动服务并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl start php8.1-fpm # 版本号根据实际安装情况调整 sudo systemctl enable php8.1-fpm
第二步:规划网站目录结构
为了管理清晰,建议在 /var/www 下为每个网站建立独立的目录。
sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
sudo mkdir -p /var/www/site3.com/html
注意:site1.com 等只是示例域名,你需要替换成你自己的真实域名。
给这些目录赋予正确的权限,让 Nginx 用户(通常是 www-data)可以读取:
sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com
sudo chown -R www-data:www-data /var/www/site3.com
在每个 html 目录下放一个测试文件 index.html,内容随便写点东西,方便后续验证。
第三步:配置 Nginx 虚拟主机(关键步骤)
这是实现“多站合一”的核心。Nginx 通过 server_name 来区分请求发给哪个网站。
我们需要为每个网站创建一个配置文件。Nginx 的配置文件通常在 /etc/nginx/sites-available/,软链接到 /etc/nginx/sites-enabled/。
1. 创建 site1.com 的配置
sudo nano /etc/nginx/sites-available/site1.com
写入以下内容(以 HTTPS 为例,稍后讲证书):
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com/html;
index index.html index.php index.htm;
location / {
try_files $uri $uri/ =404;
}
# PHP 处理部分
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 注意路径可能因版本而异
}
}
2. 启用该配置
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/site1.com
3. 重复操作
按照同样的方式,为 site2.com 和 site3.com 创建对应的配置文件,修改 server_name 和 root 指向各自的目录。
4. 测试并重载 Nginx
在重载之前,务必测试配置语法是否正确:
sudo nginx -t
如果显示 syntax is ok 和 test is successful,则执行:
sudo systemctl reload nginx
此时,如果你的域名 DNS 已经解析到了这台服务器的 IP,访问 http://site1.com 应该能看到你在 /var/www/site1.com/html 里放的测试页面。
第四步:HTTPS 证书配置(生产环境必做)
现在浏览器访问会提示“不安全”。轻量云厂商通常提供免费的 SSL 证书申请服务,或者你可以使用 Let’s Encrypt 的 Certbot。
这里推荐用 Certbot,通用且免费。
-
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -
获取证书并自动修改 Nginx 配置:
sudo certbot --nginx -d site1.com -d www.site1.com按提示输入邮箱,同意条款。Certbot 会自动帮你生成证书,并修改 Nginx 配置文件,将 80 端口重定向到 443,并加入 SSL 参数。
-
对其他两个网站重复此步骤。
第五步:数据库隔离(可选但推荐)
虽然所有网站可以共用同一个 MySQL 实例,但为了安全和性能隔离,建议为每个网站创建独立的数据库和用户。
-- 登录 MySQL
mysql -u root -p
-- 为 site1 创建数据库和用户
CREATE DATABASE site1_db;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
在你的网站程序(如 WordPress、Typecho 等)安装时,填入这个新的数据库信息即可。
常见问题与避坑指南
-
端口冲突:
轻量云有时默认占用了 8080 或其他端口。确保你的 Nginx 监听的是 80 和 443。如果本地调试发现改不了 80 端口,检查是否有其他进程占用(如lsof -i :80)。 -
PHP 版本差异:
如果你的多个网站对 PHP 版本要求不同(比如一个老项目需要 PHP 7.4,新项目需要 PHP 8.1),单实例 Nginx + 单 PHP-FPM 搞不定。这时候需要安装多个 PHP 版本,并在 Nginx 配置中分别指定fastcgi_pass到不同的 Socket 文件。这在轻量云上稍微复杂一点,建议尽量统一 PHP 版本,或使用 Docker 隔离。 -
资源限制:
轻量云通常是共享 CPU 和内存。如果你的某个网站流量突然增大,可能会影响其他网站。监控一下top或htop,如果发现负载过高,考虑升级配置或优化代码。 -
备份策略:
轻量云的优势之一是快照功能。定期(每周)对整台服务器打快照。这样即使你误删了某个网站的配置文件,也能一键恢复整个环境,比单独备份每个网站的数据更省心。
总结
在一台轻量云上部署多个网站,本质就是 Nginx 的多 Server Block 配置。
- 简单场景:用宝塔面板,图形化操作,添加站点,绑定域名,申请证书,全自动。
- 专业场景:手动配置 Nginx,遵循“独立目录、独立配置、独立数据库”的原则。
只要 DNS 解析正确,Nginx 配置无误,理论上你可以在一台 2C2G 的轻量云上轻松运行几十甚至上百个静态或小型动态网站。关键在于资源管理和配置规范。
云技术博客