今天因为要pip一个库于准备安装一下python3,然后自己在命令窗python-v的时候发现居然有个python2,于是想着升级就顺带把python2删掉了(rpm一波删光了python2和yum不要太迅速。。)
后面在部署一个项目想开启端口的时候发现防火墙失效了!Failed to start firewalld报错Job for firewalld.service failed because the control process exited with error。然后yum指令报错No module named yum。这一下给我搞晕了。
看到网上大多数关于firewalld失效的解决方案是说因为升级了python,导致原本python版本的指向出错,修改相关文件即将firewalld和firewall-cmd第一行调用的python改为系统的python即可解决。具体方式是vi /usr/bin/firewall-offline-cmd和/usr/sbin/firewalld 里面的第一行Python指向,将两个文件第一行的 #!/usr/bin/python -Es 改成 #!/usr/bin/python2.7 -Es 。
我尝试后发现没有效果,估计是因为我不是升级python而是删除了系统原python导致的问题。
在我使用systemctl start firewalld命令时,提示这类相关的模块缺失。
Traceback (most recent call last):
File "/usr/sbin/firewalld", line 29, in <module>
import dbus
ImportError: No module named dbus
于是查阅文档,发现说是要安装python-gobject和python-firewall,即yum install python-gobject -y 和yum install python-firewall -y就可解决问题(确实如此)。
但是在yum时提示我No module named yum,我想卧槽这yum不被我删了吗?
于是卸载现有python2以及yum(之前参考一些文章重下的,但是无效),根据自己的版本,在官网安装包库里找相关python2和yum的安装包(注意要和自己的linux版本一致,不然可能会出现一些小问题)。
官网地址:Index of /https://vault.centos.org/以下是centos7.3.1611的相关python2和yum安装。
### 安装python2
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/python-2.7.5-48.el7.x86_64.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/python-devel-2.7.5-48.el7.x86_64.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/python-libs-2.7.5-48.el7.x86_64.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/python-pycurl-7.19.0-19.el7.x86_64.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/python-urlgrabber-3.10-8.el7.noarch.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/rpm-python-4.11.3-21.el7.x86_64.rpm
### 安装yum
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/yum-3.4.3-150.el7.centos.noarch.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
rpm -ivh --nodeps http://vault.centos.org/7.3.1611/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm
安装完成之后python --version和yum查看一下,发现没问题了。继续上面yum install python-gobject -y 和yum install python-firewall -y的步骤。
安装完成后使用命令systemctl start firewalld,发现成功了!使用添加端口命令firewall-cmd --add-port=8080/tcp --permanent,返回success。至此问题解决。
最后贴一下firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
查看开放的端口:firewall-cmd --list-ports
添加端口:firewall-cmd --add-port=8080/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
防火墙重新加载:firewall-cmd --reload
参考文章:
2021年CentOS7关于Firewalld防火墙失效报错问题处理_赡养的博客-CSDN博客
linux误删系统自带python2.7, 导致yum不可用_JasonZ_1的博客-CSDN博客_linux误删python2
最全解决方案:Failed to start firewalld - dynamic firewall daemon_轩+1的博客-CSDN博客