浅谈Tomcat并搭建Tomcat服务器(详解)

1、Tomcat简介

Tomcat是用来解析jsp程序的程序,是Apache 软件基金会(Apache Software Foundation)的Jakart项目中的一个核心项目, 由Apache、Sun和其他一些公司及个人共同开发而成。因为Tomcat技术先进、性能稳定、而且免费,成为目前比较流行的Web应用服务器。

在这里插入图片描述

2、Tomcat的安装

Tomcat的安装分为俩个步骤:JDK 的安装和 Tomcat 的安装

  • 安装JDK并配置Java环境

JDK的官网下载地址:https://www.oracle.com/java/technologies/javase-downloads.html

这里下载的是JDK8.0版,jdk-8u181-linux-x64.tar.gz 提取码为QsVf

rpm -qa | grep java					#查找系统中是否有java
java -version						#可以查看java版本信息
yum erase -y java*					#如果有删除旧的版本或不需要的版本

解压安装包并将其放到本地/usr/local下

tar zxvf jdk-8u181-linux-x64.tar.gz
mkdir /usr/local/jdk				#创建jdk的目录用来存放解压后的文件
mv jdk1.8.0_181/ /usr/local/jdk/

修改配置文件(添加环境变量)

vi /etc/bashrc      				#(或者/etc/profile)
	.....							#末尾添加
	export JAVA_HOME=/usr/local/jdk/jdk1.8.0_181
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
	export PATH=${JAVA_HOME}/bin:$PATH
source /etc/bashrc					#source命令使定义的环境变量生效
java -version

显示以下内容,则配置成功
在这里插入图片描述
常见问题:
在这里插入图片描述
当执行完source命令后,执行java -version出现"未找到命令"时,及时查看环境变量是否配置成功!

  • 安装Tomcat

Tomcat的官网地址:https://tomcat.apache.org/download-90.cgi

解压安装包并将其放到本地/usr/local下(这里使用的是Tomcat9.0版 提取码为QsvF

tar zxvf apache-tomcat-9.0.41.tar.gz
mkdir /usr/local/tomcat				#创建tomcat的目录用来存放解压后的文件
mv apache-tomcat-9.0.41 /usr/local/tomcat/
/usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh		#启动Tomcat服务(或使用/usr/local/tomcat/apache-tomcat-9.0.41/bin/catalina.sh start)
lsof -i:8080						#查看8080端口是否启动

在这里插入图片描述

/usr/local/tomcat/apache-tomcat-9.0.41/bin/shutdown.sh		#关闭Tomcat服务(或使用/usr/local/tomcat/apache-tomcat-9.0.41/bin/catalina.sh stop)
ps -ef | grep java											#将Tomcat关闭的彻底点,可以将java运行的进程kill掉
killall -9 进程ID

注:如果没有配置防火墙允许Tomcat通过,最好先关闭防火墙,不然端口不能访问!!

浏览器测试:http://192.168.1.52:8080 (根据个人搭建所用的地址而定),出现tomcat主页面表示Tomcat搭建成功

在这里插入图片描述

3、Tomcat目录结构

解压Tomcat软件包,会出现如下文件:
在这里插入图片描述

目录及文件说明
bin用于启动、关闭Tomcat或者其他功能的脚本(.bat文件 和 .sh文件)
conf用以存放Tomcat相应的配置文件
lib存放web应用能访问的JAR包
logsCatalina和其他Web应用程序的日志文件
webappsWeb应用程序根目录
temp存放tomcat在运行过程中产生的临时文件
work用以产生JSP编译出的Servlet的.java和.class文件
conf/server.xmlTomcat主配置文件
conf/tomcat-users.xmlTomcat管理用户配置文件

README.md、RUNNING.txt、BUILDING.txt、CONTRIBUTING.md、LICENSE、NOTICE、RELEASE-NOTES是Tomcat服务器的一些签证,运行,注意的信息。

4、Tomcat开机自启动

  • 第一种方法:使用daemon的方式

使用daemon方式运行tomcat可以使tomcat不受终端影响,不会因为退出终端而停止运行;可以让tomcat以普通用户身份运行,可以让tomcat在系统启动时自动运行。

Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为可以配置某个普通用户以 Unix 守护进程的方式运行。这样的话,可以很方便地启动 / 停止应用程序。

cd /usr/local/tomcat/apache-tomcat-9.0.41/bin/				#需要编译commons-daemon-native,需要gcc组件(文件位置)
tar zxvf commons-daemon-native.tar.gz    					
cd commons-daemon-1.0.15-native-src/unix   					#跳转到unix下,探测环境并进行编译
./configure   												
make -j4     												
cp jsvc /usr/local/tomcat/apache-tomcat-9.0.41/bin			#将得到的jsvc文件复制到bin下  
vi /usr/local/tomcat/apache-tomcat-9.0.41/bin/daemon.sh 	#(下面的内容放在脚本顶端,否则先调用在定义就不生效了)
    #chkconfig: 2345 80 90      							#声明开机启动的运行级别和优先级
    #description: auto_run        							#描述是否可设置开机启动
    JAVA_HOME=/usr/local/jdk/jdk1.8.0_181 					#指定Java的安装路径
    CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.41    #指定Tomcat的安装路径
cp /usr/lcoal/tomcat/apache-tomcat-9.0.41/bin/daemon.sh /etc/init.d/tomcat 	#将编辑好的daemon.sh文件复制到/etc/init.d/tomcat下
chmod 755 /etc/init.d/tomcat    
service tomcat start 	

注:未创建tomcat用户,启动会报错!!
在这里插入图片描述

useradd -s /sbin/nologin tomcat 							
chown tomcat:tomcat /usr/local/tomcat/ -R  	
service tomcat start 										
lsof -i:8080  
service tomcat stop  	
chkconfig tomcat on 										#设置Tomcat开机启动
chkconfig --list tomcat 									#查看tomcat开机启动信息									
reboot   													#重启测试tomcat是否开机自动启动
  • 第二种方法:通过catalina.sh
vi /usr/local/tomcat/apache-tomcat-9.0.41/bin/catalina.sh	#开头添加
	JAVA_HOME=/usr/local/jdk/jdk1.8.0_181 					
    CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.41    
echo /usr/local/tomcat/apache-tomcat-9.0.41/bin/catalina.sh start >> /etc/rc.d/rc.local
reboot
  • 第三种方法:通过修改系统配置文件
vi /etc/rc.d/rc.local										#开机启动程序,可以在里面添加想在系统启动之后执行的脚本
	JAVA_HOME=/usr/local/jdk/jdk1.8.0_181 					
	/usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh 
chmod +x /etc/rc.d/rc.local
reboot
  • 第四种方法:通过shell脚本实现
vi tomcat.sh
	#!/bin/sh
	#chkconfig: 2345 80 90
	#description: start the tomcat 
	export JAVA_HOME=/usr/local/jdk/jdk1.8.0_181
	export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.41
	case $1 in
	start)
        	echo "Tomcat is Starting......"
        	$CATALINA_HOME/bin/startup.sh
        	sleep 1
        	echo "Tomcat has been Started!!"
        	;;
	stop)
        	echo "Tomcat is Stoping......"
        	$CATALINA_HOME/bin/shutdown.sh
        	sleep 1
        	echo "Tomcat has been Stoped!!"
        	;;
	restart)
        	echo "Tomcat is Restarting......"
        	$CATALINA_HOME/bin/shutdown.sh
        	sleep 1
        	$CATALINA_HOME/bin/startup.sh
        	echo "Tomcat has been Started!!"
        	;;
	*)
        	echo "Usage:tomcat {start|stop|restart}"
	esac
cp tomcat.sh /etc/init.d/tomcat								#将编写好的脚本复制到/etc/init.d/下
chmod +x /etc/init.d/tomcat
chkconfig --add tomcat										#向chkconfig添加 tomcat 服务的管理								
chkconfig tomcat on
chkconfig --list tomcat 
reboot

注:当出现服务tomcat不支持chkconfig时,查看编写的脚本中#chkconfig和#description语句是否正确!!
在这里插入图片描述

4、Tomcat 的SSL加密访问

利用 keytool 工具生成证书文件 tomcat

keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/apache-tomcat-9.0.41/conf/tomcat.keystore -validity 365
参数说明
keytool -genkey自动使用默认的算法生成公钥和私钥
-alias为证书定义一个别名,这里定义为tomcat
-keyalg指定密钥的算法(如:RSA、DSA)
-keystore证书文件的保存路径,证书文件名称是xxx.keystore
-validity证书有效期,默认值是90天

在这里插入图片描述

参数说明
输入密钥库口令需输入大于6个字符的字符串
再次输入新口令再次输入以确认密码无误
您的名字与姓氏是什么?必填项,必须是tomcat部署主机的域名或者IP
你的组织单位名称是什么?可根据个人需求而填,也可回车跳过
您的组织名称是什么?可根据个人需求而填,也可回车跳过
您所在城市或区域名称是什么?可根据个人需求而填,也可回车跳过
您所在的省/市/自治区名称是什么?可根据个人需求而填,也可回车跳过
该单位的双字母国家/地区代码是什么?可根据个人需求而填,也可回车跳过
CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?询问填写信息是否正确,正确输入"y",错误输入"n",重新填写上面的信息;不要回答 yes,如果回答 yes 它会重新在问你一遍
输入 的密钥口令会在tomcat配置文件中使用,建议输入与keystore的密码一致
再次输入新口令再次输入以确认密码无误

生成的证书文件位于定义的路径下
在这里插入图片描述

修改 tomcat 的主配置文件

vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/server.xml							
	...
	<!--																			#将其注释掉
	 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    ...
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"	#启用加密连接配置(指定密钥文件路径和密钥文件密码)
               maxThreads="150" SSLEnabled="true">
         <SSLHostConfig>
               <Certificate certificateKeystoreFile="/usr/local/tomcat/apache-tomcat-9.0.41/conf/tomcat.keystore" certificateKeystorePassword="123456" type="RSA" />
        </SSLHostConfig>
    </Connector>
/usr/local/tomcat/apache-tomcat-9.0.41/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh

浏览器测试:https://192.168.1.52:8443,出现tomcat主页面表示加密成功

在这里插入图片描述

  • 实现 http 跳转到 https

现实项目中客户使用http访问,还是会走http协议,依然是不安全的,没有达到我们的需求,因此就需要实现 http 跳转到 https ,提高安全性

vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/web.xml								#修改web.xml文件(添加如下配置)
	...
	...
	 <security-constraint>
        <web-resource-collection >
                <web-resource-name >SSL</web-resource-name>
                <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
     <security-constraint>
vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/server.xml							#修改配置文件
	...																	
	 <Connector port="8080" protocol="HTTP/1.1"										#使之生效
               connectionTimeout="20000"
               redirectPort="8443" />
    ...
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"	
               maxThreads="150" SSLEnabled="true">
               ...
    </Connector>
/usr/local/tomcat/apache-tomcat-9.0.41/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh								#重启并查看端口

在这里插入图片描述

浏览器测试:输入http://192.168.1.52:8080 跳转到 https://192.168.1.52:8443 表示配置成功

5、Tomcat的其它配置

  • 更改Tomcat默认端口号 8080

有时在工作环境中需要安装多个 tomcat,就需要多个端口号

vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/server.xml
	...
	 <Connector port="8085" protocol="HTTP/1.1"				#将8080端口号改为任意即可
               connectionTimeout="20000"
               redirectPort="8443" />
        
 /usr/local/tomcat/apache-tomcat-9.0.41/bin/shutdown.sh
 /usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh

浏览器测试:http://192.168.1.52:8085,出现 tomcat 主页面表示 tomcat 端口号修改成功

在这里插入图片描述

  • 更改Tomcat默认首页和配置虚拟目录

tomcat 的默认站点路径:/usr/local/tomcat/apache-tomcat-9.0.41/webapps/ROOT/

第一种方法:直接在webapps/ROOT/下添加index.html

 cd /usr/local/tomcat/apache-tomcat-9.0.41/webapps/ROOT/
 mv index.jsp index.jsp.bak
 vi index.html
 vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/web.xml 		#(将index.html修改为自己所创建的;这里我创建的是index,html,所以无需修改)
	...
	<welcome-file-list>
        	<welcome-file>index.html</welcome-file>
        	<welcome-file>index.htm</welcome-file>
        	<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>	
 /usr/local/tomcat/apache-tomcat-9.0.41/bin/shutdown.sh
 /usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh

浏览器测试:http://192.168.1.52:8085,出现自定义的页面则修改成功

在这里插入图片描述

第二种方法:一般有的需要将项目的欢迎页面替换到 tomcat 的主页面,这时就不建议将index.html直接放到ROOT下,需要在webapps下创建一个目录用来存放,这样方便管理

vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/server.xml
	...
	 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context path="web" docBase="/usr/local/tomcat/apache-tomcat-9.0.41/webapps/project" debug="0" reloadable="true"/>
       		...
      </Host>
参数说明
path虚拟目录的名称(只输入ip地址显示页面时,该键值为空);定义一个虚拟目录web
docBase登录tomcat默认的主页所在的目录
reloadablereloadable设置为true表示只要tomcat中的项目有改动tomcat就会自动重新加载编译
 vi /usr/local/tomcat/apache-tomcat-9.0.41/conf/web.xml 		
	...
	<welcome-file-list>
			<welcome-file>web.html</welcome-file>					#web.html位于webapps/project下
        	<welcome-file>index.html</welcome-file>
        	<welcome-file>index.htm</welcome-file>
        	<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>	
 /usr/local/tomcat/apache-tomcat-9.0.41/bin/shutdown.sh
 /usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh

浏览器测试:http://192.168.1.52:8085/web

在这里插入图片描述

6、Tomcat 部署启动脚本

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值