Autres versions

Vous êtes ici : Installation 7.0Pré-requisServeur Applicatif

Serveur applicatif

Procédure d'installation du serveur utilisé pour déployer l'application K-Sup.

Cette page décrit l'installation et la configuration du serveur sur lequel sera déployé l'application K-Sup. Les serveurs Apache et Tomcat seront installés sur cette machine.

Usage

Le serveur applicatif va permettre de déployer l'application K-Sup. Il est composé des serveurs Apache et Tomcat.
Par défaut, l'application sera installée dans un répertoire /web/ksup/webapp. Ce chemin peut-être adapté si besoin.

Liens avec les autres serveurs

Type de Lien Serveur Port Remarques
Sortant Serveur de base de données 3306
Sortant Serveur NFS 2049
Sortant Serveur CAS 443
Sortant Serveur LDAP 636
Entrant Frontal Web 80
 

Pré-requis

  • OS : Debian 12
  • Java : Open JDK 17
  • Serveur NFS (si nécessaire)

Installation de Tomcat

La procédure ci-dessous décrit une installation manuelle du serveur Tomcat. Vous pouvez modifier les répertoires d'installation si besoin. Il faudra dans ce cas reporter ces chemins dans les étapes suivantes d'installation (voir ci-après) :
#Créer un groupe tomcat
groupadd tomcat

#Créer un user tomcat
useradd -g tomcat -d /opt/tomcat -s /usr/sbin/nologin tomcat

#Télécharger la dernière version de tomcat 9
cd /tmp
export CURRENT_VERSION="$(wget -qO- https://downloads.apache.org/tomcat/tomcat-9/ | grep -o "href=\"v9\.[^/]*/" | grep -oP "9.[^/]*" | tail -1)"
wget https://downloads.apache.org/tomcat/tomcat-9/v${CURRENT_VERSION}/bin/apache-tomcat-${CURRENT_VERSION}.tar.gz

#Télécharger le md5 correspondant
wget --no-check-certificate https://downloads.apache.org/tomcat/tomcat-9/v${CURRENT_VERSION}/bin/apache-tomcat-${CURRENT_VERSION}.tar.gz.sha512

#Calculer le sha512sum du targz téléchargé
sha512sum apache-tomcat-${CURRENT_VERSION}.tar.gz

#Le comparer à celui attendu:
cat apache-tomcat-${CURRENT_VERSION}.tar.gz.sha512

#Installer le targz
tar -zxvf apache-tomcat-${CURRENT_VERSION}.tar.gz
mkdir /opt/tomcat/
mv apache-tomcat-${CURRENT_VERSION}/* /opt/tomcat/

#Déplacer le répertoire des logs dans /var/log
mkdir /var/log/tomcat
rmdir /opt/tomcat/logs
ln -s /var/log/tomcat /opt/tomcat/logs

#Positionner les droits
chown -R tomcat:tomcat /var/log/tomcat/
chown -R tomcat:tomcat /opt/tomcat/

#Nettoyer les fichiers temporaires et la variable d'env
rm -Rf /tmp/apache-tomcat-${CURRENT_VERSION}
unset ${CURRENT_VERSION}
 

Création du script de lancement

Dans le répertoire, /etc/systemd/system, créer un fichier tomcat.service avec le contenu suivant :
[Unit]
Description=Apache Tomcat 9 Web Application Container
Wants=network.target
After=network.target
 
[Service]
Type=forking
Environment=JAVA_HOME=%JDK_PATH%
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment='CATALINA_OPTS=-Djava.net.preferIPv4Stack=true'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Xms%XMS% -Xmx%XMX% -XX:+UseG1GC -Dconf.dir=%CONF_DIR_PATH% -Dfile.encoding=UTF8 -Xlog:gc*:file=%STORAGE_DIR_PATH%/logs/$(hostname)-gc-$(date +%s).log:tags,time,level '
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
SuccessExitStatus=143
 
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
LimitNOFILE=1048576
 
[Install]
WantedBy=multi-user.target

où :
  • %JDK_PATH% est le chemin vers le répertoire d'installation du JDK (exemple /usr/lib/jvm/java-1.17.0-openjdk-amd64)
  • %XMS% est la valeur du paramètre Xms pour le processus (conseillé 4Go)
  • %XMX% est la valeur du paramètre Xmx pour le processus (conseillé 4Go)
  • %CONF_DIR_PATH% est le chemin vers le répertoire de configuration de l'application K-Sup  (conseillé : /web/ksup/storage/conf)
  • %STORAGE_DIR_PATH est le chemin vers le répertoire du storage K-Sup (conseillé : /web/ksup/storage)
Le lancement du serveur Tomcat s'effectue alors avec la commande
/etc/init.d/tomcat stop|start|restart|status|kill

Suppression des répertoires par défaut de Tomcat

Par défaut, Tomcat installe des répertoires qui ne seront pas utilisés par la suite. Il faut donc les supprimer
sudo rm -rf /opt/tomcat/host-manager/
sudo rm -rf /opt/tomcat/manager/
sudo rm -rf /opt/tomcat/examples/
sudo rm -rf /opt/tomcat/docs/
sudo rm -rf /opt/tomcat/ROOT/*

Déclaration de l'application

Le fichier à éditer est /opt/tomcat/conf/server.xml

Par défaut, le connecteur HTTP est activé et écoute sur le port 8080.
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
    <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="60000" maxThreads="150" URIEncoding="UTF-8" redirectPort="8443"/>
        <Engine name="Catalina" defaultHost="localhost">
            <Host name="localhost" autoDeploy="false" unpackWARs="false" deployOnStartup="false">
                <Context docBase="%WEBAPP_PATH%" path="" crossContext="true" allowLinking="false"/>
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                       prefix="localhost_access_log" suffix=".txt"
                       pattern="%h %l %u %t '%r' %s %D %b"/>
            </Host>
        </Engine>
    </Service>
</Server>
où :
  • %WEBAPP_PATH% est le chemin vers la webapp (conseillé /web/ksup/webapp)

Installation d'Apache avec support du HTTP/2

À partir des version 2.4.17+, apache supporte le protocole HTTP/2.
Le protocole HTTP/2 est un protocole exclusivement SSL dans son implémentation dans les navigateurs.
Cela implique que le serveur doit impérativement avoir un certificat valide et supporter le ALPN (Application-Layer Protocol Negotiation).
Le serveur Apache sera installé à partir des packages officiels de l'OS Debian 12 :
sudo apt install apache2 -y

Configuration du serveur Apache

La déclaration d'un site nécessite l'ajout du fichier Virtualhost dans la configuration Apache. Il faut créer un fichier ksup.conf dans le répertoire /etc/apache2/site-available/ et y copier la configuration suivante :
Protocols h2 http/1.1
<VirtualHost *:443>
 
 ServerName %HOST%
 ServerAlias %ALIAS%
 ServerAdmin %MAIL@ADMIN%
 DocumentRoot %WEBAPP_PATH%
 
 ErrorLog /var/log/apache2/ksup-error.log
 CustomLog /var/log/apache2/ksup-access.log combined
 
 AddType font/ttf .ttf
 AddType font/eot .eot
 AddType font/otf .otf
 AddType font/woff .woff
 
 ErrorDocument 404 /servlet/com.kportal.core.ErrorServlet?CODE=404
 ErrorDocument 500 /servlet/com.kportal.core.ErrorServlet?CODE=500
 
 <FilesMatch "\.(ttf|otf|eot|woff)$">
  <IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
  </IfModule>
 </FilesMatch>
 <Directory "%WEBAPP_PATH%">
  Options None
  AllowOverride None
  DirectoryIndex index.jsp
  Require all granted
 </Directory>
 ProxyPreserveHost on
 ProxyPass "/" "http://localhost:8080/"
 ProxyPassReverse "/" "http://localhost:8080/"
 RequestHeader set X-Forwarded-Proto "https"
 RequestHeader set X-Forwarded-Port "443"
 SSLEngine on
 SSLCertificateFile    %CERTIFICATE_PATH%.crt
 SSLCertificateKeyFile %CERTIFICATE_PATH%.key

</VirtualHost>
où :
  • %HOST% est le nom de domaine principal auquel le serveur doit répondre en HTTPS
  • %ALIAS% est le nom de domaine ou l'ensemble de noms de domaine secondaires auxquels doit aussi répondre le serveur en HTTPS. Il est possible d'utiliser le caractère "*" pour indiquer que votre virtualhost répond à toutes les demandes qui lui sont transmises, peu importe le nom de domaine.
  • %WEBAPP_PATH% est le chemin vers la webapp (conseillé /web/ksup/webapp).
  • %CERTIFICATE_PATH% est le chemin vers les fichiers de certificats.

Activation du site

Pour activer le site, il faut recharger les différents modules via les commandes suivantes
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod http2
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite ksup.conf
sudo systemctl reload apache2
sudo systemctl restart apache2

Configuration en mode cluster

L'application peut être configurée pour fonctionner en mode cluster.
Merci de vous référer à la documentation détaillant la configuration de ce mode : Mise en place du mode cluster.

Vérification de l'installation

Vérification de l'installation de Tomcat

Pour vérifier l'installation de Tomcat, vous pouvez exécuter la commande suivante :
java -cp /usr/share/tomcat/lib/catalina.jar  org.apache.catalina.util.ServerInfo
Celle-ci doit retourner une sortie de la forme suivante :
Server version: Apache Tomcat/9.0.62
Server built:   Jan 12 1970 17:35:50 UTC
Server number:  9.0.62.0
OS Name:        Linux
OS Version:     5.14.0-362.18.1.el9_3.x86_64
Architecture:   amd64
JVM Version:    17.0.10+7-LTS
JVM Vendor:     Red Hat, Inc.
Où le numéro de version doit être de la forme 9.0.x (suivant la version mineure installée).

Vérification de la connexion avec la base de données

Afin de vérifier si le serveur a bien accès au serveur de base données (si celui-ci est installé sur un autre serveur), il faut effectuer la commande suivante :
nc -z -v %IP_BDD% %PORT%
  • %IP_BDD% est l'adresse IP du serveur de base de données
  • %PORT_BDD% est le port de la base de données
Cette commande doit retourner un message de la forme
Connection to 10.43.34.244 3306 port [tcp/*] succeeded!

Vérification de la connexion au serveur de recherche Opensearch

Afin de vérifier si le serveur a bien accès au serveur de recherche Opensearch (si celui-ci est installé sur un autre serveur), il faut effectuer la commande suivante :
nc -z -v %IP_OPENSEARCH% %PORT_OPENSEARCH%
  • %IP_OPENSEARCH% est l'adresse IP du serveur de recherche
  • %PORT_OPENSEARCH% est le port du serveur de recherche

Mis à jour le 24 octobre 2024