Nginx : Déploiement et optimisation de Tomcat (1)

1. Présentation de Tomcat

1.1 Présentation de Tomcat

1. Tomcat est développé en langage Java . Le serveur Tomcat est un serveur d'applications Web gratuit et open source . C'est un projet central du projet Jakarta de l'Apache Software Foundation. devenir.
2. Tomcat est un serveur d'application léger . Il est largement utilisé dans les systèmes de petite et moyenne taille et les occasions où il n'y a pas beaucoup d'utilisateurs à accès simultané. C'est le premier choix pour développer et déboguer des programmes JSP0. D'une manière générale, bien que Tomcat ait la même fonction que les serveurs Web tels qu'Apache ou Nginx, il a pour fonction de traiter les pages HTML.Cependant, comme sa capacité à traiter le HTML statique est bien inférieure à celle d'Apache ou de Nginx, Tomcat est généralement utilisé en tant que conteneur Servlet et JSP .

1.2 Composants du noyau Tomcat

1. Conteneur Web : complète la fonction du serveur Web.
2. Conteneur de servlet : le nom est catalina, qui est utilisé pour traiter le code de servlet.
3. Conteneur JSP : utilisé pour traduire les pages Web dynamiques JSP en codes de servlet.

  • Tomcat est donc un serveur d'applications Web et également un conteneur Servlet/JSP. En tant que conteneur de servlet, Tomcat est responsable du traitement des demandes des clients, de l'envoi des demandes aux servlets et du renvoi des réponses des servlets aux clients.

1.2.1 Qu'est-ce qu'une servlet

  • Servlet est l'abréviation de Java Servlet . Il peut être compris comme un connecteur de service , un programme côté serveur écrit en Java, et présente les caractéristiques d'être indépendant des plates-formes et des protocoles. Compréhension simple : servlet est un middleware, comprenant des interfaces et des méthodes Connecter le client à la base de données pour réaliser la création de pages web dynamiques.

1.2.2 Qu'est-ce qu'une JSP

1. Le nom complet de JSP est Java Server Pages , qui est une technologie de développement de pages Web dynamiques . Il utilise des balises JSP pour insérer du code Java dans des pages Web HTML. Les balises commencent généralement par <% et se terminent par %>.
2. JSP est un servlet Java , qui est principalement utilisé pour implémenter la partie interface utilisateur des applications Web Java .
3. JSP obtient les données saisies par l'utilisateur via des formulaires Web, accède à des bases de données et à d'autres sources de données, puis crée dynamiquement des pages Web .

1.3 Structure des composants fonctionnels de Tomcat

  • Il existe deux fonctions principales de Tomcat, à savoir 负责接收和反馈外部请求的连接器 Connectoret 负责处理请求的容器 Container. Parmi eux, le connecteur et le conteneur se complètent et constituent ensemble le service web de base Service. Chaque serveur Tomcat peut gérer plusieurs services.

1. Connecteur : responsable de la réception et de la réponse aux demandes externes. C'est le hub de communication entre Tomcat et le monde extérieur. Le port d'écoute reçoit les requêtes externes, traite les requêtes et les transmet au conteneur pour le traitement de l'entreprise, et répond enfin au monde extérieur avec les résultats traités du conteneur.
2. Conteneur : responsable du traitement interne de la logique métier. Son intérieur se compose de quatre conteneurs, Engine, Host, Context et Wrapper, qui sont utilisés pour gérer et invoquer la logique liée au servlet.
3. Service : Service Web fourni en externe. Il comprend principalement deux composants principaux, le connecteur et le conteneur, et d'autres composants fonctionnels. Tomcat peut gérer plusieurs services, et chaque service est indépendant l'un de l'autre.

1.3.1 Analyse de la structure du conteneur

  • Chaque service contiendra un conteneur Container. Il y a 4 sous-conteneurs à l'intérieur du conteneur.

  • Les fonctions des quatre sous-conteneurs sont :
    1. Moteur : Moteur, utilisé pour gérer plusieurs hôtes virtuels. Un Service ne peut avoir qu'un seul Moteur au maximum ;
    2. Hôte : Représente un hôte virtuel, qui peut également être appelé un site, et peut être configuré par le site Host Add ;
    3. Contexte : représente une application Web, y compris plusieurs wrappers de servlet ;
    4. Wrapper : wrapper, la couche inférieure du conteneur. Chaque wrapper encapsule un servlet, qui est responsable de la création, de l'exécution et de la destruction des instances d'objet.

  • Engine, Host, Context et Wrapper, ces quatre conteneurs appartiennent à la relation parent-enfant.

  • Un conteneur peut gérer plusieurs hôtes virtuels par un seul moteur. Chaque hôte virtuel peut gérer plusieurs applications Web. Chaque application Web aura plusieurs wrappers de servlet.

1.4 Processus de requête Tomcat

1. L'utilisateur entre l'URL dans le navigateur, et la demande est envoyée au port 8080 de la machine, et est obtenue par le connecteur qui y écoute ; 2. Le connecteur transmet la demande
au moteur (conteneur) de son service pour traitement , et attend le moteur 3. La
demande est invoquée couche par couche parmi les quatre conteneurs de moteur, hôte, contexte et wrapper, et exécute enfin la logique métier et le stockage de données correspondants dans le servlet.
4. Après l'exécution, la réponse à la demande est renvoyée couche par couche entre les conteneurs Contexte, Hôte et Moteur, puis renvoyée au connecteur et renvoyée au client via le connecteur.

2. Déploiement du service 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
  • Petites connaissances
    1. JDK : kit de développement java (outil de développement java)
    2. JRE : environnement d'exécution java (environnement d'exécution java)
    3. JVM : machine virtuelle java (machine virtuelle java), afin que les programmes java puissent s'exécuter sur plusieurs plates-formes fichier de classe .
    4. CLASSPATH : Indiquez à la jvm le chemin d'accès à utiliser ou à exécuter la classe, afin que la JVM puisse charger le fichier de classe.
    5. tools.jar : Il est utilisé lorsque le système est utilisé pour compiler une classe, c'est-à-dire qu'il est utilisé lorsque javac est exécuté.
    6. dt.jar : dt.jar est une bibliothèque de classes sur l'environnement d'exploitation, principalement le package 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

insérez la description de l'image ici

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

insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici

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

insérez la description de l'image ici

  • Description du répertoire 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. Configuration de l'hôte virtuel Tomcat

  • Dans de nombreux cas, l'entreprise aura plusieurs projets à exécuter.Généralement, plusieurs services Tomcat ne seront pas exécutés sur un serveur, ce qui consommera trop de ressources système. À ce stade, vous devez utiliser l'hôte virtuel Tomcat.
    Par exemple : Ajoutez maintenant deux noms de domaine www.kgc.com et www.benet.com, en espérant accéder à différents contenus de projet via ces deux noms de domaine.
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\!


insérez la description de l'image ici

  • Description du fichier de configuration
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
  • Processus de requête HTTP
    1. Le port écouté par le connecteur est 8080. Puisque le port demandé correspond au port d'écoute, le connecteur accepte la demande.
    2. Parce que l'hôte virtuel par défaut du moteur est www.kgc.com et que le répertoire de l'hôte virtuel est webapps. Ainsi, la requête trouve le répertoire tomcat/webapps.
    3. Le chemin d'accès est le chemin racine et l'URI est vide, c'est-à-dire que le vide est le nom d'application du programme Web, c'est-à-dire le contexte. À ce moment, la requête trouve le répertoire /usr/local/tomcat/webapps/kgc, analyse index.jsp et le renvoie.

4. Déploiement multi-instance 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

insérez la description de l'image ici

insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/2301_76875445/article/details/131047449
conseillé
Classement