Installation d'un VPS pour AmapJ
Un VPS est un Virtual Private Server, pouvant être loué à n'importe quel opérateur, et pouvant supporter une ou plusieurs instances de AMAPJ
La procédure suivante va vous indiquer comment installer complètement AmapJ sur un VPS, avec un frontal Apache et utilisation de certificats SSL pour sécuriser les transferts
Dans la suite de la procèdure, on suppose que vous utilisez l'OS Debian en anglais .
L'installation de AmapJ s'effectuera en trois étapes
- Etape 1 : initialisation du VPS, puis installation des outils : firewall , java , apache, (avec certificats HTTPS), wkhtmltopdf
- Etape 2 : installation de postfix, qui servira pour l'envoi des mails
- Etape 3 : installation de l'instance AmapJ (avec Tomcat)
- Etape 4 : vérification du bon fonctionnement de votre instance AmapJ
Etape 1 - Préparation du VPS et des outils (firewall,java,apache,...)
Location d'un serveur VPS
A vous de choisir parmi les offres du marché ...
Typiquement, il faut un serveur avec 2Go de RAM pour faire fonctionner l'application AMAPJ
Nom de domaine
Vous allez avoir besoin d'un nom de domaine, à louer vous même auprès de votre opérateur
Dans notre exemple, on va supposer que votre domaine est le-nom-de-mon-amap.fr
Pour AmapJ, nous allons utiliser un sous domaine ,dans notre exemple, on va prendre contrats.le-nom-de-mon-amap.fr
Vous devez maintenant configurer votre sous domaine pour que celui ci pointe vers l'adresse IP de votre serveur VPS
Pour faire ceci, vous récupérez l'adresse IP de votre serveur VPS (commande ip addr en tant que root), et vous renseignez cette adresse IP dans le paramétrage DNS de votre nom de domaine
Sécurisation de l'accès SSH
Tout d'abord, nous allons supprimer l'accès par défaut par SSH sur le port 22, et le remplacer par un accès sur un autre port, par exemple 12345, et uniquement avec une paire de clés privée/publique.
Pour cela, sur une machine Windows, générer une paire de clés avec PuttyGen, bien sauvegarder le fichier .ppk
Ensuite, se logguer en tant que root sur le VPS, faire
vi /etc/ssh/sshd_config
et ajouter au début du fichier les lignes suivantes
Port 3128
RSAAuthentication yes
PubkeyAuthentication yes
PubkeyAcceptedAlgorithms +ssh-rsa
PasswordAuthentication no
Ensuite, créer un fichier
$USER_HOME/.ssh/authorized_keys
et mettre pour contenu
ssh-rsa [VOTRE CLE PUBLIQUE SUR UNE SEULE LIGNE]
puis
chmod go-w .ssh .ssh/authorized_keys
Faire un reboot de la machine. Pour vous connecter par SSH, il faut maintenant utiliser le port 12345 et la clé privée.
Création de l'utilisateur
Nous allons créer un utilisateur amap1 qui fera fonctionner notre serveur AmapJ.
Se logguer en tant que root, creer l'utilisateur amap1 avec la commande
adduser amap1
et renseigner un mot de passe pour cet utilisateur
Configuration du fuseau horaire
Il faut ensuite configurer le fuseau horaire.Toujours en tant que root, lancer la commande
dpkg-reconfigure tzdata
Divers outils
Toujours en tant que root, lancer la commande
apt update
apt install -y zip sudo apt-transport-https gpg ufw
Mise en place du firewall
Nous allons mettre en place un firewall pour que votre VPS soit accessible uniquement par les ports 12345 , 80 et 443 (et uniquement sur l'IP v4)
Pour cela, executer les commandes suivantes en étant loggué en tant que root :
# On accepte uniquement le traffic sur 12345 , 80 et 443 avec l'IP v4
# ATTENTION : si vous avez remplacé 12345 par une autre valeur, il faut bien la modifier ici !!
ufw default deny incoming
ufw default allow outgoing
ufw allow proto tcp to 0.0.0.0/0 port 12345
ufw allow proto tcp to 0.0.0.0/0 port 80
ufw allow proto tcp to 0.0.0.0/0 port 443
Pour verifier si tout est ok avant de démarrer le firewall
ufw show added
Demarrer le firewall
Executer les commandes suivantes en tant que root :
ufw enable
Pour verifier que tout est ok
ufw status verbose
Installation de Java
AmapJ peut utiliser openJDK 8. Pour l'installer, en tant que root, lancer les commandes suivantes (documentation : https://adoptium.net/installation/linux/)
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
apt update
apt install -y temurin-8-jdk
Installation du frontal Http Apache
Vous devez vous logguer en tant que root, et executer les commandes suivantes :
apt install -y apache2
Faire un test en ouvrant la page http://contrats.le-nom-de-mon-amap.fr/ avec votre navigateur
On doit obtenir
Apache2 Debian Default Page
It works!
This is the default welcome page ...
Ensuite, aller dans le repertoire /var/www/, supprimer le répertoire html (et son contenu) présent dans ce répertoire.
Créez un nouveau repertoire /var/www/amap1 et placer dans ce repertoire un nouveau fichier index.html avec le contenu suivant
<html>
<body>
<p>Serveur AmapJ</p>
</body>
</html>
Toujours en tant que root, vous devez activer les modules AJP et SSL et HTTP2
a2enmod proxy_ajp
a2enmod ssl
a2enmod http2
systemctl restart apache2
Toujours en tant que root, vous devez créer un fichier avec le nom contrats.le-nom-de-mon-amap.fr.conf dans le repertoire /etc/apache2/sites-available/ avec ce contenu
<VirtualHost *:80>
ServerName contrats.le-nom-de-mon-amap.fr
DocumentRoot "/var/www/amap1"
<Directory "/var/www/amap1">
Options +FollowSymLinks
AllowOverride all
Require all granted
</Directory>
ErrorLog /var/log/apache2/error.contrats.le-nom-de-mon-amap.fr.log
CustomLog /var/log/apache2/access.contrats.le-nom-de-mon-amap.fr.log combined
</VirtualHost>
Ensuite il faut supprimer les 3 fichiers
/etc/apache2/sites-enabled/000-default.conf
/etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/default-ssl.conf
Toujours en tant que root, vous devez activer votre site
cd /etc/apache2/sites-available/
a2ensite contrats.le-nom-de-mon-amap.fr
systemctl restart apache2
Faire un test en ouvrant la page http://contrats.le-nom-de-mon-amap.fr/index.html avec votre navigateur
On doit obtenir
Serveur AmapJ
Obtention d'un certificat SSL
Maintenant, il est temps de sécuriser les accès par SSL.
Nous allons mettre en place un certificat SSL pour le sous domaine contrats.le-nom-de-mon-amap.fr, avec Let's Encrypt
En tant que root, lancer les commandes (extrait de cette documentation : https://certbot.eff.org/instructions?ws=apache&os=debiantesting )
apt update
apt install snapd
Se deconnecter et se reconnecter en root. Lancer les commandes
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Toujours en tant que root, dans n'importe quel repertoire, lancer la commande
certbot --authenticator webroot --installer apache -w /var/www/amap1 -d contrats.le-nom-de-mon-amap.fr --redirect
Il faut ensuite régler la ciphier suite : éditer le fichier /etc/apache2/sites-availables/contrats.le-nom-de-mon-amap.fr-le-ssl.conf et avant les lignes
</VirtualHost>
</IfModule>
ajouter les lignes suivantes
# See https://ssl-config.mozilla.org/#server=apache&version=2.4.41&config=modern&openssl=1.1.1d&guideline=5.6
# modern configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLHonorCipherOrder off
SSLSessionTickets off
</VirtualHost>
</IfModule>
Test de l'accès par HTTPS
Avec un navigateur WEB, ouvrir la page
http://contrats.le-nom-de-mon-amap.fr/
Normalement, on est redirigé vers https://contrats.le-nom-de-mon-amap.fr/ et on doit voir la page suivante
Serveur AmapJ
Lancer ensuite dans un navigateur
https://www.ssllabs.com/ssltest/analyze.html?d=contrats.le-nom-de-mon-amap.fr&latest
Vous devez alors obtenir la note A, qui prouve que le certificat HTTPS est bien installé.
Vous pouvez aussi utiliser ce site : https://www.digicert.com/help/ pour vérifier que tout est OK.
Vous pouvez aussi vérifier que la page est bien servie en HTTP2.
A NOTER : il ne faut pas supprimer la ligne
DocumentRoot "/var/www/amap1"
du fichier /etc/apache2/sites-enabled/contrats.le-nom-de-mon-amap.fr
En effet, si cette ligne est supprimée, il ne sera pas possible de renouveler les certificats
Mise en place de wkhtmltopdf
wkhtmltopdf est l'outil qui va permettre la génération des PDF (pour les contrats d'engagement, les bulletins d'adhésion, ...).
Nous considerons que vous utilisez une Debian 12 (bookworm)
Installer les packages nécessiares : en tant que root, lancer les commandes
apt install fonts-liberation xfonts-base fontconfig libjpeg62-turbo xfonts-75dpi
Ensuite, il faut visiter le site https://github.com/wkhtmltopdf/packaging/releases/
Il faut alors télécharger le fichier wkhtmltox_0.12.6.1-3.bookworm_amd64.deb et le placer dans le répertoire tmp
en tant que root
cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
dpkg -i wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
Pour des raisons de sécurité, il est alors nécessaire de "confiner" le logiciel wkhtmltopdf en utilisant AppAmor (la documentation suivante provient de https://wkhtmltopdf.org/apparmor.html)
En tant que root, créer un fichier /etc/apparmor.d/usr.local.bin.wkhtmltopdf avec le contenu suivant
#include <tunables/global>
/usr/local/bin/wkhtmltopdf {
# Allow base system access.
#include <abstractions/base>
# Allows:
# - Basic network connectivity (TCP/UDP)
# - Nameservice access (the whole resolver chain)
# - Ability to interact with PAM
# - Ability to interact with name-services like nis, ldap, winbind, kerberos
# Remove if you don't need network access.
#include <abstractions/nameservice>
#include <abstractions/openssl>
# Allow access to font infrastructure
#include <abstractions/fonts>
deny capability sys_ptrace,
# System paths wkhtmltopdf needs to operate
/proc/*/maps r,
/usr/local/bin/wkhtmltopdf mr,
/var/cache/fontconfig/* r,
/tmp/** rwlk,
}
Il faut ensuite lancer la commande
systemctl reload apparmor
Pour vérifier que apparmor est bien actif, vous pouvez lancer la commande
sudo aa-status
Vous pouvez enfin tester l'installation de wkhtmltopdf: se logguer en tant que amap1, lancer les commandes suivantes :
cd /tmp
wkhtmltopdf http://www.google.com output.pdf
Vous devez maintenant récupérer le fichier output.pdf et l'ouvrir : ce document PDF doit contenir une copie de la page de garde du site google.com
Si vous faites maintenant
cd /home/amap1
wkhtmltopdf http://www.google.com output.pdf
La commande doit échouer (elle n'est pas autorisée par apparmor à s'executer dans le repertoire /home/amap1)
Etape 2 - Mise en place de PostFix
Pour l'envoi des mails, il est nécessaire d'installer PostFix. Pour cela, se logguer en tant que root, puis lancer les commandes suivantes
apt install postfix
Vous obtenez alors
Vous cliquez sur OK, vous obtenez alors
Vous choissisez "Site Internet", vous cliquez sur OK , vous obtenez alors
Vous devez saisir le nom de votre sous domaine, c'est à dire dans notre exemple contrats.le-nom-de-mon-amap.fr
Vous cliquez alors sur OK, et normalement Postfix est installé.
Il faut maintenant terminer la configuration de postfix :vous faites un vi sur le fichier /etc/postfix/main.cf
Au début du fichier, vous trouvez la ligne
myhostname = vpsxxx.xx.xx
et vous la remplacez par cette ligne
myhostname = contrats.le-nom-de-mon-amap.fr
A la fin du fichier, vous trouvez la ligne
inet_interfaces = all
et vous la remplacez par ces trois lignes
inet_interfaces = loopback-only
smtp_tls_security_level = may
maillog_file=/var/log/postfix.log
Vous lancez alors les commandes
postfix stop
postfix start
Configuration du reverse DNS
Il est necessaire de configurer le reverse DNS pour eviter que certains serveurs de messagerie rejettent les messages (exemple : gmx.net).
Il faut utiliser la console d'administration de votre fournisseur de VPS, et dans le champ Reverse DNS, il faut positionner la valeur : contrats.le-nom-de-mon-amap.fr
Configuration spéciale de PostFix pour les serveurs Orange.fr
Cette partie est extraite de cet article PostFix Slow
Lorsque vous envoyez un grand nombre de mails vers certains domaines, notamment « orange.fr », « wanadoo.fr » ou encore « laposte.net », vous pouvez facilement vous retrouvez face à des problèmes d’envoi de mails, se traduisant dans vos logs par des erreurs de type « too many connections ».
Voici l’erreur en question que l’on peut retrouver dans les logs :
Feb 6 14:31:48 mail postfix/smtp[21691]: F2C2D8C7912:
to=<utilisateur@laposte.net>, relay=smtpz4.laposte.net[194.117.213.1]:25,
delay=13, delays=0.01/0.02/13/0, dsn=4.7.0, status=deferred
(host smtpz4.laposte.net[194.117.213.1] refused to talk to me:
421 4.7.0 Error: too many connections)
Voici la configuration à réaliser pour ralentir le débit d’envoi de Postfix
Il faut d'abord créer le fichier transport.
vi /etc/postfix/transport
avec ce contenu
orange.fr slow:
wanadoo.fr slow:
laposte.net slow:
Il faut penser ensuite à reconstruire la base transport avec la commande :
postmap /etc/postfix/transport
Ensuite, il faut ajouter cette ligne dans /etc/postfix/master.cf :
# Postfix-slow
slow unix - - n - 5 smtp -o syslog_name=postfix-slow -o smtp_destination_concurrency_limit=3 -o slow_destination_rate_delay=1
Puis, il faut ajouter les lignes ci-dessous dans /etc/postfix/main.cf :
transport_maps = hash:/etc/postfix/transport
slow_destination_concurrency_limit = 3
slow_destination_rate_delay = 3s
Pour finir, il vous faudra recharger la configuration de Postfix :
service postfix reload
Configuration SPF
Il faut ensuite configurer la vérification des mails par SPF (indispensable si vous ne voulez pas que la plupart de vos mails finissent en Spam)
Pour cela, vous vous rendez dans les paramètres DNS de votre sous domaine contrats.le-nom-de-mon-amap.fr
Vous devez alors ajouter un record TXT contenant
v=spf1 a -all
Configuration DKIM
Documentation de référence : https://wiki.evolix.org/HowtoOpenDKIM
Il faut ensuite configurer la vérification des mails par DKIM (indispensable si vous ne voulez pas que la plupart de vos mails finissent en Spam)
Il faut d'abord l'installer en lançant la commande suivante en tant que root
apt install opendkim opendkim-tools
adduser opendkim ssl-cert
Ensuite, editer le fichier
/etc/default/opendkim
et commenter la ligne
SOCKET=local:$RUNDIR/opendkim.sock
Ensuite, effacer le fichier
/etc/opendkim.conf
et mettre ce contenu à la place
UserID opendkim:opendkim
Syslog yes
#SyslogSuccess yes
#LogWhy yes
UMask 007
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
InternalHosts /etc/opendkim/dkim.peers
Mode s
OversignHeaders From
#DisableADSP true
Socket inet:8976@localhost
PidFile /var/run/opendkim/opendkim.pid
Créer le repertoire /etc/opendkim/
mkdir /etc/opendkim/
Créer le fichier /etc/opendkim/SigningTable avec ce contenu
*@contrats.le-nom-de-mon-amap.fr selector1._domainkey.contrats.le-nom-de-mon-amap.fr
Créer le fichier /etc/opendkim/KeyTable avec ce contenu
selector1._domainkey.contrats.le-nom-de-mon-amap.fr contrats.le-nom-de-mon-amap.fr:selector1:/etc/ssl/private/dkim_contrats.le-nom-de-mon-amap.fr.key
Pour générer les clés, on utilise la commande :
opendkim-genkey -D /etc/ssl/private/ -d contrats.le-nom-de-mon-amap.fr -s selector1 -v
puis
cd /etc/ssl/private/
mv selector1.private dkim_contrats.le-nom-de-mon-amap.fr.key
chown opendkim:opendkim dkim_contrats.le-nom-de-mon-amap.fr.key
chmod 640 dkim_contrats.le-nom-de-mon-amap.fr.key
Récupérer ensuite le contenu du fichier /etc/ssl/private/selector1.txt
On obtient par exemple ceci
selector1._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApT8jsP6KAM578NFM6X8iCis4hn7pgVqGH4nst1edEtVwrAqD8PgorL+NPZaIJiOTBMdozoNqg7dB+GdY7IuvH/ZUeruhWin/uaNkNxlHcsIp+f+NUozrwcj0lyVHs4rTcPCbvFj8IMhsSRgRDIXsvKny+tHIJdL/I+F9Nhbt8r57ap5mohEhWfsk/mA5m0Rs3Q+cT5kO6Aaham"
"GM9XwmS+7YOcKMs7FIBDt5FkymtvlizNRzomkQqZpkxJkUHMg36Lcu/19LESWKQQq/eat7fg2EwMdL5Rq3enKWGkemDMTFSff9I7v4my0F+fF9UDwBrhNYU5OidZ28jDW/prwlZQIDAQAB" ) ; ----- DKIM key selector1 for contrats.amapj.fr
A partir de cela, construire cette chaîne de caractère
v=DKIM1; h=sha256; k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApT8jsP6KAM578NFM6X8iCis4hn7pgVqGH4nst1edEtVwrAqD8PgorL+NPZaIJiOTBMdozoNqg7dB+GdY7IuvH/ZUeruhWin/uaNkNxlHcsIp+f+NUozrwcj0lyVHs4rTcPCbvFj8IMhsSRgRDIXsvKny+tHIJdL/I+F9Nhbt8r57ap5mohEhWfsk/mA5m0Rs3Q+cT5kO6AahamGM9XwmS+7YOcKMs7FIBDt5FkymtvlizNRzomkQqZpkxJkUHMg36Lcu/19LESWKQQq/eat7fg2EwMdL5Rq3enKWGkemDMTFSff9I7v4my0F+fF9UDwBrhNYU5OidZ28jDW/prwlZQIDAQAB
Ensuite, vous vous rendez dans les paramètres DNS de votre sous domaine contrats.le-nom-de-mon-amap.fr
Vous devez alors ajouter un record avec
type = TXT
Nom d'hote = selector1._domainkey.contrats
Valeur = la chaine de caratère construite (v=DKIM1; h=sha256;...)
Ensuite, créer le fichier /etc/opendkim/dkim.peers avec ce contenu
127.0.0.1
On ajuste ensuite les droits ainsi :
chown -R opendkim:opendkim /etc/opendkim*
chmod 640 /etc/opendkim.conf /etc/opendkim/*
chmod 750 /etc/opendkim/
Et l’on peut enfin redémarrer le démon :
systemctl stop opendkim
systemctl start opendkim
Il faut ensuite configurer Postfix pour utiliser DKIM : on ajoute simplement les instructions suivantes dans le fichier /etc/postfix/main.cf :
smtpd_milters = inet:127.0.0.1:8976
non_smtpd_milters = inet:127.0.0.1:8976
#milter_default_action=accept
# Pour accélérer les signatures, pas d'attente pour contacter le milter
in_flow_delay = 0s
puis on redemarre postfix
systemctl stop postfix
systemctl start postfix
Configuration DMARC
Il faut faire cette étape uniquement si on est sûr que SPF et DKIM fontionnent correctement
Ajouter l'enregistrement TXT suivant dans le DNS
type = TXT
Nom d'hote = _dmarc.contrats
Valeur = v=DMARC1; p=reject; sp=reject
Comment envoyer un mail de test
En étant loggué en tant que amap1, créer dans le repertoire /tmp un fichier mail.txt avec ce contenu
ehlo localhost
mail from: contact@contrats.le-nom-de-mon-amap.fr
rcpt to: votre.adresse.mail@gmail.com
data
Subject: Essai Postfix
Hi,
Ceci est un essai PostFix
.
(A noter : le point final est obligatoire)
Ensuite, lancer la commande
cat mail.txt | netcat 127.0.0.1 25
Vous devez recevoir un mail sur l'adresse votre.adresse.mail@gmail.com
Comment verifier la qualité du mail envoyé
On peut utiliser 2 outils pour vérifier la qualité du mail envoyé :
- utiliser une adresse Gmail
- utiliser le service https://www.mail-tester.com
Utiliser une adresse Gmail
Vous envoyez un mail de test vers une adresse Gmail, vous ouvrez ce mail dans Gmail puis vous cliquez tout à droite sur "..." puis "afficher l'original"
On obtient alors les statuts SPF , DKIM, DMARC du mail
Utiliser mail-tester.com
Cet outil est très pratique
https://www.mail-tester.com/
Etape 3 - Installation de TOMCAT + AMAPJ
Choix des ports
Vous devez décider des 3 ports qui seront utilisés.
Dans cet exemple, nous allons prendre les ports 8001, 8002, 8003
Le port 8001 correspond au port utilisé par AJP
Le port 8002 correspond au port utilisé par la base de données
Le port 8003 correspond au port utilisé pour le shutdown de Tomcat
Installation de TOMCAT 9
Pour connaitre la dernière version de Tomcat, vous devez aller sur le site de Apache Tomcat 9 et identifier le lien vers la dernière version
A la date du 10 décembre 2023, ce lien est https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz
Ensuite, se logguer en tant que amap1, et telecharger tomcat 9 avec la commande :
cd /home/amap1
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz
(en remplaçant bien sûr le lien par la dernière version)
Il faut ensuite installer tomcat avec les commandes
tar xvf apache-tomcat-9.0.83.tar.gz
rm apache-tomcat-9.0.83.tar.gz
mv apache-tomcat-9.0.83/ tomcat
Tomcat est alors installé dans le répertoire /home/amap1/tomcat
Vous pouvez ensuite effacer le contenu du répertoire /home/amap1/tomcat/webapps avec les commandes
rm -Rf /home/amap1/tomcat/webapps
mkdir /home/amap1/tomcat/webapps
Vous devez ensuite configurer Tomcat avec les commandes
cd /home/amap1/tomcat/conf/
rm server.xml
vi server.xml
et mettre dans server.xml le fichier suivant
<?xml version='1.0' encoding='utf-8'?>
<!-- AMAPJ - Configuration du serveur TOMCAT avec uniquement un acces par AJP sur le port 8001
et un acces pour l'arret du serveur sur le port 8003 -->
<Server port="8003" shutdown="SHUTDOWN">
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<Service name="Catalina">
<!-- Connecteur AJP sur le port 8001 -->
<Connector port="8001" protocol="AJP/1.3" secretRequired="false" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">
</Host>
</Engine>
</Service>
</Server>
Au besoin, vous devez modifier le contenu de ce fichier pour mettre les numéros de ports que vous avez choisis
Script de démarrage de Tomcat
Se connecter en tant que root , créer 1 fichier /etc/systemd/system/amap1_tomcat.service ayant pour contenu
[Unit]
Description=Tomcat AMAP1
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-jre-amd64/
Environment=CATALINA_PID=/home/amap1/tomcat/bin/catalina.pid
Environment='CATALINA_OPTS=-Xms1024M -Xmx1524M'
Environment='JAVA_OPTS=-Duser.country=FR -Duser.language=fr'
User=amap1
Group=amap1
ExecStart=/home/amap1/tomcat/bin/startup.sh
ExecStop=/home/amap1/tomcat/bin/shutdown.sh 120
RestartSec=60
Restart=always
[Install]
WantedBy=multi-user.target
Il faut ensuite lancer les commandes suivantes en tant que root
systemctl daemon-reload
systemctl enable amap1_tomcat.service
Pour demarrer Tomcat , lancer en tant que root (dans n'importe quel répertoire)
systemctl start amap1_tomcat.service
Pour arreter AmapJ , lancer en tant que root
systemctl stop amap1_tomcat.service
Faire le lien entre TOMCAT et le serveur Apache
Il faut ensuite editer le fichier /etc/apache2/sites-available/contrats.le-nom-de-mon-amap.fr-le-ssl.conf
Avant la ligne
SSLCertificateFile /etc/letsencrypt/live/contrats.le-nom-de-mon-amap.fr/fullchain.pem
Ajouter les deux lignes suivantes
ProxyPass /amapj ajp://localhost:8001/amapj
ProxyPassReverse /amapj ajp://localhost:8001/amapj
Puis lancer la commande
systemctl restart apache2
Installation de l'application AmapJ
Tomcat ne doit pas être démarré
Se logguer en tant que amap1, et créer les répertoires install,backup,logs
cd /home/amap1
mkdir installl
mkdir backup
mkdir logs
Vous devez ensuite aller sur le site de Amapj et identifier le lien vers la dernière version, et le numéro de la version.
Si par exemple la version courante est la version V025, vous créez le répertoire install/V025
cd /home/amap1/install
mkdir V025
Vous telecharger ensuite AmapJ avec la commande suivante (en remplacant xxx par le numéro de la version)
cd /home/amap1/install/V025
wget http://amapj.fr/dist/amapj-dist-Vxxx.zip
Il faut ensuite dezipper le tout
unzip amapj-dist-V025.zip
Vous obtenez alors 4 répertoires : amapj-db , amapj-src , amapj-war et apache-tomcat
Vous devez alors copier le répertoire amapj-db dans /home/amap1, avec par exemple
cd /home/amap1/install/V025
cp -R amapj-db /home/amap1/
Il faut ensuite configurer Amapj. Pour cela, créez un fichier amapj.xml avec vi par exemple , et placer le contenu suivant à l'intérieur :
<Context path="/" docBase="/home/amap1/install/V025/amapj-war">
<Parameter name="dbms" value="hi" />
<Parameter name="dbms.hi.type" value="hsql_internal" />
<Parameter name="dbms.hi.dir" value="/home/amap1/amapj-db/" />
<Parameter name="dbms.hi.port" value="8002" />
<Parameter name="master.dbms" value="hi" />
<Parameter name="master.name" value="master" />
<Parameter name="database.backupdir" value="/home/amap1/backup" />
<Parameter name="logDir" value="/home/amap1/logs/" />
<Parameter name="wkhtmltopdf" value="wkhtmltopdf" />
<!-- Permet de desactiver la serialisation des sessions-->
<Manager pathname="" />
</Context>
Il faut ensuite positionner correctement le fichier amapj.xml avec ces 3 commandes
mkdir tomcat/conf/Catalina
mkdir tomcat/conf/Catalina/localhost
mv amapj.xml tomcat/conf/Catalina/localhost/
Démarrage de l'application et première connexion
En tant que root, lancez la commande suivante pour démarrer TOMCAT
systemctl start amap1_tomcat.service
Faire un test en ouvrant avec votre navigateur la page
http://contrats.le-nom-de-mon-amap.fr/amapj/amap1
Vous devriez alors être redirigé vers la page
https://contrats.le-nom-de-mon-amap.fr/amapj/amap1
puis vous devriez alors obtenir la page d'accueil de l'application, et vous devez pouvoir vous connecter
Si cela ne fonctionne pas, vous devez ouvrir les fichiers de logs
/home/amap1/tomcat/logs/catalina.out
/home/amap1/logs/global.log
Script pour demarrer et eteindre facilement Tomcat
Ensuite, il faut créer une regle sudo pour pouvoir arreter et demarrer le service sans être root
se logguer en tant que root , lancer la commande
visudo
et ajouter en dessous de "# User alias specification" la ligne
Cmnd_Alias AMAP1_CMDS = /bin/systemctl start amap1_tomcat.service, /bin/systemctl stop amap1_tomcat.service
puis à la fin du fichier
amap1 ALL=(ALL) NOPASSWD: AMAP1_CMDS
Se connecter en tant que amap1 , on peut maintenant demarrer et arreter le service avec les commandes
sudo systemctl start amap1_tomcat.service
sudo systemctl stop amap1_tomcat.service
Faire un reboot du serveur : normalement, au démarrage, le site AmapJ est bien accessible
Ensuite, dans le fichier .bashrc de amap1, ajouter tout à la fin
# Custom aliases
alias amap1_tomcat_start='sudo systemctl start amap1_tomcat.service'
alias amap1_tomcat_stop='read -p "Arret de TOMCAT AMAP1. Appuyez sur une touche pour continuer ... " x ;sudo systemctl stop amap1_tomcat.service'
alias amap1_tomcat_status='systemctl status amap1_tomcat'
alias amap1_tomcat_conf='vi /home/amap1/tomcat/conf/Catalina/localhost/amapj.xml'
alias tomcat_log='tail -f -n 100 /home/amap1/tomcat/logs/catalina.out'
Accès à la base SQL
Il est nécessaire de savoir accèder à la base en SQL, par exemple pour pouvoir appliquer des patchs lors des mises à jour
Pour pouvoir accèder en SQL à la base, il faut utiliser un SQL client, comme par exemple SQUIRREL Lien direct vers Squirrel
Cet outil sera installé sur votre PC, et non sur votre VPS
Téléchargez le logiciel : vous obtenez alors un fichier squirrel-sql-[version]-install.jar
Installez Squirrel sur votre PC, en lançant la commande suivante :
java -jar squirrel-sql-[version]-install.jar
Vous obtenez alors un écran d'installation classique, faites Next Next Next Finish (pas de configuration particulière)
Vous devez ensuite télecharger AMAPJ, vous dezippez le fichier obtenu dans c:\test-amapj par exemple. Vous allez ensuite dans C:\test-amapj\amapj-war\WEB-INF\lib
Vous localisez le fichier hsqldb.jar, et vous en faites un copier coller dans C:\Program Files\squirrel-sql\lib si vous avez installé Squirrel dans C:\Program Files\
Ensuite, vous devez mettre en place un port forwarding SSH entre votre PC et votre VPS, de tel façon que le port 8002 de votre PC corresponde au port 8002 de vore VPS
Vous démarrez ensuite SQUIRREL, vous faites "Aliases / New Alias ..."
Vous choississez ensuite Driver : HSQLDBSERVER
Ensuite, vous mettez
NAME : AMAP (ou ce que vous voulez)
URL : jdbc:hsqldb:hsql://127.0.0.1:8002/amap1
User Name : SA
PassWord : laissez vide
Vous devriez alors obtenir ceci
Vous faites ensuite OK, puis clic droit puis connect
Vous pouvez alors lancer la requête suivante
select * from PARAMETRES
Pour cela, vous devez copier le texte "select * from PARAMETRES" dans le fenetre "SQL", puis vous faites Session / Run SQL
Vous devez alors obtenir le résultat suivant
Etape 4 - Vérification du bon fonctionnement de AmapJ
Vérification des mails
Pour cela , vous allez dans AMAPJ, dans "ADMIN / Envoyer un mail
et vous essayez d'envoyer un mail vers votre propre adresse mail. En cas de dysfonctionnement, il faut analyser les logs dans /var/logs/mail.info
Vérification du bon fonctionnement de wkhtmltopdf
Faire une édition pour vérifier ce point.