在腾讯云轻量应用服务器(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 |
| 服务崩溃自动重启 | 所有服务用 systemd 或 PM2 管理 |
| 日志集中管理 | 使用 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 示例或某类服务的详细配置吗?
PHPWP博客