Linux服务器80端口无法访问问题:
在Linux操作系统下(Ubuntu)撰写好的服务器程序在连接时经常会出现80端口无法访问,卡死在accept之前的情况,如图下图所示。通常按以下步骤排查测试大概率会解决端口无法访问的问题。
排查步骤
一、 连接服务器的用户
二、确定是否开发80端口
三、确定访问地址地址是否正确
四、测试结果
五、解决程序只能运行一次问题
一、 连接服务器的用户
1、通常服务器有root管理员,和其他个人创建用户。但是root权限非常高,在使用时要谨慎谨慎再谨慎!
2、root:root用户可以使用服务器端口范围:1~100端口(尤其是80端口项目,当然这是root特有的)
3、个人创建用户:可以使用除100端口以内的其他端口。
所以在运行服务器程序时先切换到root用户一般能避免一些问题。(下列都是在root环境下运行的命令)
二、确定是否开放80端口
1、查看机器所开放的所有端口号:
firewall-cmd --list-ports
2、在没有80/tcp端口的情况下添加端口号:
firewall-cmd --zone=public --add-port=80/tcp
3、重启防火墙
注意一定要重启防火墙,不然的话你添加的端口不生效,即使再去查看你的端口,依旧不显示
firewall-cmd --reload
在重启防火墙以后再查看端口号如下图,说明80端口已经打开
三、确定访问地址地址是否正确
我们访问端口的时候可以分为这两种情况:
1.服务器ip访问:地址为=服务器ip:端口号
例如:http://192.168.245.xxx:端口号/
2.域名地址访问:域名地址:端口号
例如:http://jcenter.club:端口号/
(注意冒号为英文状态下,而且:80也可以省略)
四、测试结果
通过测试代码可以读取http请求,之后对其做出解析
五、解决程序只能运行一次问题
通常情况下我们写的mini服务器通过外网浏览器连接时响应一次以后仍无反应,此时我我们要查看当前进程PID,要将其杀死后程序才能继续运行。
1.查看当前进程PID
ps aux | grep -i http(程序名)
2.杀死当前进程
kill -9 PID(上图PID为5858)
将进程删除后重新运行即可通过外网浏览器重新连接~