centos 7.9安装tomcat,并实现开机自启

1、先安装jdk

这里以open-jdk11为例

复制代码
sudo yum install java-11-openjdk-devel -y

验证jdk的安装

复制代码
java -version
javac -version

确认输出显示安装了正确的 Java 版本。

2、创建 Tomcat 用户和组

创建一个专门用于运行 Tomcat 的系统用户,提高安全性。

复制代码
sudo groupadd tomcat
sudo useradd -M -s /bin/nologin -g tomcat tomcat
  • -M: 不创建家目录。
  • -s /bin/nologin: 禁止该用户登录 shell。
  • -g tomcat: 将该用户加入 tomcat 组。

3、下载并配置 Tomcat

将把 Tomcat 安装到 /opt/tomcat 目录下。

复制代码
cd /opt

4、下载tomcat包

访问官网,找到对应的版本进行下载,放到opt下,然后开始解压

复制代码
sudo tar -xf apache-tomcat-9.0.87.tar.gz

sudo mv apache-tomcat-9.0.87 tomcat

将 Tomcat 目录的所有权授予 tomcat 用户和组,并确保脚本可执行。

复制代码
sudo chown -R tomcat:tomcat /opt/tomcat
sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh'

配置防火墙

Tomcat 默认监听 8080 端口。需要开放此端口以便外部访问。

复制代码
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

5、创建 Systemd 服务实现开机自启

创建服务文件:

复制代码
sudo vi /etc/systemd/system/tomcat.service

粘贴以下内容到文件中:

(请注意 JAVA_HOME 的路径,确保与您安装的 Java 版本路径一致。如果安装的是 OpenJDK 1.8,通常路径是 /usr/lib/jvm/java-1.8.0-openjdk/usr/lib/jvm/jre-1.8.0-openjdk;如果是 OpenJDK 11,则是 /usr/lib/jvm/java-11-openjdk。)

复制代码
[Unit]
Description=Apache Tomcat Web Application Server
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
# 如果您安装的是 Java 11,请修改为:
# Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
Environment=CATALINA_PID=/opt/tomcat/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

重新加载 Systemd 配置:

复制代码
sudo systemctl daemon-reload

启动 Tomcat 服务:

复制代码
sudo systemctl start tomcat

检查 Tomcat 服务状态:

复制代码
sudo systemctl status tomcat

设置 Tomcat 开机自启:

复制代码
sudo systemctl enable tomcat

这会在系统启动时自动启动 Tomcat 服务。

相关推荐
夏天是冰红茶13 分钟前
使用Docker将PyQt深度学习项目打包成镜像
运维·docker·容器
落日漫游39 分钟前
InnoDB:MySQL高性能事务引擎详解
运维·sql
龙门吹雪42 分钟前
Docker 安装 canal 详细步骤
运维·docker·容器·canal·mysql binlog 日志·增量数据订阅消费
椒盐螺丝钉42 分钟前
TypeScript类型兼容性
运维·前端·typescript
雪饼android之路1 小时前
【Android】 android suspend/resume总结(3)
android·linux
风跟我说过她1 小时前
Hadoop HA (高可用) 配置与操作指南
大数据·hadoop·分布式·zookeeper·centos
老黄编程1 小时前
ubuntu如何查看一个内核模块被什么模块依赖(内核模块信息常用命令)?
linux·运维·ubuntu
知北游天2 小时前
Linux网络:使用UDP实现网络通信(服务端&&客户端)
linux·网络·udp
半桔2 小时前
【网络编程】TCP 粘包处理:手动序列化反序列化与报头封装的完整方案
linux·网络·c++·网络协议·tcp/ip
Freed&2 小时前
Ansible 生产级自动化指南:Playbook、Handlers、Jinja2 全解析
运维·自动化·ansible