Nginx: implantação e otimização do Tomcat (1)

1. Introdução ao Tomcat

1.1 Introdução ao Tomcat

1. O Tomcat é desenvolvido na linguagem Java . O servidor Tomcat é um servidor de aplicativos da Web gratuito e de código aberto . É um projeto central no projeto Jakarta da Apache Software Foundation.
2. O Tomcat é um servidor de aplicações leve , amplamente utilizado em sistemas de pequeno e médio porte e em ocasiões onde não há muitos usuários com acesso simultâneo, sendo a primeira escolha para desenvolvimento e depuração de programas JSP0. De um modo geral, embora o Tomcat tenha a mesma função que servidores web como Apache ou Nginx, ele tem a função de processar páginas HTML. No entanto, como sua capacidade de processar HTML estático é muito menor que a do Apache ou Nginx, o Tomcat é geralmente usado como um contêiner Servlet e JSP .

1.2 Componentes do núcleo do Tomcat

1. Contêiner da Web: conclua a função do servidor da Web.
2. Contêiner Servlet: o nome é catalina, que é usado para processar o código Servlet.
3. Contêiner JSP: usado para traduzir páginas web dinâmicas JSP em códigos Servlet.

  • Portanto, o Tomcat é um servidor de aplicativos da Web e também um contêiner Servlet/JSP. Como um contêiner Servlet, o Tomcat é responsável por processar solicitações de clientes, enviar solicitações a Servlets e enviar respostas de Servlets de volta aos clientes.

1.2.1 O que é um servlet

  • Servlet é a abreviação de Java Servlet . Pode ser entendido como um conector de serviço , um programa do lado do servidor escrito em Java, e tem como característica ser independente de plataformas e protocolos. Entendimento simples: servlet é um middleware, incluindo interfaces e métodos .Conecte o cliente ao banco de dados para realizar a criação de páginas web dinâmicas.

1.2.2 O que é JSP

1. O nome completo do JSP é Java Server Pages , que é uma tecnologia dinâmica de desenvolvimento de páginas da web . Ele usa tags JSP para inserir código Java em páginas da web HTML. As tags geralmente começam com <% e terminam com %>.
2. JSP é um servlet Java , que é usado principalmente para implementar a parte da interface do usuário de aplicações web Java .
3. JSP obtém dados de entrada do usuário por meio de formulários da Web, acessa bancos de dados e outras fontes de dados e, em seguida, cria páginas da Web dinamicamente .

1.3 Estrutura do componente funcional do Tomcat

  • Existem duas funções principais do Tomcat, ou seja 负责接收和反馈外部请求的连接器 Connector, e 负责处理请求的容器 Container. Dentre eles, o conector e o container se complementam e juntos constituem o serviço web básico Service. Cada servidor Tomcat pode gerenciar vários Serviços.

1. Conector: Responsável por receber e responder às solicitações externas. É o hub de comunicação entre o Tomcat e o mundo externo.A porta de escuta recebe solicitações externas, processa as solicitações e as passa para o contêiner para processamento de negócios e, finalmente, responde ao mundo externo com os resultados processados ​​do contêiner.
2. Container: Responsável pelo processamento interno da lógica de negócios. Seu interior consiste em quatro contêineres, Engine, Host, Context e Wrapper, que são usados ​​para gerenciar e invocar a lógica relacionada ao Servlet.
3. Serviço: Serviço da Web fornecido externamente. Ele inclui principalmente dois componentes principais, Conector e Contêiner, e outros componentes funcionais. O Tomcat pode gerenciar vários serviços e cada serviço é independente um do outro.

1.3.1 Análise da estrutura do contêiner

  • Cada serviço conterá um contêiner Container. Existem 4 sub-containers dentro do Container.

  • As funções dos quatro sub-containers são:
    1. Engine: Engine, utilizada para gerenciar vários hosts virtuais. Um Service pode ter no máximo um Engine;
    2. Host: Representa um host virtual, que também pode ser chamado de site, e pode ser configurado pelo site Host Add;
    3. Contexto: representa uma aplicação Web, incluindo vários wrappers Servlet;
    4. Wrapper: wrapper, a camada inferior do contêiner. Cada Wrapper encapsula um Servlet, que é responsável pela criação, execução e destruição de instâncias de objetos.

  • Mecanismo, Host, Contexto e Wrapper, esses quatro contêineres pertencem ao relacionamento pai-filho.

  • Um contêiner pode gerenciar vários hosts virtuais por um mecanismo. Cada host virtual pode gerenciar vários aplicativos da web. Cada aplicativo da web terá vários wrappers de servlet.

1.4 Processo de solicitação do Tomcat

1. O usuário insere a URL no navegador, e a requisição é enviada para a porta 8080 da máquina, sendo obtida pelo Conector que escuta lá; 2. O Conector entrega a requisição
ao Engine (Container) do seu Serviço para processamento , e aguarda o Engine 3. A
solicitação é invocada camada por camada entre os quatro contêineres de Engine, Host, Context e Wrapper e, finalmente, executa a lógica de negócios correspondente e o armazenamento de dados no Servlet.
4. Após a execução, a resposta da solicitação é retornada camada por camada entre os contêineres de Contexto, Host e Mecanismo e, finalmente, retornada ao Conector e retornada ao cliente por meio do Conector.

2. Implantação do serviço Tomcat

#在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm 
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version

3.设置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh
java -version
  • Pequeno conhecimento
    1. JDK: kit de desenvolvimento java (ferramenta de desenvolvimento java)
    2. JRE: ambiente de tempo de execução java (ambiente de tempo de execução java)
    3. JVM: máquina virtuak java (máquina virtual java), para que os programas java possam ser executados em arquivo de classe de várias plataformas .
    4. CLASSPATH: Informe a jvm onde colocar a classe a ser utilizada ou executada, para que a JVM possa carregar o arquivo da classe.
    5. tools.jar: É utilizado quando o sistema é utilizado para compilar uma classe, ou seja, é utilizado quando o javac é executado.
    6. dt.jar: dt.jar é uma biblioteca de classes sobre o ambiente operacional, principalmente o pacote swing.
#验证一下JDK运行环境安装是否OK
首先使用文本工具编写java源代码,比如 Hello.java ;
在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,打印 “Hello World”。

vim Hello.java
#类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
public class Hello {			
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

javac Hello.java
java Hello

insira a descrição da imagem aqui

4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh 
或
/usr/local/tomcat/bin/catalina.sh start	
	
#前台启动
/usr/local/tomcat/bin/catalina.sh run		

netstat -natp | grep 8080

vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]WantedBy=multi-user.target

浏览器访问Tomcat的默认主页 http://192.168.119.3:8080

insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui

5.优化tomcat启动速度
第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh

insira a descrição da imagem aqui

  • Descrição do diretório principal
ll /usr/local/tomcat/
●bin:存放启动和关闭 Tomcat 的脚本文件,如 catalina.sh、startup.sh、shutdown.sh 
●conf:存放 Tomcat 服务器的各种配置文件,如主配置文件 server.xml 和 应用默认的部署描述文件 web.xml 
●lib:存放 Tomcat 运行需要的库文件的 jar 包,一般不作任何改动
●logs:存放 Tomcat 执行时的日志
●temp:存放 Tomcat 运行时产生的文件
●webapps:存放 Tomcat 默认的 Web 应用项目资源的目录
●work:Tomcat 的工作目录,存放 Web 应用代码生成和编译文件

3. Configuração do host virtual Tomcat

  • Em muitos casos, a empresa terá vários projetos que precisam ser executados.Geralmente, vários serviços Tomcat não serão executados em um servidor, o que consumirá muitos recursos do sistema. Neste ponto, você precisa usar o host virtual Tomcat.
    Por exemplo: Agora adicione dois nomes de domínio www.kgc.com e www.benet.com, esperando acessar diferentes conteúdos de projetos por meio desses dois nomes de domínio.
1.创建 kgc 和 benet 项目目录和文件
mkdir /usr/local/tomcat/webapps/kgc
mkdir /usr/local/tomcat/webapps/benet
echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp

2.修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
--165行前--插入
<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="true" />
</Host>

<Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />
</Host>

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

3.客户端浏览器访问验证
echo "192.168.119.3 www.kgc.com www.benet.com" >> /etc/hosts

浏览器访问 http://www.kgc.com:8080/   页面显示This is kgc page\! 
浏览器访问 http://www.benet.com:8080/   页面显示This is benet page\!


insira a descrição da imagem aqui

  • Descrição do arquivo de configuração
Host name:主机名
appBase:Tomcat程序工作目录,即存放web应用程序的目录;相对路径为webapps,绝对路径为 /usr/local/tomcat/webapps
unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true
xmlValidation:是否验证xml文件执行有效性检验的标志
xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验

Context
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
path:相对于Web服务器根路径而言的URI;如果为空"",则表示为此webapp的根路径 / ;
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false
  • Processo de solicitação HTTP
    1. A porta que o Conector atende é 8080. Como a porta solicitada corresponde à porta de escuta, o conector aceita a solicitação.
    2. Porque o host virtual padrão do mecanismo é www.kgc.com e o diretório do host virtual é webapps. Portanto, a solicitação encontra o diretório tomcat/webapps.
    3. O caminho de acesso é o caminho raiz e o URI está vazio, ou seja, o vazio é o nome do aplicativo do programa da Web, ou seja, o contexto. Nesse momento, a solicitação localiza o diretório /usr/local/tomcat/webapps/kgc, analisa index.jsp e o retorna.

4. Implantação de várias instâncias do Tomcat

1.安装好 jdk
2.安装 tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

3.配置 tomcat 环境变量
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2


source /etc/profile.d/tomcat.sh

4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">		#22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1"		#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。 第二个连接器默认监听8009端口,AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口。

5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
vim /usr/local/tomcat/tomcat1/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1


vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1


vim /usr/local/tomcat/tomcat2/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2


vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

6.启动各 tomcat 中的 /bin/startup.sh 
#防止失误可以先停止服务再启动
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

7.浏览器访问测试
http://192.168.119.4.0:8080
http://192.168.119.4:8081

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/2301_76875445/article/details/131047449
Recomendado
Clasificación