centos7 安装tomcat 及问题处理(No module named 'gi')(Job for firewalld.service failed because the control)

本文详细介绍了在CentOS7系统中安装Tomcat的过程,包括必要的JDK安装、Tomcat下载与解压、8080端口开启及防火墙规则配置。特别针对firewall-cmd命令在Python版本变更后的使用问题给出了解决方案。

安装tomcat需要安装jdk:    centos7 安装jdk 及 配置环境变量 传送门

1、下载tomcat:

最新版本:
https://tomcat.apache.org/download-80.cgi

2、上传到安装目录(xftp)

3、解压所下载的压缩包

tar zxfv apache-tomcat-8.*.**.tar.gz

4、开发8080端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent

错误信息:

[root@hyl bin]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
Traceback (most recent call last):
  File "/usr/bin/firewall-cmd", line 24, in <module>
    from gi.repository import GObject
ModuleNotFoundError: No module named 'gi'

vi /usr/bin/firewall-cmd

第一行更改为之前python版本

#!/usr/bin/python2.7 -Es

开启防火墙

systemctl start firewalld

错误信息

Job for firewalld.service failed because the control process exited with error code. See "systemctl status firewalld.service" and "journalctl -xe" for details

查看信息:

systemctl status firewalld.service

firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since 三 2019-02-20 13:06:15 CST; 1min 11s ago
     Docs: man:firewalld(1)
  Process: 6195 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=203/EXEC)
 Main PID: 6195 (code=exited, status=203/EXEC)

vi /usr/sbin/firewalld

同样修改 第一行  #!/usr/bin/python2.7 -Es

再次启动防护墙:(不显示其他信息 为正常信息)

systemctl status firewalld

开启8080端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent

提示:success

更新防火墙规则

firewall-cmd --reload

查看端口开放状态:

firewall-cmd --zone=public --query-port=8080/tcp

再次通过ip端口访问,出现tomcat默认页面。

 

 

查看所有打开的端口: firewall-cmd --zone=public --list-ports

删除端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent

更新防火墙规则: firewall-cmd --reload

 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

### 可能原因分析 Docker 服务启动失败可能由多种因素引起,以下是常见的几种可能性及其对应的解决方法: #### 原因一:SELinux 不支持 Overlay2 图形驱动 如果系统启用了 SELinux 并且 Docker 使用的是 `overlay2` 存储驱动,则可能会触发错误提示:“Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel”。这种情况下需要调整存储驱动或者禁用 SELinux。 - **解决方案** 可以通过修改 Docker 配置文件来更改默认的存储驱动为 `devicemapper` 或其他兼容选项。编辑 `/etc/docker/daemon.json` 文件并添加如下配置[^2]: ```json { "storage-driver": "devicemapper" } ``` 随后重新加载 Docker 守护进程配置并通过命令重启服务: ```bash sudo systemctl daemon-reload sudo systemctl restart docker.service ``` #### 原因二:Firewall 配置冲突 当 Firewalld 在 Docker 启动前已经运行时,可能导致网络规则不一致从而引发错误。特别是 CentOS 系统上,默认安装firewalld 软件包,在某些场景下会干扰到 Docker 的正常工作流程[^3]。 - **解决方案** 先停止并禁用 firewalld 服务作为临时测试手段查看问题是否得到缓解;如果确认两者存在矛盾关系则考虑长期关闭firewalld或将相关端口加入白名单。 ```bash sudo systemctl stop firewalld sudo systemctl disable firewalld ``` #### 原因三:内核版本过低或其他依赖缺失 部分较新的功能特性要求更高的Linux Kernel 版本支持。例如OverlayFS 功能就需要至少Kernel 4.x 才能够完全发挥其优势。另外还有可能存在一些必要的库文件未被正确安装等情况也会影响整体表现效果。 - **解决方案** 升级操作系统至最新稳定版通常可以解决问题,因为新发行版本往往包含了经过优化改进后的组件集合;当然也可以单独更新kernel 到满足需求的标准之上. 对于CentOS 用户来说执行下面的操作即可完成整个过程: ```bash yum update -y && yum install -y kernel-devel reboot now ``` 以上列举了几种常见情况下的处理办法,具体还需要结合实际情况进一步排查定位根本所在之处. ### 总结代码片段展示如何操作上述提到的一些关键步骤: ```bash # 修改Docker Storage Driver设置 echo '{"storage-driver":"devicemapper"}' | sudo tee /etc/docker/daemon.json >/dev/null sudo systemctl daemon-reload sudo systemctl restart docker.service # 处理Firewalld潜在影响 sudo systemctl stop firewalld sudo systemctl disable firewalld # 升级系统与Kernel(适用于RHEL/CentOS系列) sudo yum update -y sudo yum install -y kernel-devel sudo reboot ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值