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

A vous de choisir parmi les offres du marché ...

Typiquement, il faut un serveur avec 2Go de RAM pour faire fonctionner l'application AMAPJ

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

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.

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

Il faut ensuite configurer le fuseau horaire.Toujours en tant que root, lancer la commande

dpkg-reconfigure tzdata

Toujours en tant que root, lancer la commande

apt update
apt install -y zip sudo apt-transport-https gpg ufw 

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

Executer les commandes suivantes en tant que root :

ufw enable

Pour verifier que tout est ok

ufw status verbose

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

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

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>

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

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)

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

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

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

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

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

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

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

On peut utiliser 2 outils pour vérifier la qualité du mail envoyé :

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

Cet outil est très pratique

https://www.mail-tester.com/	

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

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

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

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

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/

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 

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'

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

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

Faire une édition pour vérifier ce point.