Linux基础——Web(五)Tomcat

程序语言

应用级:java(解释器:jdk

脚本级:shellrubyperllua

如果人的语言为0,机器语言为200

脚本级语言过程就是:0----> 200

应用级:先编译,后解释。

0----中间型语言100(编译)----(解释)----机器语言200

0-100在客户端,100-200在服务端,相当于只用了脚本级的一半时间,所以Java效率更高。而在客户端是编译的过程,服务端是解释的过程。

Java的编译实际上是在开发的客户端上完成的。当开发给我们代码的时候,实际上已经完成了编译的过程。我们放置于服务器上,通过tomcat平台启动的时候,tomcat完成的是中间代码解释成机器代码的过程,时间短,运行效率高。

0-200这个过程是在服务器上完成解析的,我们将phpshell脚本放到服务器上,通过启动进程,来完成解析。在服务器上是一行一行进行解析的,因此,对于php代码来说,如果我们突然更换了php代码文件,并不需要重启php进程,因为php进程在解析的时候,会重新读取硬盘上的php代码。

但是JAVA运行在封闭的JVM容器环境中,JAVA的类文件是一次性被读取到JVM进程中的,就算类文件更新,JAVA也不会重启读取,因此,我们更新服务端的JAVA代码,必须重启JVM进程,也就是重启tomcat

Java

体系

开发编写的java配置源码和java公共函数一起进行编译,编译过后就成了类文件。

Tomcat也叫做java虚拟包,也就是JVM

tomcat启动的时候,内存中会生成一个叫做JVM的进程。JVM是一种容器化的进程。这个进程内部和外部的系统环境是完全隔开的,内部无法沟通外部的系统环境。这就导致程序的依赖包如果在JVM外面是不会对程序起到任何作用的。所以,Java进程的依赖包都要放到JVM里。

Maven:下载并打包。

装载后,maven通过pom.xml文件在互联网下载依赖程序,然后将依赖程序和class类文件整理打包,将其变成xxx.war,也就是war;不需要下载依赖的,打出的包叫做xxx.jar,称为微服务。

运维将war包放到服务器中,启动tomcat后,内存就生成了JVM进程。JVM进程分为两部分,一个叫做class loader类装载器,另一个叫做执行引擎

(解释器)。其中的类文件被装到类装载器里;依赖包别运行在JVM的环境里;OS系统的公共类也会装载到类装载器里。执行引擎对代码进行解释,解释后,就变成了二进制程序,也就是机器码,然后计算机就可以执行了。

软件的体系架构

软件有两种架构:B/SWeb/Server)和C/SClient/Server

JAVA体系的架构:C/S

JAVAB/S架构:前置原理

Javajsp中途经过了一个servelet格式,其作用是通过JAVA代码封装了html语言。

JSP:(java+server+pages):运行于服务端的java程序,遵循servlet格式标

准。

JS:(javascript):网页中的脚本语言(html管理内容,css管理位置,js管理动作)

Java代码被封装进了html语言,网页变成了JSP,整个流程就变成了:

index.jsp -- > Servlet(转译器) -- > index_jsp.javaC(编译器) -- > index_jsp.class -- > class loader(加载器) -- > JVM

定义

Tomcat服务器是一个免费的开发源代码的Web应用服务器,属于轻量级应用服务器,应用于中小型系统和并发访问用户不是很多的场合下。

TomcatNginxApache(httpd)lighttpdWeb服务器一样,具有处理HTML页面的功能,另外他还是一个ServletJSP容器,独立的servlet容器是Tomcat默认模式。不过Tomcat处理静态HTML能力不如Nginx/Apache服务器。

Servlet:小服务程序或服务连接器,用Java编写的服务器端程序,具有独立

于平台和协议的特性,主要功能在于交互地浏览和生成数据,生成动态Web内容。

JSPJava服务器页面,是一种动态网页技术标准。JSP在传统网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文件,后缀为*.jsp。用JSP开发地Web应用是跨平台地,既能在Linux下运行,也能在其他操作系统上运行。

TOMCAT

架构解析

Tomcat启动产生JVM进程,JVM进程分为classloader和执行引擎,其中执行引擎中放的是虚拟网站。Tomcat对应server标签,JVM对应service标签,执行引擎对应engine标签,虚拟网站对应host标签。

Tomcat主配置文件

Server.xml

Server.xml组件类别:

顶级组件:位于整个配置的顶层,如:server

容器类组件:可以包含其他的组件,如:serviceenginehostcontext

连接器组件:来凝结用户请求到tomcat,如:connector

被嵌套类组件:位于一个容器中,不能包含其他组件,如:Valvelogger

组件详解

主配置文件注释:

Tomcat定义了tomcat的管理端口:8005端口收到的SHUTDOWN字段就会关闭tomcat

service中,监听端口,8080HTTP协议,8009AJP(工作中一般注释掉)

对外监听8080端口然后跳转到8443

当我们安装jdk后,会自动生成jar命令,用来解包,同tar包解包方式相同,jar xf war包。一般重启tomcat会自动解包。

网页路径

如果tomcat一个网页连接为:

http://192.168.200.6:8080/memtest/meminfo.jsp

要想实现使用:

http:/192.168.200.6:8080/meminfo.jsp,那么只需将meminfo.jsp网页放到ROOT目录即可,该目录tomcat的根目录,可以直接放置jsp代码

所以ROOT目录即便为空,也是不能删除的。

Tomcat集群

同一台服务器启动多个tomcat的方法

Nginx处理静态网页,php处理动态网页

Tomcat动态静态网页都可以处理,但是处理静态很慢,因此我们通常也是LNMP的架构。

Nginx是通过proxy_pass(反向代理)推送到8080端口。

Jpress就是java版本的wordpress

Tomcat

优化

降权启动

telnet管理端口保护

ajp连接端口保护

禁用管理端

Tomcat安装部署

环境

使用x-shell上传压缩包和源码包

1.部署JAVA环境jdk

1.1

[root@02 ~]# tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local

//解压数据包到安装目录

[root@02 ~]# ln -s /usr/local/jdk1.8.0_60 /usr/local/jdk

//优化安装目录

[root@02 ~]# sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile

//修改环境变量

1.2

[root@02 ~]# tail -3 /etc/profile

//查看环境变量配置

1.3

[root@02 ~]# source /etc/profile

//让环境变量立刻生效

1.4

[root@02 ~]# which java

//查看是否存在java命令

[root@02 ~]# java -version

//查看java版本,如果有信息,表示安装成功

2.安装Tomcat

2.1

[root@02 ~]# tar xf apache-tomcat-8.0.27.tar.gz -C /usr/local

//解压tomcat压缩包到安装位置

[root@02 ~]# ln -s /usr/local/apache-tomcat-8.0.27/ /usr/local/tomcat

//优化安装位置

[root@02 ~]# ln -s /usr/local/tomcat/bin/* /usr/bin/

//优化启动脚本到/usr/bin

2.2

[root@02 ~]# echo 'export TOMCAT_HOME=/usr/local/tomcat' >> /etc/profile

//配置tomcat环境变量

[root@02 ~]# source /etc/profile

//让环境变量立即生效

2.3

[root@02 ~]# chown -R root.root /usr/local/jdk/ /usr/local/tomcat/

//更改tomcat配置安装目录属主和属组

2.4

[root@02 ~]# tail -4 /etc/profile

//检查环境变量配置情况

2.5

[root@02 ~]# cd /usr/local/tomcat

//进入tomcat安装目录

[root@02 tomcat]# tree -L 1

//使用树命令查看当前目录内容

2.6

[root@02 tomcat]# cd webapps/

2.7

[root@02 ~]# startup.sh

//启动tomcat

2.8

[root@02 ~]# netstat -antup | grep java

//查看java的启动情况

2.9

[root@02 ~]# service iptables stop

//关闭防火墙

在浏览器导航栏输入IP地址加上8080端口进行IP访问

2.10

[root@02 ~]# cd /usr/local/tomcat/logs

//进入tomcat日志目录

[root@02 logs]# cat catalina.out

//通过catalina.out可以查看tomcat日志

2.11

[root@02 ~]# cd /usr/local/tomcat/conf/

//进入tomcat配置文件目录

Tomcat的主配置文件与普通的主配置文件略有不同,其并非.conf结尾,而是server.xml作为其主配置文件

2.12

[root@02 conf]# vim tomcat-users.xml

//进入tomcat管理用户配置文件进行添加内容

PS这里的username=“tomcat”password=“tomcat”,表示登录的账号和密码为tomcat,要记好,下面登录游览器测试会用,否则将报错。

2.13

[root@02 conf]# tail -4 tomcat-users.xml

//查看后四行

2.14

[root@02 conf]# shutdown.sh

[root@02 conf]# startup.sh

//重启tomcat服务

2.15

在浏览器地址栏输入:http://自己的IP8080/manager/status

输入自己创建的账号和密码,进行登录

3.WEB站点部署

3.1

[root@02 ~]# cp memtest.war /usr/local/tomcat/webapps/

//war包拷贝到webapps目录下

[root@02 ~]# ls /usr/local/tomcat/webapps/

//查看目录中的内容

3.2

[root@02 ~]# startup.sh

//重启tomcat,重启后war包将自动解压

3.3

在浏览器输入http://192.168.200.6:8080/memtest/meminfo.jsp

3.4

自定义默认网站目录

将放在memtest目录的meminfo.jsp网页移动到ROOT目录中,就可以使用

http:192.168.200.6:8080/meminfo.jsp进行访问页面。

ROOTtomcat默认存放网页的根,即便ROOT为空,也不能将其删除。

4.tomcat多实例及集群架构

4.1

[root@02 ~]# cd /usr/local

//进入应用程序安装目录

[root@02 local]# cp -a apache-tomcat-8.0.27 tomcat8_1

[root@02 local]# cp -a apache-tomcat-8.0.27 tomcat8_2

//使用cp命令给apache-tomcat-8.0.27更改名称为tomcat8_1tomcat8_2

4.2

[root@02 local]# mkdir -p /data/www/www/ROOT

//递归创建ROOT目录

[root@02 local]# cp /usr/local/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/

//meminfo.jsp网页文件拷贝到新创建的ROOT目录下

4.3

[root@02 local]#  cat -n /usr/local/tomcat/conf/server.xml | sed -n '22p;69p;123p'

//代行号查看tomcat主配置文件,只看第2269123

[root@02 local]# sed -i '22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"#appBase="/data/www/www"#' /usr/local/tomcat8_1/conf/server.xml

//修改tomcat主配置文件,注意,这里是更改后的tomcat8_1而非tomcat-8.0.27

[root@02 local]# sed -n '22p;69p;123p' /usr/local/tomcat8_1/conf/server.xml

//查看第2269123行被修改后的结果

[root@02 local]# sed -i '22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"#appBase="/data/www/www"#' /usr/local/tomcat8_2/conf/server.xml

//修改tomcat主配置文件,注意,这里是更改后的tomcat8_2而非tomcat-8.0.27

[root@02 local]# sed -n '22p;69p;123p' /usr/local/tomcat8_2/conf/server.xml

//查看第2269123

4.4

[root@02 local]# /usr/local/tomcat8_1/bin/startup.sh

//启动tomcat8_1

[root@02 local]# /usr/local/tomcat8_2/bin/startup.sh

//启动tomcat8_2

4.6

[root@02 local]# netstat -antup | grep java

//查看tomcat启动情况

4.7

在浏览器导航栏输入:http:192.168.200.6:8081/meminfo.jsp

                    http:192.168.200.6:8082/meminfo.jsp

5.nginx+tomcat反向代理集群

5.1

[root@ local]# yum -y install pcre-devel openssl-devel

//安装支持包

[root@ local]# useradd -s /sbin/nologin -M www

//创建程序用户

[root@ local]# tar xf nginx-1.10.2.tar.gz -C /usr/src

//解压压缩包

[root@ local]# cd /usr/src/nginx-1.10.2/

//进入nginx目录

[root@02 nginx-1.10.2]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install

//源码编译

[root@ 02 nginx-1.10.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin

//优化命令路径

[root@ 02 nginx-1.10.2]# /usr/local/nginx/sbin/nginx

//启动nginx

[root@02 local]#  egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf.default > /usr/local/nginx/conf/nginx.conf

//创建配置文件模板

[root@02 conf]# vim nginx.conf

//进入配置文件进行修改

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

upstream web_pools {

server 127.0.0.1:8081;

server 127.0.0.1:8082;

}

server {

listen 80;

server_name localhost;

location / {

root html;

index index.jsp index.html index.htm;

proxy_pass http://web_pools;

}

}

}

[root@02 conf]# nginx -t

//检查配置文件是否有误

[root@02 conf]# nginx

//启动nginx

[root@02 conf]# netstat -antup | grep nginx

//查看nginx启动情况

6.安装jpress

6.1

[root@02 ~]# tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local

//解压压缩包到安装目录

6.2

[root@02 ~]# ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven

//优化安装目录

6.3

[root@02 ~]# vim /etc/profile

//进入环境变量配置文件,手动添加两行美容

[root@02 ~]# tail -2 /etc/profile

//查看环境变量

[root@02 ~]# source /etc/profile

//应用环境变量配置

6.4

[root@02 ~]# mvn -version

//版本检测,出现如下提示,表示成功

6.5

[root@02 ~]# mv jpress-web-newest.war /data/www/www/ROOT/

//移动war包到ROOT目录下

[root@02 ~]# cd /data/www/www/ROOT/

//进入ROOT目录

[root@02 ROOT]# jar xf jpress-web-newest.war

//解压war

6.6

在浏览器栏中输入:http://192.168.200.6/install

6.7

后续的安装需要MYSQL数据库的内容。

7.优化tomcat

安全优化

7.1

降权启动

降权的原则就是利用普通用户来启动tomcattomcat要部署在用户的家目录下。

  1. tomcat程序目录拷贝到普通用户的家目录下
  2. 修改家目录下程序的配置文件(启动端口、检测端口等),并重新指定网页根目录路径。
  3. 递归授权拷贝后的tomcat程序的属主属组为普通用户
  4. su命令切换为普通用户,启动tomcat进程
  5. 此时tomcat进程的权限为普通用户权限
  6. 如过利用/etcrc.local文件配置普通用户程序的开机启动,那么需要利用su -c临时切换身份启动。

7.2

telnet管理端口保护

Tomcat默认通过8005端口来接收SHUTDOWN这个字符串来关闭tomcat进程,但是这非常危险,因此需要修改端口号来防护,否则通过telnet命令可以强行关闭进程

7.3

ajp连接端口保护

7.4

禁用管理端

性能优化

1.

2.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值