Linux系统下安装tomcat
一、前置条件
安装tomcat需要先安装jdk,所以没有安装jdk同学,详见参考文章
二、Linux上安装tomcat
1. 下载Apache tomcat
在左边,可以选择下载各种版本的tomcat。根据服务器操作系统选择下载。Linux操作系统就下载tar.gz包。
我下载的文件名是:apache-tomcat-8.5.37.tar.gz
2. 检查linux是否安装tomcat
输入rpm -qa|grep tomcat
查看下系统信息,确认是32位还是64位:uname -a
3. 上传服务器、解压缩tomcat
使用WinSCP或者Xftp等工具将tar.gz压缩包上传到 /usr/local 目录中,以下操作命令都需要在root账户下操作。
进入目录解压安装包
进入目录:cd /usr/local
解压文件:tar -zxvf apache-tomcat-8.5.37.tar.gz
将目录apache-tomcat-8.5.37重命名为tomcat,方便一些
重命名文件:mv apache-tomcat-8.5.37 tomcat8
4. 配置环境变量
输入:vim /etc/profile 打开配置文件,按 i 进入编辑模式,在profile文件尾部 unset -f pathmunge 后面添加如下内容:
unset i unset -f pathmunge export JAVA_HOME=/usr/local/java/jdk1.8.0_221 export JRE_HOME=${JAVA_HOME}/jre export CATALINA_HOME=/usr/local/tomcat8 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${CATALINA_HOME}/bin export PATH=$PATH:${JAVA_PATH}:$PATH
编辑完之后,按Esc键退出,并输入:wq(小写) 保存,或按 :wq! 强制保存,然后输入以下命令:source /etc/profile 刷新环境配置使profile文件立即生效。
5. 正常启动
运行 /usr/local/tomcat8/bin/startup.sh 就会启动tomcat,在浏览器中访问http://localhost:8080了,能看到如下界面,说明访问成功。
6. 正常关闭
运行 /usr/local/tomcat8/bin/shutdown.sh 就会关闭tomcat
7. 修改tomcat配置
进入 /usr/local/tomcat8/conf 目录修改server.xml中的tomcat端口
运行 vim server.xml,用“/8080”定位到8080端口。如下图:
按 i 进入编辑模式,可以修改端口,默认8080,然后按ESC键退出,并输入:wq(注意有一个英文冒号)保存,或按 :wq! 强制保存。
8. 局域网内无法访问解决办法
访问本地:http://localhost:8080/正确。但局域网内无法访问,而且服务器可ping通。
注意:如果执行 firewall-cmd --zone=public --add-port=3690/tcp --permanent,提示 FirewallD is not running 错误,则说明防火墙未开启。
1. 通过 systemctl status firewalld 查看firewalld状态,发现当前是Active: inactive (dead)状态,即防火墙未开启。
2. 通过 systemctl start firewalld 开启防火墙,没有任何提示即开启成功。
3. 再次通过 systemctl status firewalld 查看firewalld状态,显示running即已开启了。
4. 如果要关闭防火墙设置,可通过 systemctl stop firewalld 这条指令来关闭该功能。
先查看防火墙开放端口列表对于Centos7系统 firewall-cmd --zone=public --list-ports
如果没有8080端口,添加端口
- 如果是firewalld防火墙 (对于Centos7系统),开启防火墙端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent 并且重新加载防火墙 firewall-cmd --reload
- 如果是iptables防火墙 ,执行 vi /etc/sysconfig/iptables 加入下面内容 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
如上配置并重启iptables就可以在局域网内访问8080端口了
在不同Linux系统中,操作指令会有细微的差别,Centos6防火墙相关命令:
service iptables status 查看防火墙状态
service iptables start 开启防火墙
service iptables stop 关闭防火墙
service iptables restart 重启防火墙
对于Centos7系统来说,只有使用下面的指令,才可以对Linux防火墙进行启停。
查看防火墙开放端口列表命令:firewall-cmd --zone=public --list-ports 或 firewall-cmd --list-port 查看某个端口是否开放 firewall -cmd --query-port=8080/tcp 防火墙开放8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent 批量开放区间端口 firewall-cmd --zone=public --add-port=8081-8082/tcp --permanent 防火墙关闭8080端口 firewall-cmd --zone=public --remove-port=8080/tcp --permanent 查看防火墙状态命令:systemctl status firewalld 开启防火墙命令:systemctl start firewalld 关闭防火墙命令:systemctl stop firewalld 禁止防火墙开机自启动命令:systemctl disable firewalld 开启防火窗开机自启动命令:systemctl enable firewalld 重新加载防火墙命令:firewall-cmd --reload
9. 其他一些问题
启动以后,可以利用命令 ps -ef|grep tomcat 查看tomcat是否正常启动。
如果正常启动以后无法访问,可以先不修改8080端口,尝试用8080端口访问。如果可以通过8080端口正常访问,则说明80端口被其他应用占用。
或者使用 netstat -an|grep 8080 命令查看是否有程序占用8080端口。
三、设置tomcat开机自动启动
1. 在 tomcat/bin 目录下面,增加 setenv.sh 配置,服务启动的时候会调用,同时配置java内存参数。
输入命令编辑:vim /usr/local/tomcat/bin/setenv.sh
#add tomcat pid CATALINA_PID="$CATALINA_BASE/tomcat.pid" #add java opts JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
2. 增加tomcat.service,在/usr/lib/systemd/system目录下增加tomcat.service
输入命令编辑:vim /usr/lib/systemd/system/tomcat.service
[Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking Environment='JAVA_HOME=/usr/local/java/jdk1.8.0_221/' Environment='CATALINA_PID=/usr/local/tomcat/tomcat.pid' Environment='CATALINA_HOME=/usr/local/tomcat/' Environment='CATALINA_BASE=/usr/local/tomcat/' Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' PIDFile=/usr/local/tomcat/tomcat.pid ExecStart=/usr/local/tomcat/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
[unit]配置了服务的描述,规定了在network启动之后执行。
[service]配置了环境变量,JAVA_HOME,服务的pid,服务的启动,停止,重启,内存参数。
[install]配置了使用用户。
当需要启动多个tomcat时,复制多个tomcat安装文件在/usr/local/下,如/usr/local/tomcat2,并配置多个tomcat.service 如tomcat2.service,tomcat3.service 在配置中修改对应的路径即可。
因为配置pid,在启动的时候会在tomcat根目录生成tomcat.pid文件,停止之后删除。
同时tomcat在启动时候,执行start不会启动两个tomcat,保证始终只有一个tomcat服务在运行。
多个tomcat可以配置在多个目录下,使用不同的端口,互不影响。
3. 设置开机自启动
systemctl enable tomcat.service
4. 启动tomcat
systemctl start tomcat.service
5. 在浏览器测试(略)
6. 上述步骤操作完成后如果还是访问不了tomcat服务,可以尝试重启一下linux服务器,命令:reboot
systemctl常用命令
其中.service 可以省略
重新加载一下系统服务命令:(修改脚本后操作)
systemctl daemon-reload
查看全部服务命令:
systemctl list-unit-files --type service
查看服务状态
systemctl status name.service
设置开机自启动
systemctl enable name.service
停止开机自启动
systemctl disable name.service
启动服务
systemctl start name.service
停止服务
systemctl stop name.service
重启服务
systemctl restart name.service
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现