2.8.1 服务器配置章 tomcat

Tomcat 是什么

  • Tomcat 是一个 HTTP 服务器
  • Http服务器在市面上有很多实现,最知名的叫Nginx(各个领域上都会用到),但是java圈子中最多的还得是tomcat
  • 网上还有种说法Tomcat 是一个 webapp(就是网站,后端代码+前端代码)的容器 (在计算机中有很多意思,甚至被滥用,比如:c++标准库中的"集合类",称为容器,spring也成为"bean的容器",tomcat也是webapp的容器,docker也是容器,容器就是可以容纳很多东西的物体,tomcat可以部署多个网站)
  • servelt的内容就是依赖tomcat的
  • 最找Apache 是一个开源的http服务器,这个东西越做越好就吸引了很多开源开发者,这些人在一起就构成了一个社区,于是就把这个社区命名成了apache,在这个社区不只apache这个http服务器,还搞了很多知名的程序,比如tomcat ,而且apcha本体不支持java开发网站后端(也没法支持比如cgi,比较蹩脚),于是tomcat就可以使用java更方便的来开发网站,而且tomcat自身也是java写的,因此能跨平台(一个目录文件放linux,mac等都可以)
  • Tomact是绿色软件,不会在你计算机留下东西,只需删了下载目录就好了,由于tomcat是java写的,想要运行tomcat的前提是你的电脑上必须要有jdk
  • 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的 格式.
  • 同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端.
  • HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费, 也是被广泛使用的 HTTP 服务器

目录结构

bin

  • binary 二进制,一般放可执行程序
  • 有一些jar包和一些脚本文件
  • 最重要的脚本文件,startup.bat和startup.sh (bat是windows上的批处理文件,在windows上运行这个就可以启动tomcat sh是linux上的shell脚本,在linux上运行这个文件就能启动tomcat)
  • **脚本:**本质就是编程语言,os上有很多命令,执行一个命令能完成一些工作,有的时候完成一个工作,需要多个命令配合执行,就可以使用脚本把多个要执行的命令给串起来写道一个文件上
  • rem是bat脚本的注释

conf

  • conf就是config就是配置,这里放了tomcat的配置文件
  • 最重要的配置文件是 server.xml , 可以看出tomcat用的是xml的文件做的tomcat的配置文件(xml用成对的标签(key,value键值对)描述tomcat的配置属性)
  • 可以看出tomcat绑定的业务端口号是8080,管理端口是8085,用xml的文件来描述配置文件,很多程序都有配置文件,通过配置来开关/选择/设置某个功能,mysql也有配置文件叫做my.ini (ini是使用=组织的键值对,也是经典的配置文件格式)未来我们还会见到一些配置文件的格式,比如: jason和property和yaml等…
  • **业务端口: **http请求就应该发到这个端口上,用来处理业务
  • **管理端口: **进行一些管理上的操作,比如想要远程控制tomcat关闭可以通过往8085端口发送特殊的命令来做到

LIB

  • 是tomcat运行时依赖的相关库,里面全是jar包,也就是tomcat运行过程中会用到的内容

logs

  • tomcat的日志文件,重点关注
  • 后续debug tomcat的文件时,一个主要的手段就会看日志文件
  • 后续主要关注catlina_log(记录的是你自己打印的日志)localhost_access_log(记录了请求响应)

webapps

  • 放webapp的(方网站的)
  • webapp=网站
  • 一个tomcat上可以有多个网站,就可以把网站代码写好,打包好以后,放到这个目录下,此时就能够加载运行这个网站了

启动服务器

在 bin 目录中, 双击 startup.bat 即可启动 Tomcat 服务器

注意: 在 Windows 上通过 cmd 方式启动 Tomcat 会出现乱码. 但是不影响 Tomcat 的使用.

乱码的原因是 Tomcat 默认按照 UTF-8 的编码方式处理中文. 而 windows 的 cmd 默认是 GBK 编 码.

如果使用 Linux 或者 IDEA 中的终端来启动 Tomcat, 则没有乱码问题. 因此此处的乱码我们暂时不 处理.

后面使用idea或者linux的终端打印就不会乱码了,应为默认utf8

在浏览器中输入 127.0.0.1:8080 即可看到 Tomcat 的默认欢迎页面

如果启动失败怎么办?

可能问题1

最常见的启动失败原因是端口号被占用

Tomcat 启动的时候默认会绑定 8080 和 8005 端口

如果有其他进程已经绑定了这两个端口中的任意一个, 都会导致 Tomcat 不能启动.

在命令行中使用 netstat -ano | findstr 8080 确定看 8080 是否被其他进程绑定, 把对方进程干掉, 再重新启动 Tomcat 一般就可以解决问题.

形如这样的结果说明 8080 端口已经被占用. 占用的进程是 13348 这个进程.

然后就可以在任务管理器中找到这个进程, 并干掉这个进程

可能问题2

  • 如果是直接闪退,可以把文件拖入cmd中运行,这样就不会闪退了,且可以看到报错,可能是找不到CATLINA_HOME 找不到(就是tomcta自己的路径有问题),也可能是JAVA_HOME找不到(JDK路径有问题),需要自己配置环境变量

  • 环境变量: 环境变量操作系统维护一种变量,往往是用于多个进程相互配合的时候,有一些数据需要交互,就可以使用环境变量找到对方资源的位置(本质也可以认为是一种进程通讯的手段)

对服务器的理解

服务器程序

就是一个程序,绑定了一个端口号,客户端通过ip+端口就可以给服务器发请求了

服务器主机

部署了服务器程序,就是个电脑

Tomcat的作用

  • Tomcat 提供了一系列api接口(Sevelet),这些api背后已经把一些基础的工作做好了(比如像处理http协议这样的重复性工作),java程序员著需要调用上诉的api,通过少量代码就可以完成基本的http服务器核心功能
  • Servlet 在20年前的时候是网站开发的主力技术,随着时间推移现在被SpringBoot代替了
  • Spring作为一个框架,底层任然调用了Servlet里面的一些api,熟悉Servelt有助于理解Spring
  • Spring有些接口也会暴露出Servlet的一些影子
  • 学习Servelt不仅仅是学习Servelt api本身,更主要是为了学习"web开发"

Linux部署的一些问题

问题1 .sh是不能运行的

  • 使用sh startup.sh启动tomcat 出现This file is needed to run this program 原因.sh文件都不是可执行文件,于是找到命令:chmod +x *.sh
  • chmod +x *.sh 再次执行 sh catalina.sh通过,然后用sh startup.sh成功启动

问题2 vim复制

在win下ctrl+c复制,在你进入vim编辑器后,先切换成输入状态(即按下I键),再Shift+Insert(有些电脑需要配合上辅助键fn)

部署静态页面

理解 “静态”

  • 静态页面也就是内容始终固定的页面. 即使 用户不同/时间不同/输入的参数不同 , 页面内容也不会发生变 化. (除非网站的开发人员修改源代码, 否则页面内容始终不变).

  • 对应的, 动态页面指的就是 用户不同/时间不同/输入的参数不同, 页面内容会发生变化.

  • 我们写的 HTML, 都是写成固定的内容, 就可以理解成是 “静态页面”.

理解"动态"

  • 页面内容随着用户输入参数不同而发生改变(页面结构相似,也没内容不同)

IDEA选择Maven构建

什么是Maven

  • Maven是java世界中常用的构建工具
  • 一个程序在编写时往往要涉及到第三方库多的一些依赖,另外还需要争对这个写好的程序打包部署
  • Maven存在的意义就是为了方便的进行依赖管理和打包
  • 除了Maven还有一些别的构建工具比如Maven后一个选项Gradle,不过Gradle在安卓后端开发比较用的多,java后端用的比较少
  • Maven类似于python中的pip
  • python中的anaconda不是这种构建工具,anaconda是python把一些机器学习相关的库打包到一起了,机器学习的库,广泛用到c++,直接使用pip安装会调用你本地的c++环境对库的代码进行编译(不过你电脑的c++环境不一定能编译出来,linux的c++环境更容易部署),而anaconda是大佬给你下载打包好了,你直接用就好
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Ap0stoL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值