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服务:

  1. 检查服务器防火墙是否开启443端口访问权限:查看云服务器防火墙策略、查看iptable和ufw配置
  2. 检查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端口:

  1. 在server.xml文件中,在80端口的Connector中修改:redirectPort="443(如上述代码所示)
  2. 在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

  1. 新建运行配置时,选择Tomcat Server中的Remote
  2. 修改Tomcat Server Setting
    修改Tomcat Server Setting
  3. 添加Host设置
    添加Host设置
  4. 添加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依赖