Implementación (optimización) del servidor Tomcat y configuración de host virtual


Uno, servidor Tomcat

1. Introducción

Origen del nombre:
Tomcat fue desarrollado originalmente por el arquitecto de software de Sun, James Duncan Davidson. Más tarde, ayudó a convertirlo en un proyecto de código abierto y contribuyó a la Apache Software Foundation by Sun.
Como la mayoría de los proyectos de código abierto, O'Reilly producirá uno Este libro está relacionado con este libro, y la portada está diseñada como un boceto de cierto animal, por lo que espera nombrar este proyecto con el nombre de un animal
porque espera que este animal pueda cuidar de sí mismo, y finalmente, lo llamó Tomcat (inglés Gatos machos u otros gatos machos)
y el libro de O'Reilly sobre la portada de Tomcat también está diseñado como un gato macho, y el logotipo y la mascota de Tomcat también están diseñados como un gato macho.
marca
De hecho, Tomcat fue el primero No se le dio este nombre durante el desarrollo. El nombre del proyecto inicial de Tomcat era Catalina, por lo que cuando instalemos Tomcat, encontraremos que hay muchos catálogos y archivos relacionados con Catalina en la ruta de instalación, y estos archivos suelen ser utilizados o configurados por Toncat. Documentos importantes

2. Escenarios de aplicación

  • El servidor Tomcat es un servidor de aplicaciones web gratuito y de código abierto, que es un servidor de aplicaciones liviano. Se usa comúnmente en sistemas pequeños y medianos y donde no hay muchos usuarios concurrentes. Es la primera opción para desarrollar y depurar programas JSP.
  • En términos generales, aunque Tomcat es lo mismo que los servidores web Apache o Nginx, tiene la función de procesar páginas HTML, pero debido a que su capacidad para procesar HTML estático es mucho menor que Apache o Nginx, Tomcat generalmente se usa como un servlet y un contenedor JSP, ejecutándose por separado. parte trasera

Algún suplemento

Servlet de Java:

  1. Un programa que se ejecuta en un servidor web o un servidor de aplicaciones, que actúa como una capa intermedia entre la solicitud de un navegador web u otro cliente HTTP y la base de datos o aplicación en el servidor HTTP.
  2. Con Servlet, puede recopilar información del usuario de formularios web, presentar registros de bases de datos u otras fuentes y crear páginas web de forma dinámica
  3. Similar a la función CGI (Common Gateway Interface)

JSP (Páginas del servidor Java) :

  1. Una tecnología de desarrollo web dinámica
  2. Utiliza etiquetas JSP para insertar código Java en páginas HTML, y la firma generalmente comienza con <% y termina con%>
  3. JSP es un servlet de Java, utilizado principalmente para implementar la parte de la interfaz de usuario de una aplicación web Java
  4. JSP obtiene datos de entrada del usuario a través de formularios web, accede a bases de datos y otras fuentes de datos y luego crea páginas web de forma dinámica

3. Componentes

Tomcat consta de una serie de componentes, de los cuales hay tres componentes principales

nombre Caracteristicas
Contenedor web Completa la función del servidor web
Contenedor de servlet El nombre es catalina, utilizado para procesar el código de Servlet
Contenedor JSP Se utiliza para traducir páginas web dinámicas JSP en código Servlet.

Dos, pasos de implementación de Tomcat

1. Medio ambiente

El siguiente es el entorno nativo:

  • Edición de estación de trabajo profesional de Windows 10
  • VMware 16 Pro (16.0.1.0)
  • CentOS 7
  • Fuente local de YUM
  • La tarjeta de red está configurada para obtener una dirección IP de forma estática.
  • El adaptador de red está en modo NAT
  • La dirección IP es 192.168.126.15
  • apache-tomcat-9.0.16
  • jdk-8u201-linux-x64

2. Preparación

  1. Apague el firewall y fuerce el acceso de control al sistema después del inicio
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
  1. JDK debe instalarse antes de instalar Tomcat
  • El nombre completo de JDK es (Java Development Kit), que es un kit de desarrollo de software en lenguaje Java proporcionado por Sun de forma gratuita.
  • Contiene la máquina virtual Java (JVM), el programa fuente Java compilado se puede compilar para formar un código de bytes Java
  • Siempre que el JDK esté instalado, la JVM se puede utilizar para interpretar estos archivos de código de bytes, lo que garantiza la naturaleza multiplataforma de Java.
  • En términos de compatibilidad de plataforma, JDK, como una máquina virtual Java que interpreta archivos de código de bytes y llama a las API del sistema operativo para implementar las funciones correspondientes, está estrechamente relacionado con el tipo de sistema operativo y la cantidad de plataformas, por lo que existen diferentes tipos de versiones.
  • Y Tomcat también tiene las características anteriores, por lo que debe descargar JDK y Tomcat con anticipación

Portal del paquete de software : https://pan.baidu.com/s/1Xl95R5OW4c6oozF4l4zfyA (Código de extracción: 12do)

Después de la descarga, use Xshell para arrastrar directamente los dos paquetes de software al directorio / opt
marca

3. Instale JDK, configure el entorno Java

  1. Instalar directamente usando rpm
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
#查看指定文件的文件列表
rpm -ivh jdk-8u201-linux-x64.rpm
#安装
java -version
#显示java运行环境版本

marca
marca

  1. Cree un script para establecer variables de entorno JDK
vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
#输出定义java的工作目录
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#输出指定java所需的类文件
export PATH=$JAVA_HOME/bin:$PATH
#输出重新定义环境变量,$PATH一定要放在$JAVA_HOME的后面,让系统先读取到工作目录中的版本信息!


source /etc/profile.d/java.sh
#执行脚本
java -version
#再次查看,检查是否执行成功

marca
marca

suplemento Descripción
CLASSPATH Al compilar y ejecutar un programa Java, JRE buscará el archivo de clase requerido (.class) en la ruta especificada por la variable
dj.jar Se trata de la biblioteca de clases del entorno operativo, principalmente el paquete swing.
tools.jar Principalmente algunas bibliotecas de herramientas jdk, incluidas javac, java, javap, javadoc, etc.
JDK kit de desarrollo java (herramienta de desarrollo java)
JRE entorno de ejecución de Java (entorno de ejecución de Java)
JVM máquina virtuak de Java (máquina virtual de Java), para que los programas de Java puedan ejecutar archivos de clase en múltiples plataformas
  1. Escriba un archivo java simple para verificar nuevamente
vim zxc.java

public class zxc {
    
    
        public static void main(String[] args){
    
    
        System.out.println("Hello world!");
        }
}


javac zxc.java
#进行编译
java zxc
#执行

marca
marca

4. Instale y configure Tomcat

  1. Descomprime el paquete
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
  1. Genere una carpeta después de la descompresión, mueva la carpeta a / usr / local / y cámbiele el nombre a tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat
  1. Iniciar Tomcat
/usr/local/tomcat/bin/startup.sh

marca
4. Tomcat se ejecuta en el puerto 8080 de forma predeterminada, puede ejecutar el comando netstat para ver la información monitoreada en el puerto 8080

[root@localhost opt]# netstat -natp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      16690/java
  1. Abra el navegador para acceder a la prueba http://192.168.126.15:8080/
    marca

  2. Si desea cerrar Tomcat, puede ejecutar el siguiente comando

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

5. Descripción del catálogo principal

El directorio de inicio de Tomcat es / usr / localtomcat

marca

Tabla de contenido Descripción
compartimiento Almacena archivos de script para iniciar y cerrar Tomcat en plataformas Windows o Linux
conf Almacene varios archivos de configuración global del servidor Tomcat, los más importantes de los cuales son server.xml y web.xml
lib Almacene los archivos de la biblioteca (JARS) necesarios para el funcionamiento de Tomcat, generalmente no realice ningún cambio, a menos que se conecte a un servicio de terceros, como redis, entonces debe agregar el paquete jar correspondiente
registros Almacene el archivo LOG (registro) durante la ejecución de Tomcat
temperatura Almacenar archivos generados cuando Tomcat se está ejecutando
webapps El directorio de publicación web principal de Tomcat (incluidos ejemplos de aplicaciones) es un directorio para almacenar recursos del proyecto
trabajo Directorio de trabajo de Tomcat, que almacena archivos de clase generados después de la compilación jsp, generalmente se usa al borrar la caché de Tomcat

Tres, configuración de host virtual Tomcat

  • Muchas veces, la empresa tiene varios proyectos para ejecutar, por lo que ciertamente es imposible ejecutar varios servicios Tomcat en un servidor, lo que consumirá demasiados recursos del sistema.
  • En este punto, debe utilizar el host virtual Tomcat
  • Por ejemplo, ahora se agregan dos nuevos nombres de dominio, www.xcf.com y www.zxc.com, y espero acceder a diferentes contenidos del proyecto a través de estos dos nombres de dominio.

1. Crea directorios y archivos

mkdir /usr/local/tomcat/webapps/xcf
mkdir /usr/local/tomcat/webapps/zxc

#在目录下创建默认首页文件,并注入内容,用以测试

echo "Hello Xcf~" > /usr/local/tomcat/webapps/xcf/index.jsp
echo "Hello Zxc~" > /usr/local/tomcat/webapps/zxc/index.jsp

2. Modifique el archivo de configuración principal de Tomcat.

vim /usr/local/tomcat/conf/server.xml

#在165行插入以下内容
<Host name="www.xcf.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/xcf" path="" reloadable="true" />
</Host>

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

marca

suplemento Descripción
Nombre de host Nombre de la CPU
appBase Directorio de trabajo del programa Tomcat, la ruta relativa es webapps, la ruta absoluta es / usr / local / tomcat / webapps
desempaquetarWARs Ya sea para descomprimir el paquete de guerra
autoDeploy Indique a Tomcat que permita la implementación automática si hay nuevas aplicaciones web cuando se ejecuta
xmlValidation Ya sea para verificar el archivo xml para realizar la marca de verificación de validez
xmlNamespaceAware Ya sea para habilitar el espacio de nombres xml, establezca este valor y xmlValidation en verdadero, lo que significa que se realiza la verificación de validez del archivo web.xml
appBase Catálogo de aplicaciones WEB
camino Configure el URI visitado en el directorio raíz de la aplicación web
recargable Ya sea para recargar cuando se cambia el programa

3. Apague Tomcat y reinicie

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

marca

4. Visite el navegador para verificar

#首先在主机映射文件中追加IP与对应域名
echo "192.168.126.15 www.xcf.com" >> /etc/hosts
echo "192.168.126.15 www.zxc.com" >> /etc/hosts
  • Visite http://www.xcf.com:8080
    marca
  • Visite http://www.zxc.com:8080
    marca

Cuarto, optimización de Tomcat

  • La configuración predeterminada de la instalación predeterminada de Tomcat no es adecuada para el entorno de producción. Con frecuencia puede parecer suspendida y debe reiniciarse. Solo mediante pruebas de esfuerzo y optimización continuas puede ejecutarse con la mayor eficiencia y estabilidad.
  • La optimización incluye principalmente tres aspectos: optimización del sistema operativo (optimización de los parámetros del kernel), optimización de los parámetros del archivo de configuración de Tomcat y ajuste de la máquina virtual Java (JVM)

1. Optimiza la velocidad de inicio

第一次启动查看日志会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒  
可以修改jdk参数进行优化

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

 #117行
 securerandom.source=file:/dev/urandom
#random和urandom都属于伪终端,都能提供数据流,但是后者速度更快


/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 
#重启生效

2. Los parámetros relacionados con la optimización de uso común son los siguientes:

vim /usr/local/tomcat/conf/server.xml

minSpareThreads="50" 
#最小空闲线程数为50
enableLookups="false"
#不开启反查域名
disableUploadTimeout="true"
#上传时使用超时机制
acceptCount="300" 
#线程数都被占用时,可传入最大连接请求队列为300
maxThreads="500"
#可创建的最大线程数为500
processorCache="500"
#控制Tomcat内部RequestProcessor的缓存池大小,若超过500,则会创建新的RequestProcessor实例
URIEncoding="UTF-8" 
#字符集为UTF-8
compression="on"
#开启对响应的数据进行GZIP压缩
compressionMinSize="2048"
#压缩响应最小值,开启则默认2048,只有大于该值时才会对报文进行压缩
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>
#压缩可支持类型

marca

Nombre de la opción Ajuste de parámetros
maxThreads Tomcat usa subprocesos para procesar cada solicitud recibida. Este valor representa el número máximo de subprocesos que puede crear Tomcat. El valor predeterminado es 200
minSpareThreads El número mínimo de subprocesos inactivos, el número de subprocesos inicializados cuando se inicia Tomcat, significa que hay tantos subprocesos vacíos esperando incluso si nadie los está usando. El valor predeterminado es 10
maxSpareThreads El número máximo de subprocesos de repuesto. Una vez que el número de subprocesos creados supera este valor, Tomcat cerrará los subprocesos de socket que ya no sean necesarios. El valor predeterminado es -1 (ilimitado). Generalmente no es necesario especificar
URIEncoding 指定 Tomcat El formato de codificación de URL y el formato de codificación de idioma del contenedor no son tan fáciles de configurar como otro software de servidor web, y deben especificarse por separado
connnectionTimeout El tiempo de espera de la conexión de red, unidad: milisegundos, establecido en 0 significa que nunca se agota el tiempo de espera, esta configuración tiene peligros ocultos. Por lo general, el valor predeterminado es 20000 milisegundos.
enableLookups Ya sea para revisar el nombre de dominio para devolver el nombre de host del host remoto, el valor es: verdadero o falso, si se establece en falso, la dirección IP se devuelve directamente, para mejorar la capacidad de procesamiento, debe establecerse en falso
disableUploadTimeout Si usar el mecanismo de tiempo de espera al cargar. Debería establecerse en verdadero
connectionUploadTimeout Tiempo de espera de carga. Después de todo, la carga de archivos puede llevar más tiempo. Ajústelo de acuerdo con sus propias necesidades comerciales, de modo que el servlet tenga más tiempo para completar su ejecución. Debe usarse junto con el parámetro anterior para que surta efecto.
acceptCount Especifique la longitud máxima de la cola para las solicitudes de conexión entrantes cuando se utilicen todos los subprocesos disponibles para procesar las solicitudes. Las solicitudes que superen este número no se procesarán. El valor predeterminado es 100
compresión Ya sea para realizar la compresión GZIP en los datos de respuesta, apagado: indica que la compresión está prohibida; encendido: indica que la compresión está permitida (el texto se comprimirá), forzado: indica que la compresión se realiza en todos los casos, el valor predeterminado está apagado, lo que puede reducir efectivamente las páginas después de comprimir datos El tamaño generalmente se puede reducir en aproximadamente 1/3 para ahorrar ancho de banda
compresiónMinSize Indica el valor mínimo de la respuesta comprimida. Solo cuando el tamaño del mensaje de respuesta sea mayor que este valor, el mensaje se comprimirá. Si la función de compresión está habilitada, el valor predeterminado es 2048
compressableMimeType Tipo de compresión, especifique qué tipos de archivos se comprimen
noCompressionUserAgents = "gozilla, traviata" Para los siguientes navegadores, no habilite la compresión

Los anteriores son algunos de los parámetros de configuración de uso común y hay muchas otras configuraciones de parámetros. Puede continuar optimizando
los valores de los atributos de los parámetros de HTTP Connector y AJP Connector. Puede consultar la descripción detallada del documento oficial para aprender.

Supongo que te gusta

Origin blog.csdn.net/weixin_51486343/article/details/112746276
Recomendado
Clasificación