Version : 2023.01.

Dernière mise-à-jour :

SER502 - Installation de Tomcat et les serveurs associés

Contenu du Module

SER502 - Installation de Tomcat et les serveurs associés

Contenu du Module

Désactiver SELinux

Tomcat et JDK

Apache

Présentation d'Apache

Installation

Testez le serveur apache avec telnet

Coupler Tomcat et Apache

MariaDB

Présentation

Installation

Configuration

OpenLDAP

Présentation

Installation

Désactiver SELinux

Afin d'éviter à ce que SELinux interfère avec l'installation et la configuration de Tomcat 8, éditez le fichier /etc/selinux/config afin de le désactiver :

[trainee@centos8 ~]$ su -
Password: fenestros
[root@centos8 ~]# vi /etc/selinux/config
[root@centos8 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

Redémarrez ensuite le système :

[root@centos8 ~]# shutdown -r now

Reconfigurer les Dépôts de CentOS 8

Afin de reconfigurer les dépôts de CentOS 8, saisissez les deux commandes suivantes :

[root@centos8 ~]# sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
[root@centos8 ~]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

Tomcat et JDK

Pour installer Tomcat 10 sous CentOS 8, il convient de saisir les commandes suivantes :

[trainee@centos8 ~]$ su -
Password: fenestros
[root@centos8 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz
--2023-10-03 03:32:49-- https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz
Resolving archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
Connecting to archive.apache.org (archive.apache.org)|65.108.204.189|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11984522 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-10.0.27.tar.gz’
apache-tomcat-10.0.27 100%[=======================>] 11.43M 8.82MB/s in 1.3s
2023-10-03 03:32:51 (8.82 MB/s) - ‘apache-tomcat-10.0.27.tar.gz’ saved [11984522/11984522]
FINISHED --2023-10-03 03:32:51--
Total wall clock time: 1.9s
Downloaded: 1 files, 11M in 1.3s (8.82 MB/s)

Puis :

[root@centos8 ~]# tar xvf apache-tomcat-10.0.27.tar.gz
...
[root@centos8 ~]# mv apache-tomcat-10.0.27 /usr/tomcat10

Installez maintenant le JDK :

[root@centos8 ~]# dnf install java
Last metadata expiration check: 0:08:37 ago on Tue 03 Oct 2023 03:55:50 EDT.
Package java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64 is already installed.
Dependencies resolved.
======================================================================================
Package Arch Version Repository Size
======================================================================================
Upgrading:
copy-jdk-configs noarch 4.0-2.el8 appstream 31 k
java-1.8.0-openjdk x86_64 1:1.8.0.312.b07-2.el8_5 appstream 341 k
java-1.8.0-openjdk-devel x86_64 1:1.8.0.312.b07-2.el8_5 appstream 9.8 M
java-1.8.0-openjdk-headless x86_64 1:1.8.0.312.b07-2.el8_5 appstream 34 M
Transaction Summary
======================================================================================
Upgrade 4 Packages
Total download size: 44 M
Is this ok [y/N]: y

Vérifiez la présence du jre-1.8.0-openjdk dans le répertoire /usr/lib/jvm :

[root@centos8 ~]# ls -l /usr/lib/jvm/jre-1.8.0-openjdk*
lrwxrwxrwx. 1 root root 35 Jul 19 2021 /usr/lib/jvm/jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx 1 root root 51 Nov 13 2021 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64 -> java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre

Ajoutez les trois lignes suivantes au fichier /etc/profile :

...
PATH=$PATH:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
export PATH JAVA_HOME

Important : Vérifiez que la version du jre-1.8.0-openjdk dans le fichier /etc/profile est la même que dans le répertoire /usr/lib/jvm.

Rechargez le fichier /etc/profile et vérifiez les valeurs des deux variables précédemment déclarées :

[root@centos8 ~]# source /etc/profile
[root@centos8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin
[root@centos8 ~]# echo $JAVA_HOME
/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64

Vérifiez ensuite la version de java :

[root@centos8 ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

Définissez maintenant la variable CATALINA_HOME dans le fichier /etc/profile :

...
# Tomcat
CATALINA_HOME="/usr/tomcat10"
export CATALINA_HOME
PATH=$PATH:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
export PATH JAVA_HOME

Rechargez /etc/profile :

[root@centos8 ~]# source /etc/profile
[root@centos8 ~]# echo $CATALINA_HOME
/usr/tomcat10

Démarrez maintenant Tomcat 8 :

[root@centos8 ~]# cd /usr/tomcat10/bin
[root@centos8 bin]# ./startup.sh
Using CATALINA_BASE: /usr/tomcat10
Using CATALINA_HOME: /usr/tomcat10
Using CATALINA_TMPDIR: /usr/tomcat10/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
Using CLASSPATH: /usr/tomcat10/bin/bootstrap.jar:/usr/tomcat10/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

Utilisez le navigateur de texte lynx pour tester Tomcat 8 :

[root@centos8 bin]# yum install lynx
...
[root@centos8 bin]# lynx --dump http://localhost:8080
[1]Home [2]Documentation [3]Configuration [4]Examples [5]Wiki
[6]Mailing Lists [7]Find Help
Apache Tomcat/10.0.27
If you're seeing this, you've successfully installed Tomcat. Congratulations!
[tomcat logo]
Recommended Reading:
...

Apache

Présentation d'Apache

Un serveur web est une machine doté d'un logiciel serveur qui attend des requêtes de la part de machines clientes afin de leur livrer de documents de types différents.

En 1994 le développement du serveur web le plus connue à l'époque, le démon HTTP, a été arrêté suite au départ de la NCSA de son principal développeur, Rob McCool.

Au début de l'année 1995, un groupe de webmestres indépendants s'est mis en place sous la direction de Brian Behlendorf et Cliff Skolnick pour reprendre le travail sur ce démon. Ce projet a pris le nom Apache. En même temps la NCSA a repris son propre travail de développement sur son démon HTTP. L'arrivée dans le groupe Apache de deux personnes de la NCSA en tant que membres honoraires, Brandon Long et Beth Frank a permis la mise en commun des connaissances des deux groupes.

Le projet Apache est un projet de développement d'un serveur web libre pour les plateformes Unix et Windows™. La première version officielle, la 0.6.2 est sortie en avril 1995.

La Fondation Apache, créée en 1999 par l'équipe Apache, gère aujourd'hui non seulement le projet Apache mais aussi un grand nombre d'autres projets. La liste des projets de la Fondation peut être trouvée ici.

Apache est modulaire. Certains modules fondamentaux conditionnent comment Apache traite la question du multitraitement. Les modules multitraitements - MPM - Multi-Processing Modules - sont différents selon le système d'exploitation utilisé et la charge attendue.

mpm-winnt - module propre à Windows™ qui utilise son support réseau natif,

prefork - module propre à Unix et Linux qui implémente un serveur mono-tâche à duplication,

perchild - module propre à Unix et Linux qui implémente un serveur autorisant des démons servant les requêtes à être assigner à plusieurs id utilisateurs,

worker - module propre à Unix et Linux qui implémente un serveur hybride multi-tâche et multitraitement.

Ces modules sont compilés statiquement au binaire Apache et sont mutuellement exclusifs.

Installation

Sous CentOS 8, Apache n'est pas installé par défaut :

[root@centos8 bin]# cd ~
[root@centos8 ~]# rpm -qa | grep httpd
[root@centos8 ~]# dnf install httpd
Last metadata expiration check: 0:54:32 ago on Tue 03 Oct 2023 07:16:01 EDT.
Dependencies resolved.
======================================================================================
Package Arch Version Repository Size
======================================================================================
Installing:
httpd x86_64 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 1.4 M
Installing dependencies:
apr x86_64 1.6.3-12.el8 appstream 129 k
apr-util x86_64 1.6.1-6.el8 appstream 105 k
centos-logos-httpd noarch 85.8-2.el8 baseos 75 k
httpd-filesystem noarch 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 39 k
httpd-tools x86_64 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 107 k
mod_http2 x86_64 1.15.7-3.module_el8.4.0+778+c970deab appstream 154 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 appstream 25 k
apr-util-openssl x86_64 1.6.1-6.el8 appstream 27 k
Enabling module streams:
httpd 2.4
Transaction Summary
======================================================================================
Install 9 Packages
Total download size: 2.1 M
Installed size: 5.6 M
Is this ok [y/N]: y

Le service n'est pas configuré pour démarrer automatiquement :

[root@centos7 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd(8)
man:apachectl(8)

Saisissez donc les commandes suivantes et vérifiez le résultat :

[root@centos8 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: di>
Active: inactive (dead)
Docs: man:httpd.service(8)
[root@centos8 ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@centos8 ~]# systemctl start httpd
[root@centos8 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: dis>
Active: active (running) since Tue 2023-10-03 08:11:58 EDT; 4s ago
Docs: man:httpd.service(8)
Main PID: 48517 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 100949)
Memory: 39.2M
CGroup: /system.slice/httpd.service
├─48517 /usr/sbin/httpd -DFOREGROUND
├─48518 /usr/sbin/httpd -DFOREGROUND
├─48519 /usr/sbin/httpd -DFOREGROUND
├─48520 /usr/sbin/httpd -DFOREGROUND
└─48521 /usr/sbin/httpd -DFOREGROUND
Oct 03 08:11:58 centos8.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
Oct 03 08:11:58 centos8.ittraining.loc systemd[1]: Started The Apache HTTP Server.
Oct 03 08:11:58 centos8.ittraining.loc httpd[48517]: Server configured, listening on:>

Testez le serveur apache avec telnet

Telnet n'est pas installé par défaut sous CentOS 8 :

[root@centos8 ~]# which telnet
/usr/bin/which: no telnet in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin)

Installez donc telnet :

[root@centos8 ~]# dnf install telnet
Last metadata expiration check: 0:57:56 ago on Tue 03 Oct 2023 07:16:01 EDT.
Dependencies resolved.
======================================================================================
Package Architecture Version Repository Size
======================================================================================
Installing:
telnet x86_64 1:0.17-76.el8 appstream 72 k
Transaction Summary
======================================================================================
Install 1 Package
Total download size: 72 k
Installed size: 119 k
Is this ok [y/N]: y

Testez maintenant le service Apache :

[root@centos8 ~]# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Tapez ensuite GET / :

GET /
...
<hr>
<div class="row">
<div class="col">
<h2 class="alert-heading">Important note!</h2>
<p>The CentOS Project has nothing to do with this website or its content, it just provides the software that makes the website run.</p>
<p>If you have issues with the content of this site, contact the owner of the domain, not the CentOS project. Unless you intended to visit CentOS.org, the CentOS Project does not have anything to do with this website, the content or the lack of it.</p>
<p>For example, if this website is www.example.com, you would find the owner of the example.com domain at the following WHOIS server: <a href="http://www.internic.net/whois.html">http://www.internic.net/whois.html</a></p>
</div>
</div>
</main>
<footer class="container">
<div>&#xA9; 2021 The CentOS Project | <a href="https://www.centos.org/legal/">Legal</a> | <a href="https://www.centos.org/legal/privacy/">Privacy</a></div>
</footer>
</body>
</html>
Connection closed by foreign host.
[root@centos8 ~]#

Pour voir la version d'Apache installée, utilisez la commande suivante :

[root@centos8 ~]# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Nov 12 2021 04:57:27

Coupler Tomcat et Apache

Le schéma suivant indique le couplage Tomcat/Apache :

Téléchargez le connecteur mod-jk pour Apache :

[root@centos8 ~]# wget http://apache.mirrors.ovh.net/ftp.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.49-src.tar.gz
--2023-10-03 08:19:47-- http://apache.mirrors.ovh.net/ftp.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.49-src.tar.gz
Resolving apache.mirrors.ovh.net (apache.mirrors.ovh.net)... 213.32.5.7
Connecting to apache.mirrors.ovh.net (apache.mirrors.ovh.net)|213.32.5.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1702479 (1.6M) [application/octet-stream]
Saving to: ‘tomcat-connectors-1.2.49-src.tar.gz’
tomcat-connectors-1.2 100%[=======================>] 1.62M --.-KB/s in 0.07s
2023-10-03 08:19:47 (23.9 MB/s) - ‘tomcat-connectors-1.2.49-src.tar.gz’ saved [1702479/1702479]

Désarchivez l'archive et placez-vous dans le répertoire tomcat-connectors-1.2.49-src :

[root@centos8 ~]# tar xvf tomcat-connectors-1.2.49-src.tar.gz
[root@centos8 ~]# cd tomcat-connectors-1.2.49-src/

Installez le binaire apxs inclut dans le paquet httpd-devel. Le binaire apxs est utilisé pour construire les modules d'Apache :

[root@centos8 tomcat-connectors-1.2.49-src]# dnf install httpd-devel
Last metadata expiration check: 1:05:29 ago on Tue 03 Oct 2023 07:16:01 EDT.
Dependencies resolved.
======================================================================================
Package Arch Version Repository Size
======================================================================================
Installing:
httpd-devel x86_64 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 222 k
Upgrading:
libdb x86_64 5.3.28-42.el8_4 baseos 751 k
libdb-utils x86_64 5.3.28-42.el8_4 baseos 150 k
openldap x86_64 2.4.46-18.el8 baseos 352 k
Installing dependencies:
apr-devel x86_64 1.6.3-12.el8 appstream 246 k
apr-util-devel x86_64 1.6.1-6.el8 appstream 86 k
cyrus-sasl-devel x86_64 2.1.27-5.el8 baseos 128 k
expat-devel x86_64 2.2.5-4.el8 baseos 55 k
libdb-devel x86_64 5.3.28-42.el8_4 appstream 47 k
openldap-devel x86_64 2.4.46-18.el8 baseos 811 k
Transaction Summary
======================================================================================
Install 7 Packages
Upgrade 3 Packages
Total download size: 2.8 M
Is this ok [y/N]: y

Placez-vous dans le sous-répertoire native et lancez les commandes pour effectuer la compilation :

[root@centos8 tomcat-connectors-1.2.49-src]# which apxs
/usr/bin/apxs
[root@centos8 tomcat-connectors-1.2.49-src]# cd native/
[root@centos8 native]# ./configure --with-apxs=/bin/apxs
...
[root@centos8 native]# make
...
[root@centos8 native]# libtool --finish /usr/lib64/httpd/modules
...
[root@centos8 native]# make install
...

Modifiez ensuite la directive ServerName du fichier /etc/httpd/conf/httpd.conf ainsi :

...
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80
ServerName www.ittraining.loc:80
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
...

et ajoutez les directives suivantes à la fin du fichier, en dessous de la directive IncludeOptional afin de prendre en compte mod_jk et sa configuration :

...
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /docs/* worker1
JkMount /docs worker1

Les différentes directives Apache utilisables avec mod_jk sont :

Directive	Description
JkWorkersFile	Spécifie le nom et l'emplacement du fichier de configuration du module nommé workers.properties par convention. Le chemin peut être absolu ou rélatif à l'installation d'Apache.
JkWorkerProperty	L'utilisation de cette directive est mutuellement exclusive avec l'utilisation de la directive JkWorkersFile. Elle permet de définir les directives du fichier workers.properties directement dans le fichier httpd.conf sous la forme JkWorkerProperty <Directive> avec une directive par ligne. Chaque ligne doit donc commencer par JkWorkerProperty.
JkLogFile	Spécifie le nom et l'emplacement du fichier de journalisation du module. Le chemin peut être absolu ou relatif à l'installation d'Apache.
JkLogLevel	Spécifie le niveau de journalisation du module. Les valeurs ici peuvent être trace, debug, info, warn et error. Le fonctionnement est similaire à syslog dans la mesure où si la valeur est info alors tous les messages des niveaux info, warn et error seront journalisés.
JkMount	Spécifie l'association d'un contexte d'application Tomcat avec un travailleur. Autrement dit, cette directive spécifie quelles sont les ressources d'une application Tomcat accessibles en passant par Apache. La syntaxe est JkMount <URL> <Nom du Travailleur>.
JkUnMount	Spécifie une interdiction de redirection de requêtes vers une ressource d'une application Tomcat. La syntaxe est JkUnMount <URL> <Nom du Travailleur>. Notez que cette directive est prioritaire par rapport à la directive JkMount.
JkAutoAlias	Spécifie un alias entre le répertoire des applications de Tomcat et le répertoire de publication des fichiers statiques d'Apache. De cette façon, les deux serveurs partagent un répertoire de publication unique.
JkLogStampFormat	Spécifie le format de la date inscrite dans le fichier de journalisation du module en utilisant des séquences de contrôle, par exemple, JkLogStampFormat “[%a %b %d %H:%M:%S %Y]“.
JkExtractSSL	Spécifie que le module peut transmettre les informations SSL vers le serveur Tomcat.
JkHTTPSIndicator	Spécifie le nom de la variable Apache contenant l'indication SSL.
JkCERTSIndicator	Spécifie le nom de la variable Apache contenant le certificat SSL.
JkSESSIONIndicator	Spécifie le nom de la variable Apache contenant l'identifiant de session SSL.

Modifiez ensuite le fichier /etc/hosts pour la prise en charge du nom de notre serveur :

[root@centos8 native]# vi /etc/hosts
[root@centos8 native]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.2.45 www.ittraining.loc

Créez ensuite le fichier /etc/httpd/conf/workers.properties :

[root@centos8 native]# cd ~
[root@centos8 ~]# vi /etc/httpd/conf/workers.properties
[root@centos8 ~]# cat /etc/httpd/conf/workers.properties
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1
worker.worker1.port=8009

Décommentez les lignes concernant le connecteur dans le fichier /usr/tomcat10/conf/server.xml :

...
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="127.0.0.1"
port="8009"
redirectPort="8443" secretRequired="false" />
...

Redémarrez ensuite les serveurs httpd et tomcat :

[root@centos8 ~]# systemctl restart httpd
[root@centos8 ~]# cd /usr/tomcat10/bin/
[root@centos8 bin]# ./shutdown.sh
Using CATALINA_BASE: /usr/tomcat10
Using CATALINA_HOME: /usr/tomcat10
Using CATALINA_TMPDIR: /usr/tomcat10/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
Using CLASSPATH: /usr/tomcat10/bin/bootstrap.jar:/usr/tomcat10/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos8 bin]# ./startup.sh
Using CATALINA_BASE: /usr/tomcat10
Using CATALINA_HOME: /usr/tomcat10
Using CATALINA_TMPDIR: /usr/tomcat10/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
Using CLASSPATH: /usr/tomcat10/bin/bootstrap.jar:/usr/tomcat10/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

Vérifiez maintenant le bon fonctionnement d'Apache et de Tomcat en consultant les liens suivants :

[root@centos7 bin]# lynx --dump http://www.ittraining.loc
[root@centos7 bin]# lynx --dump http://www.ittraining.loc:8080
[root@centos7 bin]# lynx --dump http://www.ittraining.loc/docs/

Important : Notez qu'en consultant l'adresse http://www.i2tch.loc/docs/ vous obtenez la même page que lors de votre consultation de l'adresse http://www.i2tch.loc:8080. Ceci implique que le serveur Apache est maintenant un serveur frontal pour le serveur Tomcat 10.

Créer un Service Systemd pour Tomcat

Créez un utilisateur tomcat :

[root@centos8 bin]# useradd -M -s /bin/nologin -d /usr/tomcat10 tomcat

Naviguez à votre répertoire $CATALINA_HOME :

[root@centos8 bin]# cd ..
[root@centos8 tomcat10]#

Modifiez les droits sur certains fichiers et répertoires :

[root@centos8 tomcat10]# chgrp -R tomcat conf
[root@centos8 tomcat10]# chmod g+rwx conf
[root@centos8 tomcat10]# chmod g+r conf/*
[root@centos8 tomcat10]# chown -R tomcat logs/ temp/ webapps/ work/
[root@centos8 tomcat10]# chgrp -R tomcat bin
[root@centos8 tomcat10]# chgrp -R tomcat lib
[root@centos8 tomcat10]# chmod g+rwx bin
[root@centos8 tomcat10]# chmod g+r bin/*

Créez le fichier de service /etc/systemd/system/tomcat.service :

[root@centos8 tomcat10]# vi /etc/systemd/system/tomcat.service
[root@centos8 tomcat10]# cat /etc/systemd/system/tomcat.service
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME="/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64"
Environment=CATALINA_PID=/usr/tomcat10/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/tomcat10/
Environment=CATALINA_BASE=/usr/tomcat10/
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/usr/tomcat10/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target

Redémarrez systemd :

[root@centos8 tomcat10]# systemctl daemon-reload

Arrêtez Tomcat :

[root@centos8 tomcat10]# cd bin
[root@centos8 bin]# ./shutdown.sh
Using CATALINA_BASE: /usr/tomcat10
Using CATALINA_HOME: /usr/tomcat10
Using CATALINA_TMPDIR: /usr/tomcat10/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
Using CLASSPATH: /usr/tomcat10/bin/bootstrap.jar:/usr/tomcat10/bin/tomcat-juli.jar
Using CATALINA_OPTS:

Testez le service tomcat :

[root@centos8 bin]# systemctl start tomcat

Vérifiez que le Tomcat a démarré :

[root@centos8 bin]# ps aux | grep tomcat
tomcat 59078 13.6 1.1 5723232 180292 ? Sl 10:11 0:03 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin/java -Djava.util.logging.config.file=/usr/tomcat10//conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Xms512M -Xmx1024M -server -XX:+UseParallelGC -Dignore.endorsed.dirs= -classpath /usr/tomcat10//bin/bootstrap.jar:/usr/tomcat10//bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat10/ -Dcatalina.home=/usr/tomcat10/ -Djava.io.tmpdir=/usr/tomcat10//temp org.apache.catalina.startup.Bootstrap start
root 59136 0.0 0.0 12136 1104 pts/0 S+ 10:12 0:00 grep --color=auto tomcat
[root@centos8 bin]# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disab>
Active: active (running) since Tue 2023-10-03 10:11:55 EDT; 35s ago
Process: 59071 ExecStart=/usr/tomcat10/bin/startup.sh (code=exited, status=0/SUCCES>
Main PID: 59078 (java)
Tasks: 49 (limit: 100949)
Memory: 162.9M
CGroup: /system.slice/tomcat.service
└─59078 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin/ja>
Oct 03 10:11:55 centos8.ittraining.loc systemd[1]: Starting Apache Tomcat Web Applica>
Oct 03 10:11:55 centos8.ittraining.loc systemd[1]: Started Apache Tomcat Web Applicat>
[root@centos8 bin]#

Dernièrement vérifiez que les serveur Tomcat est bien démarré sous la responsabilité de l'utilisateur tomcat :

[root@centos8 bin]# pgrep -u tomcat
59078

MariaDB

Présentation

MariaDB est un fork de MySQL et est inclut dans les dépôts de CentOS 8.

Installation

Pour installer MariaDB, utilisez yum :

[root@centos8 bin]# cd ~
[root@centos8 ~]# dnf install mariadb mariadb-server
Last metadata expiration check: 2:58:07 ago on Tue 03 Oct 2023 07:16:01 EDT.
Dependencies resolved.
======================================================================================
Package Arch Version Repo Size
======================================================================================
Installing:
mariadb x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 6.0 M
mariadb-server x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 16 M
Installing dependencies:
mariadb-common x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 64 k
mariadb-connector-c x86_64 3.1.11-2.el8_3 appstream 200 k
mariadb-connector-c-config
noarch 3.1.11-2.el8_3 appstream 15 k
mariadb-errmsg x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 234 k
perl-DBD-MySQL x86_64 4.046-3.module_el8.3.0+419+c2dec72b appstream 156 k
Installing weak dependencies:
mariadb-backup x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 6.1 M
mariadb-gssapi-server x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 51 k
mariadb-server-utils x86_64 3:10.3.28-1.module_el8.3.0+757+d382997d appstream 1.1 M
Enabling module streams:
mariadb 10.3
perl-DBD-MySQL 4.046
Transaction Summary
======================================================================================
Install 10 Packages
Total download size: 30 M
Installed size: 153 M
Is this ok [y/N]: y

Ensuite démarrez votre serveur MariaDB :

[root@centos8 ~]# systemctl status mariadb.service
● mariadb.service - MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: >
Active: inactive (dead)
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
[root@centos8 ~]# systemctl enable mariadb.service
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@centos8 ~]# systemctl start mariadb.service
[root@centos8 ~]# systemctl status mariadb.service
● mariadb.service - MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-10-03 10:17:52 EDT; 6s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 61941 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 61796 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
Process: 61770 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 61909 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 100949)
Memory: 83.1M
CGroup: /system.slice/mariadb.service
└─61909 /usr/libexec/mysqld --basedir=/usr
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: See the MariaDB Knowledgebase at http://mariadb.com/kb or the
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: MySQL manual for more instructions.
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: Please report any problems at http://mariadb.org/jira
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: The latest information about MariaDB is available at http://mariadb.org/.
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: You can find additional information about the MySQL part at:
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: http://dev.mysql.com
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: Consider joining MariaDB's strong and vibrant community:
Oct 03 10:17:52 centos8.ittraining.loc mysql-prepare-db-dir[61796]: https://mariadb.org/get-involved/
Oct 03 10:17:52 centos8.ittraining.loc mysqld[61909]: 2023-10-03 10:17:52 0 [Note] /usr/libexec/mysqld (mysqld 10.3.28-MariaDB) starting as process 61909 ...
Oct 03 10:17:52 centos8.ittraining.loc systemd[1]: Started MariaDB 10.3 database server.

Configuration

Lors de l'installation MariaDB n'a pas de mot de passe attribué à l'utilisateur root. Créez donc le mot de passe fenestros puis testez la connexion à MariaDB :

[root@centos8 ~]# mysqladmin -u root password fenestros
[root@centos8 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@centos8 ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.3.28-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
[root@centos8 ~]#

OpenLDAP

Présentation

LDAP est une abréviation de Lighweight Directory Access Protocol. Comme son nom indique, LDAP est un service d'annuaire.

Un service d'annuaire est une base de données spécialisée optimisée pour la consultation. Certains services d'annuaire peuvent être locaux tandis que d'autres sont appelés distribués. Un bon exemple d'une service d'annuaire distribué est le DNS.

L'installation du serveur OpenLDAP ne peut être réussie que dans le cas où le support pour les bases de données BerkeleyDB soit installé au préalable.

Installation

Pour installer le serveur OpenLDAP, utilisez la commande dnf :

[root@centos8 ~]# dnf install openldap-servers openldap-clients openldap
Last metadata expiration check: 3:04:13 ago on Tue 03 Oct 2023 07:16:01 EDT.
Package openldap-2.4.46-18.el8.x86_64 is already installed.
Dependencies resolved.
==================================================================================================================================================================================================================
Package Architecture Version Repository Size
==================================================================================================================================================================================================================
Installing:
openldap-clients x86_64 2.4.46-18.el8 baseos 202 k
openldap-servers x86_64 2.4.46-18.el8 powertools 2.2 M
Transaction Summary
==================================================================================================================================================================================================================
Install 2 Packages
Total download size: 2.4 M
Installed size: 5.4 M
Is this ok [y/N]: y

Ensuite démarrez votre serveur OpenLDAP :

[root@centos8 ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
[root@centos8 ~]# systemctl enable slapd
Created symlink /etc/systemd/system/openldap.service → /usr/lib/systemd/system/slapd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/slapd.service → /usr/lib/systemd/system/slapd.service.
[root@centos8 ~]# systemctl start slapd
[root@centos8 ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-10-03 10:22:09 EDT; 8s ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
Process: 62980 ExecStart=/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:/// (code=exited, status=0/SUCCESS)
Process: 62966 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
Main PID: 62982 (slapd)
Tasks: 2 (limit: 100949)
Memory: 3.2M
CGroup: /system.slice/slapd.service
└─62982 /usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:///
Oct 03 10:22:09 centos8.ittraining.loc systemd[1]: Starting OpenLDAP Server Daemon...
Oct 03 10:22:09 centos8.ittraining.loc runuser[62969]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
Oct 03 10:22:09 centos8.ittraining.loc runuser[62969]: pam_unix(runuser:session): session closed for user ldap
Oct 03 10:22:09 centos8.ittraining.loc slapd[62980]: @(#) $OpenLDAP: slapd 2.4.46 (Aug 10 2021 05:11:20) $
mockbuild@x86-02.mbox.centos.org:/builddir/build/BUILD/openldap-2.4.46/openldap-2.4.46/servers/slapd
Oct 03 10:22:09 centos8.ittraining.loc slapd[62982]: slapd starting
Oct 03 10:22:09 centos8.ittraining.loc systemd[1]: Started OpenLDAP Server Daemon.

Copyright © 2023 Hugh Norris.