(一)WEB技术----java服务,JDK,Tomcat部署应用部署,常见部署方式

一. 介绍

Javascript 简称JS,是一种动态的弱类型脚本解释性语言,和HTML、CSS并称三大WEB核心技术,得到了几乎主流
浏览器支持
后台应用架构

  1. 单体架构
    JSP、Servlet
    打包成一个jar、war部署
    服务器有开源的tomcat、jetty。商用的有Jboss、weblogic、websphere、glassfish商用的
  2. Dubbo
    分布式服务框架
    将单体程序分解成多个功能服务模块,模块间使用Dubbo框架提供的高性能RPC通信
    阿里开源贡献给了ASF
    内部协调使用Zookeeper,实现服务注册、服务发现。有服务治理
  3. Spring cloud 微服务
    将单体应用拆分为粒度更小的单一功能服务
    RPC通信
    需要更高的运维水平,服务太多了需要服务治理

1. java介绍

  1. VM虚拟机。字节码运行在JVM之上

  2. Java动态网页技术-----servlet本质就是java程序

  3. jsp(Java Server Pages)
    提供一个HTML,把它变成一个模板,JSP是基于Servlet实现,JSP将表现和逻辑分离。
    逻辑:JSP 先转换为 Servlet的源代码.java文件(Tomcat中使用Jasper转换),然后再编译成.class文件,最后就可以在JVM中运行了

  4. JDK
    JRE:它是Java Runtime Environment缩写,指Java运行时环境, 包含 JVM + Java核心类库----运行用
    JDK:它是Java Development Kit,即 Java 语言的软件开发工具包----开发用

JDK协议是JRL(JavaResearch License)协议

  1. OpenJDK:OpenJDK是Sun公司采用GPL v2协议发布的JDK开源版本

在这里插入图片描述
在这里插入图片描述

2. Tomact介绍

Tomcat仅仅实现了Java EE规范的与Servlet、JSP相关的类库,是JavaEE不完整实现

二. 安装jdk

安装完–验证

yum安装openjdk

Centos中,可以使用

java

在这里插入图片描述
在这里插入图片描述

1. Oracle官网的JDK 8.rpm包

注意centos和oracle两个版本不能在一个机器

官网https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
第三方https://www.jdkdownload.com/
在这里插入图片描述

rpm安装

yum install jdk-8u191-linux-x64.rpm 
java

java -version

在这里插入图片描述

2. 配置环境变量

安装目录为/user/java

ln -sv /usr/local/src/jdk1.8.0_211/ /usr/local/jdk

vi /etc/profile.d/jdk.sh
export HISTTIMEFORMAT="%F %T `whoami` "
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


	生效
. /etc/profile.d/jdk.sh

验证

echo $JAVA_HOME

二进制包安装.tar.gz

在这里插入图片描述

tar xvf 文件.tar.gz
vi /etc/profile.d/jdk.sh
export  JAVA_HOME=/usr/local/jdk
export  JRE_HOME=$JAVA_HOME/jre
export  CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
export  PATH=$PATH:$JAVA_HOME/bin


source /etc/profile.d/jdk.sh

其他步骤同上

windows安装jdk

下载地址
注意先择windows版本的

三. 安装Tomcat(容器)

1. yum安装Tomcat

yum install tomcat tomcat-admin-webapps tomcat-webapps
systemctl start tomcat.service
		  enable

在这里插入图片描述
验证访问ip:8080

在这里插入图片描述
也可以创建/usr/share/tomcat/webapps/ROOT/index.html
再次访问
在这里插入图片描述

2. Apache官网下载Tomcat

http://tomcat.apache.org/
在这里插入图片描述

tar xf apache-tomcat-8.5.42.tar.gz -C /usr/local
cd /usr/local
ln -sv apache-tomcat-8.5.42/ tomcat

cd tomcat
cd bin
./catalina.sh --help   查看帮助
./catalina.sh version 
./catalina.sh start  开启tomcat服务

记住tomcat文件中的bin/catalina.sh是一个服务脚本
./catalina.sh start====./startup.sh
./catalina.sh start====
./shutdown.sh

ss -tanlp 

在这里插入图片描述

在这里插入图片描述
验证访问ip:8080
在这里插入图片描述
也可以创建

echo "hello Tomcat 8.5" > /usr/local/tomcat/webapps/ROOT/index.html

再次访问
在这里插入图片描述

3. 为了安全考虑

为了安全尽可能的将权限缩小

useradd -r java
 
chown -R java.java /usr/local/tomcat/*
	验证一下,先用root关掉服务,在web窗口验证
/usr/local/tomcat/bin/shutdown.sh
		然后用java用户启动服务
su - java -c '/usr/local/tomcat/bin/catalina.sh start'

ps -aux | grep tomcat

4. 目录结构介绍

在这里插入图片描述
配置文件conf

在这里插入图片描述

5. 组件分类

  1. 顶级组件
    Server,代表整个Tomcat容器,
  2. 服务类组件
    Service,组织Engine和Connector,里面只能包含一个Engine
  3. 连接器组件
    Connector,有HTTP、HTTPS、A JP协议的连接器
  4. 容器类
    EngineHostContext都是容器类组件,可以嵌入其它组件,内部配置如何运行应用程序。
  5. 内嵌类
    可以内嵌到其他组件内,valve、logger、realm、loader、manager等。以logger举例,在不同容器组件内定义。
  6. 集群类组件
    listener、cluster

在这里插入图片描述
说明:一个server里面可以有多个service,一个service里面只能有一个engin,一个engin里面可以有多个端口

Server: Tomcat运行的进程实例
Service 用来组织Engine和Connector的关系
Connector 负责客户端的HTTP、HTTPS、AJP等协议的连接。一个Connector只属于某一个Engine
Engine 响应并处理用户请求。一个引擎上可以绑定多Connector
Host 虚拟主机
Context 应用的上下文,配置路径映射path => directory

AJP(Apache Jserv protocol)是一种基于TCP的二进制通讯协议。
核心组件

  1. Tomcat启动一个Server进程。可以启动多个Server,但一般只启动一个
  2. 创建一个Service提供服务。可以创建多个Service,但一般也只创建一个
    每个Service中,是Engine和其连接器Connector的关联配置
  3. 可以为这个Server提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口。其作
    用就是处理来自客户端的不同的连接请求或响应
  4. Service内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host
    Engine对请求头做了分析,将请求发送给相应的虚拟主机
    如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机
    Engine上的缺省虚拟主机可以修改
  5. Host定义虚拟主机,虚拟主机有name名称,通过名称匹配
  6. Context定义应用程序单独的路径映射和配置

在这里插入图片描述
实例
假设来自客户的请求为:http://localhost:8080/test/index.jsp

  1. 浏览器端的请求被发送到服务端端口8080,Tomcat进程监听在此端口上。通过侦听的HTTP/1.1 Connector
    获得此请求。
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的响应
  3. Engine获得请求localhost:8080/test/index.jsp,匹配它所有虚拟主机Host。
  4. Engine匹配到名为localhost的Host。即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机
  5. localhost Host获得请求/test/index.jsp,匹配它所拥有的所有Context
  6. Host匹配到路径为/test的Context
  7. path=/test的Context获得请求/index.jsp,在它的mapping table中寻找对应的servlet
  8. Context匹配到URL PATTERN为 *.jsp 的servlet,对应于JspServlet类构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法。
  9. Context把执行完了之后的HttpServletResponse对象返回给Host
  10. Host把HttpServletResponse对象返回给Engine
  11. Engine把HttpServletResponse对象返回给Connector
  12. Connector把HttpServletResponse对象返回给浏览器端

6. tomcat启动脚本

准备 tomcat 启动脚本

cp /root/tomcat /etc/init.d/

vim /etc/init.d/tomcat
#!/bin/bash

JDK_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat
export JDK_HOME CATALINA_HOME
source /etc/profile
#PID=`ps -ef  | grep  -v grep  | grep java | awk  '{print $2}'`
#NUM=`ps -ef  | grep  -v grep  | grep java | awk  '{print $2}' | wc -l`

#case $1 in
start() {
    	echo "正在判断服务状态,请稍等!"	
    	echo "请稍等3秒钟"
    	echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
   	if	netstat -an | grep 8080 | grep LISTEN >/dev/null
     	then
   		echo "Tomcat已经正在运行了!"  
  	else 
   		echo "Tomcat没有运行,1秒后启动!"
		echo 1;sleep 1  
  		$CATALINA_HOME/bin/catalina.sh start 
  		echo  "Tomcat 已经成功启动完成,5秒后判断是否启动成功"
  		echo "5";sleep 1;echo "4";sleep 1
        echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
	if  netstat -an | grep 8080 | grep LISTEN >/dev/null
	    then
		PID=`ps -ef | grep  tomcat | grep jdk | awk '{print $2}'`
		NUM=`ps -ef | grep  tomcat | grep jdk | awk '{print $2}' | wc -l`
		echo "Tomcat 已经成功启动${NUM} 个Tomcat进程!,PID为${PID}"
	    else
		echo "Tomcat启动失败,请重新启动!"
        	echo 1
	fi
 	fi
	}
stop() {
		PID=`ps -ef  | grep  -v grep  | grep java | awk  '{print $2}'`
		NUM=`ps -ef | grep  -v "color"  | grep tomcat | awk '{print $2}' | wc -l`
		echo "正在判断服务状态,请稍等3秒钟!"	
		echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
	if  netstat -an | grep 8080 | grep LISTEN >/dev/null 
	   then	
		echo "Tomcat运行中,1秒后关闭!"
		echo  1;sleep 1 
		echo "即将关闭Tomcat服务,请稍等!" 
        $CATALINA_HOME/bin/catalina.sh stop ;echo "已经执行关闭命令,正在检查关闭了多少Tomcat进程,请稍等30秒钟!"
		sleep 27
        echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
		pkill java && pkill tomcat
		if  netstat -an | grep 8080 | grep LISTEN >/dev/null;then
			PID=`ps -ef  | grep  -v grep  | grep java | awk  '{print $2}'`
			NUM=`ps -ef | grep  -v "color"  | grep tomcat | awk '{print $2}' | wc -l`
			kill -9 $PID ;echo "已成功关闭${NUM} 个tomcat进程"
		else
  			echo  "Tomcat 已经关闭完成!" 
        	echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1 
		fi
	else
		echo "Tomcat 没有运行"
		echo 1
	fi
	if  netstat -an | grep 8080 | grep LISTEN >/dev/null;then
            PID=`ps -ef  | grep  -v grep  | grep java | awk  '{print $2}'`
            #NUM=`ps -ef | grep  -v "color"  | grep tomcat | awk '{print $2}' | wc -l`
            echo "关闭失败,即将强制删除tomcat进程!"
            sleep 2
            pkill tomcat ;sleep 2 
            if  netstat -an | grep 8080 | grep LISTEN >/dev/null;then
                echo "强制关闭失败,即将再次强制删除tomcat进程!"
                pkill java; sleep 2
            fi
	fi
	}
restart() {
	stop 
	start 
 }

case "$1" in 
start) 
start 
;; 

stop) 
stop 
;; 

restart) 
restart 
;; 

*) 
echo $"Usage: $0 {start|stop|restart|status}" 
esac

chmod +x /etc/init.d/tomcat

启动 tomcat:

/etc/init.d/tomcat start

为了可以远程使用tomcat这个文件

echo 密码 | passwd --stdin www
在远程就可以
ssh www@IP "/etc/init.d/tomcat start"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值