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
Si vous définissez ce qui suit dans $ {CATALINA_HOME} /conf/tomcat-user.xml, vous pouvez accéder à http: //
${CATALINA_HOME}/conf/tomcat-user.xml
<tomcat-users>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users>
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>
session-timeout Définition du nombre de minutes pour conserver le même identifiant de session
httponly Si vous spécifiez l'attribut httponly, les cookies ne sont pas accessibles à partir de scripts en texte HTTP. En conséquence, même si un site Web a une vulnérabilité de script intersite, il est possible d'empêcher le cookie d'être volé par la vulnérabilité.
secure Si TLS ou SSL est utilisé, spécifiez l'attribut sécurisé. Si l'attribut secure est spécifié, le cookie sera envoyé depuis le navigateur uniquement lorsque la communication protégée par TLS ou SSL est utilisée. Si la destination pour accéder à partir du navigateur est SSL / TLS, c'est OK, donc si SSL est déchargé avec l'équilibreur de charge et que le serveur Web / d'application est http, même si ce paramètre est vrai, l'ID de session sera utilisé. Il est possible de.
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 "%r" %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
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é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: //
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