linux部署网络服务需四步验证:配置生效、端口监听、服务运行、日志无错;常见问题包括selinux拦截、防火墙规则顺序、云安全组未开、端口被占(错误码98)及socket激活预占。

Linux 上部署网络服务,不是配完就完事——配置生效、端口通不通、服务启没启、日志报什么错,这四步漏掉任何一环,服务都等于没部署。
systemctl start 后 netstat -tlnp 看不到监听端口
常见现象:执行 systemctl start nginx 或 systemctl start sshd 后,netstat -tlnp | grep :22 没输出,或只看到 127.0.0.1:22 而非 *:22。
- 检查服务是否真在运行:
systemctl is-active sshd返回active才算成功启动,failed或inactive说明根本没起来 - 确认配置绑定地址:
sshd_config中的ListenAddress、nginx.conf中的listen指令若写成127.0.0.1:80,外部就无法访问 - SELinux 可能拦截绑定:
ausearch -m avc -ts recent | grep bind查拒绝记录;临时关 SELinux 测试:setenforce 0 -
netstat已逐步被弃用,建议用ss -tlnp替代,更准且默认显示 PID/Program
防火墙放行后仍连不上 Connection refused
错误信息 Connection refused 是 TCP 层明确拒绝连接,说明请求到达了本机,但没有进程在对应端口上监听——和“超时”(timeout)有本质区别。
专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬
- 先排除服务未监听:如上,用
ss -tlnp确认端口确实在 LISTEN 状态 - 确认防火墙规则生效顺序:
iptables -L INPUT -n --line-numbers查看规则位置;REJECT或DROP规则若在ACCEPT前面,照样拦死 - firewalld 用户注意区域(zone):默认是
public,但若服务跑在docker0或自定义网桥上,可能属于trusted区域,得单独加端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent - 云服务器额外检查安全组:本地 iptables/firewalld 再怎么放行,云平台的安全组没开,流量根本进不来
journalctl -u nginx 显示 bind() to 0.0.0.0:80 failed (98: Address already in use)
端口被占是部署冲突高频原因,错误码 98 表示地址已被占用,但不一定是另一个 nginx 在抢。
- 查谁占了端口:
lsof -i :80或ss -tulpn | grep ':80';注意systemd的 socket 激活机制也可能预占端口(见systemctl list-sockets) - 常见“隐形占用”:旧版 nginx 没彻底退出(
ps aux | grep nginx看 worker 进程还在)、apache2默认也监听 80、Docker 容器映射了宿主机 80 端口 - 改配置不如改端口快:临时调试可把 nginx 的
listen 8080,避免动系统服务;生产环境务必查清源头,别靠换端口掩盖问题 - 重启服务前先
systemctl stop nginx,别只靠systemctl restart—— 若原进程卡死,restart 可能失败但不报错
真正麻烦的从来不是“怎么配”,而是“为什么配了没用”。端口、权限、上下文(SELinux/AppArmor)、网络路径(本地防火墙→云安全组→客户端路由),每一层都可能静默拦截。调服务前,先问自己:我看到的是哪一层的反馈?









