昨天把宝塔面板升级了一下。

升级后在面板中看到云服务器内存占用率比较高,虽然进行了释放,但感觉仍有点高,达到了47%,于是就通过宝塔面板把服务器重启了一下,重启后宝塔面板能正常访问,可是网站却访问不了。开始以为是云服务器没有成功重启,通过SSH登录后又重启了一遍,问题仍旧。

由于才接触宝塔面板,对centos系统也不熟,只能通过百度来查找问题答案了。网上优先的答案都是说端口问题,于是又把宝塔面板中的相关端口检查了一下,还特意添加了80端口,到腾讯云上也把安全组中的允许端口选择为ALL,可是站点仍然无法访问。

后来看到了一个答案,提示NGINX服务可能在服务器重启后出问题了。果然,在宝塔面板中看到NGINX服务处于停止状态。点启动服务,却弹出错误

2023/01/03 08:51:27 [emerg] 15603#0: bind() to 0.0.0.0:81 failed (98: Address already in use)

2023/01/03 08:51:27 [emerg] 15603#0: bind() to 0.0.0.0:81 failed (98: Address already in use)

2023/01/03 08:51:27 [emerg] 15603#0: bind() to 0.0.0.0:81 failed (98: Address already in use)

2023/01/03 08:51:27 [emerg] 15603#0: bind() to 0.0.0.0:81 failed (98: Address already in use)

2023/01/03 08:51:27 [emerg] 15603#0: bind() to 0.0.0.0:81 failed (98: Address already in use)

2023/01/03 08:51:27 [emerg] 15603#0: still could not bind()


看来是服务端口81被占用了。

直接上SSH

[root@VM-0-7-centos ~]# lsof -i:81

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

uwsgi   747 root    6u  IPv4  18243      0t0  TCP *:81 (LISTEN)

uwsgi   872 root    6u  IPv4  18243      0t0  TCP *:81 (LISTEN)


或者使用下面的命令查看

[root@VM-0-7-centos ~]# netstat -apn|grep 81

tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      747/uwsgi           

tcp        0      0 172.*.0.*:59516        169.*.0.*:8186      ESTABLISHED 1322/tat_agent      

tcp        0     36 172.*.0.*:22           27.*.194.*:18178      ESTABLISHED 16211/sshd: root@pt 

unix  2      [ ACC ]     STREAM     LISTENING     18178    753/lsmd             /var/run/lsm/ipc/simc

unix  2      [ ]         STREAM     CONNECTED     29381    2452/mysqld          

unix  3      [ ]         STREAM     CONNECTED     18171    758/dbus-daemon      

unix  3      [ ]         STREAM     CONNECTED     28199    2068/master          

unix  3      [ ]         STREAM     CONNECTED     18113    1/systemd            

unix  2      [ ]         STREAM     CONNECTED     59481    6861/php-fpm: pool   

unix  3      [ ]         STREAM     CONNECTED     26381    1413/php-fpm: maste  

unix  3      [ ]         STREAM     CONNECTED     18172    1/systemd            /run/systemd/journal/stdout

unix  2      [ ]         STREAM     CONNECTED     28165    2068/master          

unix  3      [ ]         STREAM     CONNECTED     28198    2068/master


果然81端口目前处于被占用状态,被uwsgi占用了。下面把它杀掉

[root@VM-0-7-centos ~]# kill -9 747

再次确认一下

[root@VM-0-7-centos ~]# netstat -apn|grep 81

tcp        0      0 172.*.0.*:59516        169.*0.*:8186      ESTABLISHED 1322/tat_agent      

tcp        0     36 172.*.0.*:22           27.*.194.*:18178      ESTABLISHED 16211/sshd: root@pt 

unix  2      [ ACC ]     STREAM     LISTENING     18178    753/lsmd             /var/run/lsm/ipc/simc

unix  2      [ ]         STREAM     CONNECTED     29381    2452/mysqld          

unix  3      [ ]         STREAM     CONNECTED     18171    758/dbus-daemon      

unix  3      [ ]         STREAM     CONNECTED     28199    2068/master          

unix  3      [ ]         STREAM     CONNECTED     18113    1/systemd            

unix  2      [ ]         STREAM     CONNECTED     59481    6861/php-fpm: pool   

unix  3      [ ]         STREAM     CONNECTED     26381    1413/php-fpm: maste  

unix  3      [ ]         STREAM     CONNECTED     18172    1/systemd            /run/systemd/journal/stdout

unix  2      [ ]         STREAM     CONNECTED     28165    2068/master          

unix  3      [ ]         STREAM     CONNECTED     28198    2068/master     

81端口成功释放,然后再在宝塔面板中启动NGINX,成功了。

[root@VM-0-7-centos ~]# lsof -i:81

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

nginx   17380 root   13u  IPv4 130087      0t0  TCP *:81 (LISTEN)

nginx   17428  www   13u  IPv4 130087      0t0  TCP *:81 (LISTEN)

[root@VM-0-7-centos ~]# netstat -apn|grep 81

tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      17380/nginx: master 

tcp        0      0 172.*.0.*:59516        169.*.0.*:8186      ESTABLISHED 1322/tat_agent      

tcp        0     36 172.*.0.*:22           27.*.194.*:18178      ESTABLISHED 16211/sshd: root@pt 

unix  2      [ ACC ]     STREAM     LISTENING     18178    753/lsmd             /var/run/lsm/ipc/simc

unix  2      [ ]         STREAM     CONNECTED     29381    2452/mysqld          

unix  3      [ ]         STREAM     CONNECTED     18171    758/dbus-daemon      

unix  3      [ ]         STREAM     CONNECTED     28199    2068/master          

unix  3      [ ]         STREAM     CONNECTED     18113    1/systemd            

unix  2      [ ]         STREAM     CONNECTED     59481    6861/php-fpm: pool   

unix  3      [ ]         STREAM     CONNECTED     26381    1413/php-fpm: maste  

unix  3      [ ]         STREAM     CONNECTED     18172    1/systemd            /run/systemd/journal/stdout

unix  2      [ ]         STREAM     CONNECTED     28165    2068/master          

unix  3      [ ]         STREAM     CONNECTED     28198    2068/master 


真是折腾人啊。


继续普及一下

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

WSGI是一种通信协议。

uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。


发表评论