Méthode de construction de l'environnement d'exécution Java (Tomcat @ Linux)

1. Introduction initiale

Il existe open source openjdk et adoptjdk comme java qui peuvent être utilisés sous Linux. De plus, organisez jusqu'à la construction de l'environnement Tomcat Le flux de base est --java installation du paquet --java commutation --Définition de chemin telle que JAVA_HOME dans le profil

1.installation java


#Installation du package
###RHEL/CentOS
sudo yum -y install java-11-openjdk java-11-openjdk-devel

###Amazon Linux2
sudo amazon-linux-extras install java-openjdk11 java-11-openjdk-devel

2.Méthode de commutation Java par défaut du système d'exploitation



#commutation java
[root@XXX ~]$ alternatives --config java

Il y a 4 programmes'java'Fournir.

Sélectionnez la commande
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.amzn2.0.1.x86_64/jre/bin/java)
   2           java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.231-2.6.19.1.amzn2.0.1.x86_64/jre/bin/java)
   3           /usr/lib/jvm/adoptopenjdk-11-openj9/bin/java
   4           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.5.10-0.amzn2.x86_64/bin/java)

Appuyez sur Entrée pour sélectionner le courant[+]Ou entrez le numéro de sélection:4


#vérification du corps java
[root@XXX ~]# java -version
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

Vous pouvez changer le java par défaut ci-dessus, mais le mécanisme est ...

Comment fonctionne la commutation Java


#Cliquez ici pour la commande java par défaut.
[root@XXX ~]# which java
/usr/bin/java

#Quand ls, ça devient un lien symbolique
[root@XXX ~]# ls -l /usr/bin/java
lrwxrwxrwx 1 racine racine 22 novembre 6 01:19 /usr/bin/java -> /etc/alternatives/java

#De plus, si vous ls la destination du lien, il devient un lien vers java commuté par la commutation java. Par conséquent, la commande java par défaut est commutée par la méthode de commutation ci-dessus.
[root@XXX ~]# ls -l /etc/alternatives/java
lrwxrwxrwx 1 racine racine 77 6 novembre 01:19 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.amzn2.0.1.x86_64/jre/bin/java

3.Changement de profil


cat >> ~/.bash_profile <<EOF
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which java)))))
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

Installez le module tomcat. Introduction de la balle tar v9.0.30 au lieu de rpm.

4.installation de tomcat&Dégivrer


curl -O https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz
tar zxvf apache-tomcat-*.tar.gz -C /usr/libexec/
chown -R tomcat. /usr/libexec/apache-tomcat-*
ln -s /usr/libexec/apache-tomcat-* /usr/libexec/tomcat9
useradd -d /usr/libexec/tomcat9 tomcat

5.Paramètre Systemd pour le démarrage


##Création de fichier d'unité
cat << EOF > /etc/systemd/system/tomcat9.service
[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/libexec/tomcat9/bin/startup.sh
ExecStop=/usr/libexec/tomcat9/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target
EOF

6.Définition de variable d'environnement pour tomcat


cat << EOF > /usr/libexec/tomcat9/bin/setenv.sh
#!/bin/sh
JAVA_OPTS="-server -Xms512M -Xmx512M"
export JAVA_OPTS
EOF

À propos, dans tomcat, CATALINA_OPTS ou JAVA_OPTS peuvent être placés dans setenv.sh, mais la différence entre les deux est la suivante. En conclusion, il semble qu'il soit recommandé pour tomcat d'aller avec l'unification CATALINA_OPTS.

python


https://stackoverflow.com/questions/11222365/catalina-opts-vs-java-opts-what-is-the-difference
>>>
So why are there two different variables? And what's the difference?

Firstly, anything specified in EITHER variable is passed, identically, to the command that starts up Tomcat - the "start" or "run" command - but only values set in JAVA_OPTS are passed to the "stop" command. That probably doesn't make any difference to how Tomcat runs in practise as it only effects the end of a run, not the start.
→ JAVA même pendant l'arrêt du traitement_OPTS prend un argument.

The second difference is more subtle. Other applications may also use JAVA_OPTS, but only Tomcat will use CATALINA_OPTS. So if you're setting environment variables for use only by Tomcat, you'll be best advised to use CATALINA_OPTS, whereas if you're setting environment variables to be used by other java applications as well, such as by JBoss, you should put your settings in JAVA_OPTS.
→JAVA_OPTS peut également faire référence à d'autres serveurs d'applications en plus de tomcat. CATALINE_OPTS utilise uniquement tomcat.

7.Démarrage automatique


systemctl enable tomcat9 --now

2. Divers paramètres de Tomcat

Gestionnaire d'applications

Si vous définissez ce qui suit dans $ {CATALINA_HOME} /conf/tomcat-user.xml, vous pouvez accéder à http: // : 8080 / Diverses fonctions sont accessibles après avoir dessiné le gestionnaire d'applications.

${CATALINA_HOME}/conf/tomcat-user.xml


<tomcat-users>
 <role rolename="manager-gui"/>
 <user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users>

Délai d'expiration de session / sécurité de session

Défini dans $ {CATALINA_HOME} \ conf \ web.xml. L'unité est en minutes. Après le réglage, le redémarrage de tomcat est requis.

${CATALINA_HOME}/conf/web.xml


    <session-config>
        <session-timeout>5</session-timeout>
  	<cookie-config>
    	   <httponly>true</httponly>
    	   <secure>true</secure>
	</cookie-config>
    </session-config>

journal d'accès

Dans Tomcat, la journalisation des accès est implémentée comme l'une des extensions, elle est donc définie dans server.xml au lieu de logging.properties. La signification de chaque définition de motif est décrite en détail dans ce manuel, mais fondamentalement, il semble que la personnalisation soit suffisante. https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html

ruby:fichier de configuration:${CATALINA_HOME}/conf/server.xml


        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

ruby:${CATALINA_HOME}/logs/localhost_access_log.yyyy-mm-dd.txt(Accéder à la sortie du journal ci-dessus)


127.0.0.1 - - [01/Jan/2020:01:07:20 +0900] "GET /hoge2/SessionTest HTTP/1.0" 404 864
127.0.0.1 - - [01/Jan/2020:01:07:21 +0900] "GET /favicon.ico HTTP/1.0" 200 21630
127.0.0.1 - - [01/Jan/2020:01:07:26 +0900] "GET /hoge/SessionTest HTTP/1.0" 200 35

Pool de connexion

Pool de threads

3. Créer une application de test

Placement de l'application

Placement de l'application


#Puisque hoge est un nom d'application, n'importe quelle valeur peut être utilisée. hoge=Partie servlet
mkdir -p /usr/libexec/tomcat9/webapps/hoge/WEB-INF/classes
chown tomcat:tomcat -R /usr/libexec/tomcat9/webapps/hoge/
vi /usr/libexec/tomcat9/webapps/hoge/WEB-INF/classes/HelloWorld.java
##################
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}
##################

cd /usr/libexec/tomcat9/webapps/hoge/WEB-INF/classes
javac -classpath /usr/libexec/tomcat9/lib/servlet-api.jar HelloWorld.java

Définition d'URL

Définissez les éléments suivants dans web.xml </ strong> --Servlet-class: spécifiez le nom du fichier de classe de servlet. --Servlet-name: tout nom qui identifie de manière unique chaque servlet. --url-pattern: spécifiez l'URL pour accéder au servlet.

Dans la balise servlet, l'entité du servlet est répertoriée. Répertoriez les URL dans la balise de mappage de servlet. Et c'est une configuration appelée nom-servlet qui relie les deux.

Par exemple, en définissant ce qui suit, il est possible d'accéder à l'application web placée au préalable en accédant à http: // : 8080 / hoge / HWPage.

5.Définition d'URL


vi /usr/libexec/tomcat9/webapps/hoge/WEB-INF/web.xml
##################
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">

  <servlet>
    <servlet-name>HelloWorldName</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>HelloWorldName</servlet-name>
    <url-pattern>/HWPage</url-pattern>
  </servlet-mapping>

</web-app>
##################

Référence </ strong> https://www.ipentec.com/document/java-servlet-post-http-servlet-show-table https://commons.apache.org/proper/commons-dbcp/configuration.html https://www.techscore.com/tech/Java/JavaEE/JDBC/6-2/ https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/302.html https://tomcat.apache.org/tomcat-9.0-doc/config/executor.html

  • java11 Manual https://docs.oracle.com/en/java/javase/11/index.html

Recommended Posts