本文记录了 在centos7.6系统上部署Tomcat8.5 的方法。
一、下载tomcat
tomcat官网当前仅提供8、9、10 三个版本的软件包下载,获取到下载链接后直接在服务器内执行wget 下载即可。
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.83/bin/apache-tomcat-8.5.83.tar.gz --no-check-certificate
二、安装和tomcat版本对应的Java环境
不同的tomcat版本所需要的Java版本也有所不同,如tomcat8.5 是需要JAVA7或以上版本才可以运行的,具体的版本对比如下表
这里我们选择直接使用yum安装java-1.8.0-openjdk安装包,注:jdk是java软件开发工具包,由于命名问题 jdk1.8=jdk8
yum -y install java-1.8.0-openjdk*
安装完成后可以使用 java -version 命令查看jdk版本
三、安装tomcat
环境部署好之后直接解压tomcat安装包,tomcat无需编译安装,解压后即可使用,为了方便管理,我们将其解压后移动到 /usr/local目录下
tar -xf apache-tomcat-8.5.83.tar.gz #解压tomcat
cp -rp apache-tomcat-8.5.83 /usr/local/tomcat #将解压后的安装包拷贝至 /usr/local/目录下并重命名为tomcat
四、启动tomcat
为方便执行启动和停止命令,将启动和停止脚本以软连接的形式放置在/usr/bin下并重命名
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/tomcat-start #设置启动脚本软连接,并将软连接重命名为tomcat-start
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/tomcat-stop #设置停止脚本软连接,并将软连接重命名为tomcat-stop
tomcat-start #启动tomcat
netstat -anptu | grep java #查询tomcat启动后监听的端口
五、将tomcat监听至80端口、测试
Tomcat的所有配置文件都在conf文件夹中,server.xml是核心配置文件,打开conf文件夹中的server.xml
默认配置如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将8080更改为对应端口即可,此处改为80端口。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
重新启动查看效果
tomcat-stop
tomcat-start
netstat -anptu | grep java
六、为tomcat部署ssl证书。
tomcat 7及以上版本均支持jks及pfx格式的证书,下载时可以自由选择
-
下载证书并设置证书密码
-
在Tomcat安装目录下新建cert目录,将证书文件拷贝到cert目录下。
-
打开Tomcat安装目录>conf文件夹>server.xml文件
方式一:Tomcat服务器自动选择SSL的实现方式。修改SSL连接器的属性为以下内容
在server.xml文件中找到<Connector port=”8443”
标签并进行修改。
原配置
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
修改后配置
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="cert/ssl.jks"
type="RSA" certificateKeystorePassword="1122" />
</SSLHostConfig>
</Connector>
方式二:手动指定SSL的实现方式
tomcat6、8、10 测试有效
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="证书文件全路径" #证书文件全路径
keystorePass="证书密码" #证书密码
clientAuth="false" sslProtocol="TLS"/>
注意事项:
1、方式一可以实现443端口绑定多个证书,但方式二只能绑定一个证书,方式一和方式二的区别在于方式一使用了SSLHostConfig标签,如需配置多个证书时可以在SSLHostConfig 标签处配置证书绑定的域名如 <SSLHostConfig hostName="test.test">,而方式二没有使用该标签直接指定证书,tomcat会在没有指定时默认自动生成SSLHostConfig标签
2、直接在Connector标签下指定证书文件,证书密码,证书类型是可以使用keystoreFile,keystorePass,keystoreType进行指定,但在SSLHostConfig标签下指定证书证书文件,证书密码,证书类型则必须使用全拼certificateKeystoreFile、certificateKeystorePassword、certificateKeystoreType,详情原因请查看tomcat官方文档解释keystoreFile等配置的用法
3、在设置ssl证书时,type和certificateKeystoreType是两种含义,type代表的是证书使用的加密算法如RSA、DSS和EC ,certificateKeystoreType简写为KeystoreType,它代表的是证书文件的类型,如PKCS12和JKS。
4、如不确定证书文件的类型,可以使用 keytool -list -v -keystore testDemo.jks 命令进行查看。
七、重启tomcat并访问验证
killall java
tomcat-start
netstat -anptu|grep java