加油
努力

使用轻量级云服务器如何部署多个不同的网站?

在轻量级云服务器上部署多个不同网站,核心思路是通过 Nginx/Apache 反向X_X + 域名绑定 + 端口隔离实现多站点共存。以下是具体方案(以 Linux + Nginx 为例):


✅ 推荐架构

公网 IP:80/443 → Nginx(监听 80/443)
                ├─ site1.example.com → /var/www/site1(Node.js/Python/静态等)
                ├─ site2.example.org → /var/www/site2(PHP/Java 等)
                └─ api.site3.net → /var/www/site3(Go/其他语言)

📦 步骤详解

1️⃣ 准备环境

# Ubuntu/Debian 示例
sudo apt update && sudo apt install nginx curl git -y

# 若需 PHP/MySQL(按需安装)
sudo apt install php-fpm mysql-server -y

# 若运行 Node.js/Python 应用,确保已安装对应运行时
# npm/nodejs, python3-pip 等

2️⃣ 创建网站目录与项目

sudo mkdir -p /var/www/site1 /var/www/site2 /var/www/site3
sudo chown -R $USER:$USER /var/www/site*

将各网站代码分别放入对应目录(如 site1 放 React 构建产物,site2 放 WordPress,site3 放 Flask 应用)。

3️⃣ 配置 Nginx 虚拟主机

编辑 /etc/nginx/sites-available/default(或新建独立配置文件):

# site1.example.com — 静态站或 Node.js 反向X_X
server {
    listen 80;
    server_name site1.example.com www.site1.example.com;

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

    # 若是 Node.js 后端(如 Express),需反向X_X到本地端口
    # location /api {
    #     proxy_pass http://localhost:3000;
    #     proxy_set_header Host $host;
    # }
}

# site2.example.org — PHP 应用(如 WordPress)
server {
    listen 80;
    server_name site2.example.org;

    root /var/www/site2/public_html;
    index index.php;

    location ~ .php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

# site3.net — Go/其他语言(假设运行在 8080)
server {
    listen 80;
    server_name site3.net;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

💡 提示:

  • 每个 server 块必须指定唯一的 server_name(域名);
  • 非 Web 服务(如 API、后台)可通过 proxy_pass 转发到本地进程(如 node app.jspython app.py./go-app);
  • 使用 systemctl restart nginx 重启生效。

4️⃣ 启用配置并测试

sudo ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/
sudo nginx -t          # 检查语法错误
sudo systemctl reload nginx

5️⃣ 域名解析 & HTTPS(可选但推荐)

  • 在 DNS 服务商处为各域名添加 A 记录 指向服务器公网 IP;
  • 使用 Let’s Encrypt 免费证书(推荐 Certbot):
    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d site1.example.com -d site2.example.org -d site3.net

    Certbot 会自动更新 Nginx 配置并设置 HTTP→HTTPS 重定向。

6️⃣ 守护进程管理(关键!)

轻量服务器资源有限,务必用 PM2/Supervisor 等保活应用:

  • Node.jsnpm install -g pm2pm2 start app.js --name site1
  • Pythonpip install supervisor → 配置 /etc/supervisor/conf.d/site3.conf
  • 通用脚本:用 systemd 创建 .service 文件(更稳定)

示例 site3.service

[Unit]
Description=Site3 Go App
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/site3
ExecStart=/usr/local/bin/go-app
Restart=always

[Install]
WantedBy=multi-user.target

sudo systemctl enable site3 && sudo systemctl start site3


⚠️ 注意事项(轻量机优化)

问题 解决方案
内存不足(<1GB) 关闭不必要的服务;用 swap 分区;限制 PHP-FPM 进程数 (pm.max_children = 5)
带宽受限 启用 Gzip/Brotli 压缩;静态资源加 CDN(如 Cloudflare);图片转 WebP
单点故障 定期备份数据库+代码(rsync 到远程存储);监控 CPU/内存(htop, netdata
安全加固 防火墙:ufw allow 'Nginx Full', ufw deny 22 后改用 SSH 密钥登录

🔁 替代方案对比

方案 优点 缺点 适用场景
Nginx + 多域名 轻量、灵活、原生支持 需手动配反向X_X ✅ 推荐首选
Docker Compose 环境隔离、易迁移 增加资源开销(~200MB RAM) 微服务/复杂依赖
cPanel/Plesk 图形化管理 占用高(≥512MB RAM)、付费 新手但不适合超小机
子目录方式(example.com/site1 无需多域名 SEO 不利、URL 不清晰 ❌ 不推荐用于正式站点

需要我为你提供:

  • 某个具体技术栈的完整部署模板(如 Next.js + WordPress + FastAPI)?
  • Docker 化版本(含 docker-compose.yml)?
  • 自动化部署脚本(Ansible/GitHub Actions)?

欢迎告诉我你的具体需求 😊

云服务器