加油
努力

如何在一台阿里云服务器上搭建多个网站?

在阿里云服务器上搭建多个网站,核心思路是:通过 Web 服务器(如 Nginx/Apache)配置虚拟主机(Virtual Host),为每个域名分配独立的站点目录和配置。以下是通用步骤(以 Linux + Nginx 为例):


✅ 前置准备

  1. 已购买并初始化阿里云 ECS 实例(推荐 Ubuntu/CentOS)
  2. 安装 Web 服务环境(如 LAMP/LNMP)
    # Ubuntu 示例(安装 Nginx + PHP-FPM + MySQL)
    sudo apt update
    sudo apt install nginx php-fpm mysql-server php-mysql -y
  3. 确保域名已解析到服务器公网 IP
    (在阿里云 DNS 控制台添加 A 记录,指向你的 ECS 公网 IP)

🔧 搭建多站点流程

步骤 1:创建站点目录结构

sudo mkdir -p /var/www/site1/html
sudo mkdir -p /var/www/site2/html
# 可继续创建 site3、site4...

步骤 2:上传网站内容

将各网站的代码分别放入对应目录:

# 示例:将 site1 的 index.html 放入
echo "<h1>Site 1</h1>" | sudo tee /var/www/site1/html/index.html
echo "<h1>Site 2</h1>" | sudo tee /var/www/site2/html/index.html

步骤 3:配置 Nginx 虚拟主机

为每个站点创建独立配置文件(建议放在 /etc/nginx/sites-available/):

# /etc/nginx/sites-available/site1.conf
server {
    listen 80;
    server_name www.site1.com site1.com;

    root /var/www/site1/html;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    # 若需 PHP 支持,添加以下 location
    location ~ .php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据实际 PHP 版本调整
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

重复上述模板,修改 server_nameroot 路径生成 site2.conf 等。

步骤 4:启用站点并测试

# 创建软链接到 sites-enabled
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

# 重载 Nginx
sudo systemctl reload nginx

💡 提示:默认 default 站点可能干扰,建议先禁用:

sudo rm /etc/nginx/sites-enabled/default

步骤 5:开放防火墙端口(阿里云安全组)

登录 阿里云控制台 → 找到实例 → 安全组 → 添加入方向规则:

  • 协议:TCP
  • 端口范围:80/80(HTTP)、443/443(HTTPS,如需)
  • 授权对象:0.0.0.0/0(或指定 IP 段)

🌐 可选增强功能

需求 实现方式
HTTPS 加密 使用 Let’s Encrypt 免费证书(推荐 certbot
子域名支持 server_name 中添加 blog.site1.com
不同 PHP 版本 安装多版本 PHP-FPM,在配置中指定不同 socket
静态资源分离 用 CDN 或 OSS 托管图片/JS/CSS

⚠️ 注意事项

  • 每个站点的文件权限建议设为:
    sudo chown -R www-data:www-data /var/www/site1/html
    sudo chmod -R 755 /var/www/site1/html
  • 避免多个站点共用同一数据库用户(防止数据泄露)
  • 定期备份各站点目录与数据库

需要我提供 Apache 配置示例Docker 多站点方案,或 一键部署脚本 吗?

云服务器