实测配置多个服务共用一台公网服务器的端口规划

2025.7.9 杂七杂八 991
33BLOG智能摘要
一台公网服务器运行多个服务时,合理规划端口至关重要。作者通过实战经验,提出按功能分类的端口使用方案,例如Web服务使用80/443为主站,8080为测试环境;数据库分配3306、3307、6379、5432;开发工具使用2222、3000、8081等端口。部署过程中,作者强调需注意云服务商防火墙设置、服务端口冲突等问题,并提供端口占用检查脚本。建议用Excel规划端口、撰写文档,以助后期维护。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

实战笔记:如何让多个服务在一台公网服务器上和平共处?我的端口规划方案

实测配置多个服务共用一台公网服务器的端口规划

大家好,今天想和大家分享一个我最近折腾的真实案例。事情是这样的:我手头只有一台2核4G的云服务器,但需要同时运行Web服务、数据库、Git服务等多个应用。经过一周的折腾和踩坑,终于搞定了这个”一机多用”的方案,下面就把我的经验分享给大家。

1. 为什么需要端口规划?

刚开始我觉得这很简单:每个服务用不同端口不就好了?但实际操作时发现没那么简单。首先,80/443这种常用端口只能给一个服务用;其次,有些服务会默认占用相同端口(比如MySQL和Redis默认都是3306);最重要的是,胡乱分配会导致后期维护极其痛苦。

记得有一次半夜排查问题,因为端口记混了,把生产环境的数据库当测试环境操作了…(别学我)

2. 我的端口分配方案

经过多次调整,我最终采用了这套分类方案:

# Web相关
80/443    → 主网站(Nginx反代)
8080      → 测试环境
8443      → 管理后台

# 数据库
3306      → MySQL主库
3307      → MySQL从库
6379      → Redis
5432      → PostgreSQL

# 开发工具
2222      → SSH备用端口
3000      → Git服务
8081      → CI/CD面板

这个方案有几个优点:

  • 按功能分组,容易记忆
  • 保留了标准端口用于主要服务
  • 为同类服务预留了连续端口

3. 实际部署中的坑

你以为这就完了?Too young!实际部署时我还遇到了这些问题:

防火墙配置: 阿里云/腾讯云的防火墙规则要单独设置,光改服务器iptables没用(别问我怎么知道的)

服务冲突: 有些服务会偷偷占用端口,比如Jenkins默认用8080,正好和我的测试环境冲突。解决方法:

# 查看端口占用
sudo netstat -tulnp | grep 8080

# 修改Jenkins配置
vi /etc/default/jenkins
HTTP_PORT=9090

4. 给新手的建议

如果你也要做类似配置,我的建议是:

  1. 先用Excel做个规划表,标注每个端口的用途
  2. 测试环境先用非标准端口,稳定后再切到80/443
  3. 一定要写文档!三个月后你绝对记不清3307是干嘛的
  4. 考虑用Nginx反代,这样外部只需要暴露80/443

最后分享一个我整理的端口占用检查脚本,保存为check_ports.sh就能用:

#!/bin/bash
echo "正在检查常用端口..."
PORTS=(80 443 3306 6379 8080)
for port in "${PORTS[@]}"; do
  result=$(netstat -tuln | grep ":${port} ")
  [[ -n "$result" ]] && echo "⚠️ 端口 ${port} 被占用: $result"
done
echo "检查完成"

希望这篇实战经验对你有帮助。如果你有更好的方案,欢迎在评论区交流~

评论

  • 这个端口规划写得太实用了,正好最近也要配置服务器,可以直接抄作业了😂

  • 建议加上docker服务的端口管理,现在用容器部署也很常见

  • 半夜操作数据库这个太真实了,我上次也是把测试环境当生产环境清了,差点被开除