Konstruktionsmethode für die Java-Ausführungsumgebung (Tomcat @ Linux)

1. Erste Einführung

Es gibt Open Source OpenJDK und Adoptjdk als Java, die unter Linux verwendet werden können. Darüber hinaus organisieren Sie bis zu Tomcat-Umgebung Konstruktion Der Grundfluss ist

1.Java-Installation


#Paketinstallation
###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.Java-Umschaltmethode des Betriebssystems



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

Es gibt 4 Programme'java'Bereitstellen.

Befehl auswählen
-----------------------------------------------
*+ 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)

Drücken Sie die Eingabetaste, um den aktuellen auszuwählen[+]Oder geben Sie die Auswahlnummer ein:4


#Java Body Check
[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)

Sie können die Standard-Java oben wechseln, aber der Mechanismus ist ...

Wie Java Switching funktioniert


#Klicken Sie hier für den Standard-Java-Befehl.
[root@XXX ~]# which java
/usr/bin/java

#Wenn ls, wird es eine symbolische Verbindung
[root@XXX ~]# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 November 6 01:19 /usr/bin/java -> /etc/alternatives/java

#Wenn Sie das Link-Ziel festlegen, wird es außerdem zu einem Link zu Java, der durch Java-Switching umgeschaltet wird. Daher wird der Standard-Java-Befehl durch die obige Umschaltmethode umgeschaltet.
[root@XXX ~]# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 77 6. November 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.Profilumschaltung


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

Installieren Sie das Tomcat-Modul. Einführung von Tar Ball v9.0.30 anstelle von U / min.

4.Tomcat-Installation&Auftauen


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.Systemd-Einstellung für den Start


##Erstellung von Einheitendateien
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.Definition der Umgebungsvariablen für Tomcat


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

Übrigens können in Tomcat entweder CATALINA_OPTS oder JAVA_OPTS in setenv.sh platziert werden, aber der Unterschied zwischen den beiden ist wie folgt. Zusammenfassend scheint es für Tomcat empfehlenswert zu sein, die CATALINA_OPTS-Vereinigung zu verwenden.

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 auch während der Verarbeitung_OPTS nimmt ein 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 kann sich neben tomcat auch auf andere Anwendungsserver beziehen. CATALINA_OPTS verwendet nur Tomcat.

7.Automatischer Start


systemctl enable tomcat9 --now

2. Tomcat verschiedene Einstellungen

Anwendungsmanager

Wenn Sie in $ {CATALINA_HOME} /conf/tomcat-user.xml Folgendes festlegen, können Sie auf http: // zugreifen: 8080 / Nach dem Zeichnen des Anwendungsmanagers kann auf verschiedene Funktionen zugegriffen werden.

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


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

Sitzungszeitlimit / Sitzungssicherheit

Legen Sie in $ {CATALINA_HOME} \ conf \ web.xml fest. Das Gerät ist Minuten. Nach dem Einstellen muss Tomcat neu gestartet werden.

${CATALINA_HOME}/conf/web.xml


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

Zugriffsprotokoll

In Tomcat ist die Zugriffsprotokollierung als eine der Erweiterungen implementiert, sodass sie in server.xml anstelle von logging.properties festgelegt wird. Die Bedeutung jeder Musterdefinition wird in diesem Handbuch ausführlich beschrieben, aber im Grunde scheint die Anpassung ausreichend zu sein. https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html

ruby:Einstellungsdatei:${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(Zugriff auf die Protokollausgabe oben)


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

Verbindungspool

Thread-Pool

3. Erstellen Sie eine Test-App

App-Platzierung

App-Platzierung


#Da hoge ein Anwendungsname ist, kann ein beliebiger Wert verwendet werden. hoge=Servlet-Teil
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

URL-Definition

Definieren Sie Folgendes in web.xml </ strong> --Servlet-Klasse: Geben Sie den Namen der Servlet-Klassendatei an. --Servlet-Name: Jeder Name, der jedes Servlet eindeutig identifiziert. --url-pattern: Geben Sie die URL für den Zugriff auf das Servlet an.

Im Servlet-Tag wird die Entität des Servlets aufgelistet. Listen Sie URLs im Servlet-Mapping-Tag auf. Und es ist eine Konfiguration namens Servlet-Name, die beide verbindet.

Wenn Sie beispielsweise Folgendes definieren, können Sie auf die zuvor platzierte Webanwendung zugreifen, indem Sie auf http: // : 8080 / hoge / HWPage zugreifen.

5.URL-Definition


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>
##################

Referenz </ 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