如何在腾讯云轻量服务器上配置多个服务共存?

在腾讯云轻量应用服务器(Lighthouse)上配置多个服务共存,核心思路是:合理分配端口、使用反向X_X统一入口、隔离运行环境。以下是具体操作步骤和最佳实践:


一、规划服务与端口

每个服务需监听唯一端口号(除非通过域名+反向X_X共享 80/443):

  • Web 服务(如 Nginx/Apache):80/443
  • 后端 API(如 Node.js/Python/Go):非标准端口(如 3000、8080、5000)
  • 数据库(MySQL/Redis):默认端口(3306、6379),建议仅本地访问或绑定内网 IP
  • 其他服务(如 SSH、监控):保持默认或自定义

✅ 安全提示:避免将数据库/中间件直接暴露在公网,仅允许应用服务器或特定 IP 访问。


二、安装并配置各服务示例

1. 部署前端 + 后端(以 Nginx + Node.js + MySQL 为例)

(1)安装基础依赖
# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装 Nginx
sudo apt install nginx -y

# 安装 Node.js(示例 v20 LTS)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs -y

# 安装 MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation
(2)启动后端服务(Node.js)

创建 app.js

const express = require('express');
const app = express();
app.listen(3000, '127.0.0.1', () => { // 仅本地监听
  console.log('API running on http://localhost:3000');
});

用 PM2 守护进程:

npm install pm2 -g
pm2 start app.js --name my-api
pm2 save
pm2 startup
(3)配置 Nginx 作为反向X_X

编辑 /etc/nginx/sites-available/default

server {
    listen 80;
    server_name your-domain.com www.your-domain.com; # 替换为你的域名

    location / {
        root /var/www/html;  # 静态文件路径
        index index.html;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 可选:HTTPS(配合 Let's Encrypt)
    # ...
}

启用配置并重启:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
(4)配置数据库访问

修改 /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1  # 仅允许本地连接

重启 MySQL:

sudo systemctl restart mysql

在应用代码中连接时指定 localhost 而非公网 IP。


三、防火墙与安全组配置

1. 腾讯云轻量服务器控制台 → 安全组

添加规则(按最小权限原则): 协议 端口范围 来源 IP 说明
TCP 80 0.0.0.0/0 HTTP
TCP 443 0.0.0.0/0 HTTPS
TCP 22 你的办公 IP SSH(限制来源更安全)
TCP 3306 禁止开放 数据库不对外暴露

⚠️ 切勿将 3306、6379 等端口对 0.0.0.0/0 开放!

2. 系统内部防火墙(可选但推荐)

sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from YOUR_IP to any port 22
sudo ufw status

四、进阶优化建议

需求 解决方案
多域名支持 Nginx 中配置多个 server 块,每个对应一个域名
多语言项目共存 不同项目放不同目录,Nginx 用 location 区分路由
自动 SSL 证书 使用 Certbot:sudo certbot --nginx -d your-domain.com
服务崩溃自动重启 所有服务用 systemdPM2 管理
日志集中管理 使用 rsyslog 或 ELK/Loki 收集各服务日志
资源监控 安装 htop, nmon, 或接入腾讯云云监控 Agent

五、验证服务是否共存成功

# 检查端口监听
sudo netstat -tlnp | grep -E ':80|:443|:3000|:3306'

# 测试 API
curl http://localhost:3000/api/health

# 测试网站
curl -H "Host: your-domain.com" http://your-ip/

# 查看 Nginx 状态
sudo systemctl status nginx

通过以上步骤,你可以在单台轻量服务器上安全、稳定地运行多个独立服务。如需进一步简化运维,可考虑使用 Docker 容器化部署(每服务一个容器,通过 docker-compose 编排),实现更彻底的隔离与弹性扩展。

需要我为你生成一份完整的 docker-compose.yml 示例或某类服务的详细配置吗?