配置tomcat监听80端口、配置tomcat虚拟机、tomcat日志

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

配置tomcat监听80端口

tomcat 监听的是8080端口,如果想要直接访问,不加8080端口(默认输入一个IP或者域名,访问80端口时是可以省略IP后端口号的)就需要配置tomcat监听80端口,tomcat是支持端口自定义的。

  • 编辑tomcat 配置文件

    [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
    ......
    <Connector port="80" protocol="HTTP/1.1" // 将这里的8080改成80
    connectionTimeout="20000"
    redirectPort="8443" />
    ...... 
    // 配置文件75行

  • 重启tomcat 服务

    [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    // 关闭tomcat 服务

    [root@localhost ~]# /usr/local/tomcat/bin/startup.sh 
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    // 开启tomcat 服务

    // 因为tomcat 不支持restart,所以只能先关闭再启动

  • 查看服务状态

    [root@localhost ~]# netstat -lntp | grep java
    tcp6 0 0 :::80 ::: LISTEN 2622/java 
    tcp6 0 0 127.0.0.1:8005 :::
     LISTEN 2622/java 
    tcp6 0 0 :::8009 :::* LISTEN 2622/java 
    [root@localhost ~]# ps aux | grep tomcat
    root 2622 1.2 4.1 803536 77772 pts/0 Sl 21:20 0:02 /usr/local/jdk1.8/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
    root 2673 0.0 0.0 112680 972 pts/0 S+ 21:23 0:00 grep --color=auto tomcat

    // 如果重新启动后tomcat 还没有占用80端口,说明80端口已经被占用。
    // 使用命令 netstat -lntp | grep 80,查看哪个服务占用了80端口。
    // 将占用80 端口的服务停止,再重启tomcat即可。
    // 在实际线上的生产环境中,如果nginx占用80端口的话就不能直接停掉nginx,这时可以让nginx代理tomcat了,即80代理8080.

// tomcat启动后,8005端口启动需要一点时间,在8005端口没有启动之前访问tomcat页面会很慢。
p4oPs0.md.jpg

配置tomcat 虚拟主机

tomcat和apache、nginx一样,都支持虚拟主机配置。每个虚拟主机配置文件就是一台服务器,支持一个IP下可以访问多个域名,每个域名代表一个网站。所以一台服务器上可以配置多个网站。

  • 查看 tomcat 配置文件

    [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml 
    // 下面为一个虚拟主机的配置:
    ......
    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true">

    <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    
    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            // 日志相关配置

    </Host>
    ......
    // name 定义域名。
    // appBase 表示war包(应用)的目录在哪里
    // unpackWARs 表示是否自动解压war这个包。
    // autoDeploy 如果此项设置为true,表示tomcat服务处于运行状态,能够检测appbase下的文件,如果有新的web应用加入进来,会自动发布这个web应用

  • 搭建了一个tomcat,想要使用tomcat去跑一个网站。首先应用不能是一个传统所谓的目录(Apache,nginx访问网站,首先需要指定一个目录,目录里存放着PHP文件或者是html的文件,然后去访问),tomcat需要提供一个WAR的包,就是一个压缩包,这个压缩包里面包含着运行这个网站的一些文件,包括配置,js代码,数据库相关的等等,都需要打包成war这种文件,而这个文件需要放置到 webapps 里面。

  • 如果不定义appbase,不想要war存在,可以定义一个目录,目录里放网站的程序,这个相当于把war包解压到一个目录中。

  • 增加虚拟主机:

    [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml 
    <Host name="www.123.cn" appBase=""
    // 域名为www.123.cn,appbase后为空,就不会与后面的docBase相互干扰
    unpackWARs= "true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
    // 自定义站点路径,不使用自动安装war的方式
    </Host>
    // 如果出现404问题,可能是appbase或者docbase定义错误

  • docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。

  • appBase为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录

  • 测试准备

    为了方便测试,下载一个zrlog(Java写的blog站点应用,轻量),zrlog实际就是一个war包。

    先暂时将war包下载到src目录下:
    [root@localhost ~]# cd /usr/local/src
    [root@localhost src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

    appbase支持自动解压,所以直接将war包拷贝到/usr/local/tomcat/webapps/目录下:
    [root@localhost src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
    [root@localhost src]# ls /usr/local/tomcat/webapps/
    docs examples host-manager manager ROOT zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war

    // 将war包拷贝到/usr/local/tomcat/webapps/目录下之后,包会自动解压。(前提是tomcat正常启动。)

    重命名war包的文件名:
    [root@localhost webapps]# mv zrlog-1.7.1-baaecb9-release zrlog

    [root@localhost webapps]# ls
    docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war

    [root@localhost webapps]# rm zrlog-1.7.1-baaecb9-release.war 
    rm:是否删除普通文件 "zrlog-1.7.1-baaecb9-release.war"?y

    [root@localhost webapps]# ls
    docs examples host-manager manager ROOT zrlog

    // 先将/usr/local/tomcat/webapps/目录下的zrlog-1.7.1-baaecb9-release 文件夹改名为zrlog,然后再将war包删除。
    // 一但重命名或删除war包解压后的包的文件时,war包就会在解压出一个文件夹。
    // 删除war包时,其解压出来的文件夹也同时会被删除。

  • 测试

用浏览器访问192.168.159.131/zrlog

p4xJxO.jpg

出现安装向导,这是一个配置数据库的过程。

  • 创建一个zrlog用户

    进入到数据库中,在数据库中创建一个zrlog数据库:
    [root@localhost mysql]# mysql -uroot -p
    Enter password: 
    ......

    MySQL > create database zrlog;
    Query OK, 1 row affected (0.00 sec)
    // 创建一个zrlog数据库;

    MySQL > grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '159820';
    Query OK, 0 rows affected (0.00 sec)
    // 创建一个zrlog用户

    MySQL > quit
    Bye

    // 使用zrlog用户登录
    [root@localhost mysql]# mysql -u zrlog -h127.0.0.1 -p
    Enter password: 
    ......
    // 检查数据库用户
    MySQL > show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | test |
    | zrlog |
    +--------------------+
    3 rows in set (0.00 sec)

    • 使用 zrlog用户信息填写刚才在浏览器中打开的网页
      p52ivT.png
      p52ArF.png

下一步,安装完成点击查看
p52Eb4.md.png

  • 之前想要访问zrlog需要在浏览器中指定IP和目录(192.168.8.132/zrlog),那么如何才能输入IP直接访问该目录呢?

    查看虚拟主机docBase 的路径:
    [root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml 
    ......
    <Host name="www.123.cn" appBase=""
    unpackWARs= "true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
    </Host>
    ......

    //docBase 定义的目录为:/data/wwwroot/123.cn

    将/usr/local/tomcat/webapps/zrlog 中的所有文件移动到 /data/wwwroot/123.cn/目录下
    [root@localhost webapps]# mkdir /data/wwwroot/123.cn
    [root@localhost webapps]# mv /usr/local/tomcat/webapps/* /data/wwwroot/123.cn/

    重启tomcat服务:
    [root@localhost webapps]# /usr/local/tomcat/bin/shutdown.sh 
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    [root@localhost webapps]# /usr/local/tomcat/bin/startup.sh 
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

    ping www.123.cn 看ip是否为虚拟机ip,如果是的话现在就可以访问了。

  • 使用www.123.cn 访问:

    需先修改本地hosts文件
    p54xVU.png

tomcat日志

tomcat日志目录:
/usr/local/tomcat/logs
[root@localhost webapps]# ls /usr/local/tomcat/logs
catalina.2018-01-23.log  host-manager.2018-01-23.log  localhost_access_log.2018-01-23.txt
catalina.out             localhost.2018-01-23.log     manager.2018-01-23.log

// tomcat日志文件总的有4类
  • catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。 // 关注错误日志就行。

  • catalina.2017-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。

  • host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。

  • localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。

  • 访问日志默认不会生成,需要在server.xml中配置一下。

  • 日志配置文件

    [root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml 
    ......
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
    ......
    // 配置文件中valve为日志文件配置

    // prefix定义访问日志的前缀;
    // suffix定义日志的后缀;
    // pattern定义日志格式。
    // 新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个localhost.日期.log日志,错误日志会统一记录到catalina.out中。关于Tomcat日志,你最需要关注catalina.out,当出现问题时,我们应该第一想到去查看它。


本文转自 豆渣锅 51CTO博客,原文链接:http://blog.51cto.com/754599082/2064144
相关文章
|
6月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
484 0
|
7月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1259 5
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1216 0
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
237 0
|
11月前
|
Java 应用服务中间件
多项目分接口:在同一Tomcat下使用不同的端口号访问不同的项目。
总而言之,要在同一Tomcat服务器下使用不同端口访问不同项目,关键是通过对server.xml文件的配置创建多个 `<Service>`实例和相应的虚拟主机。这种方法既实现了项目隔离,也有助于优化资源利用率。通过遵循本文的详细说明,很容易地就能满足需求实现多项目分接口。
445 38
|
10月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1142 4
|
9月前
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
11月前
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
2018 16
|
11月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
606 11
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
325 22