Tomcat8 踩坑笔记
2019-04-06 本文已影响0人
阿臻同学
tomcat8在Ubuntu中的常用目录结构
- /etc/tomcat8:配置文件目录,主要包含
server.xml
、catalina.properties
、context.xml
、logging.properties
、tomcat-users.xml
、web.xml
。 - /var/lib/tomcat8/webapps:webapps目录,存放tomcat发布的网页、项目。
- /var/log/tomcat8:日志目录,存放tomcat运行时的日志文件。
使用HTTP 80端口、HTTPS 443端口
在<Service name="Catalina">
结构下,将8080修改为80,8443修改为443并添加证书文件和秘密。
如果修改后还是无法启用HTTPS服务:
- 检查服务器防火墙是否开启443端口访问权限:查看云服务器防火墙策略、查看iptable和ufw配置
- 检查Tomcat是否有权限使用443端口:使用
sudo service tomcat8 start
命令启动tomcat
<!-- 8080 修改为80 -->
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="443" />
<!-- 8443 修改为443 -->
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="证书文件"
keystorePass="证书密码"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"
clientAuth="false" sslProtocol="TLS" />
配置80端口自动跳转到443端口:
- 在
server.xml
文件中,在80端口的Connector中修改:redirectPort="443
(如上述代码所示) - 在
web.xml
文件中,在</welcome-file-list>
后添加如下字段:
<security-constraint>
<!-- Authorization setting for SSL -->
<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>
IDEA发布到服务器tomcat
- 新建运行配置时,选择
Tomcat Server
中的Remote
- 修改
Tomcat Server Setting
修改Tomcat Server Setting - 添加
Host
设置
添加Host设置 - 添加
Deployment
设置
添加Deployment设置
IDEA发布Spring Boot项目到服务器Tomcat时无资源文件导致网页404
原因
Spring Boot中发布到外部Tomcat容器所需的操作和配置与传统J2EE不同:
Spring Boot中可以通过@SpringBootApplication
注解使用jar包部署运行,且项目结构中没有WEB-INF
等常见于传统J2EE开发中的目录,项目的静态HTML、JS等资源在src\main\resources\static
下,需要在pom文件中添加以下依赖后用于支持在外部tomcat中运行:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
现象
在网页中访问相关页面或资源时会404。
检查打包发布的文件时,并没有发现HTML等资源文件,只有class、jar这些代码文件。
解决
在项目结构中添加tomcat相关的依赖:
添加tomcat依赖