Guide d'installation Linux - Production

Version 24.2 par knogrix le 2022/05/23 16:12

Digdash

OpenJDK 11

Utiliser la version 11 de openjdk

# Installer la dernière version de openjdk
sudo apt install default-jdk

# Vérifier l'installation
java -version

Tomcat 9

Installation

sudo apt install tomcat9

Création de l'arborescence

# Emplacement des webapps
/home/digdash/webapps/default/
# Répertoire de travail
/home/digdash/appdata/default/
# Emplacement fichier .properties
/etc/digdash/
# Emplacement des logs
/var/log/digdash/

Modification des droits sur les dossier

chown -R tomcat:tomcat /home/digdash
chown -R tomcat:tomcat /var/log/digdash
chmod a+w /var/log/digdash

Configuration du server.xml

emplacement : /etc/tomcat9/server.xml

Emplacement des webapps

# Modifier la valeur appBase
<Host name="localhost"  appBase="webapps"

# par celle ci
<Host name="localhost"  appBase="/home/digdash/webapps/default"

Valve Reverse Proxy

# Ajouter cette valve dans l'élément Host vers la fin du fichier
<Valve className="org.apache.catalina.valves.RemoteIpValve"
               internalProxies="127\.0\.[0-1]\.1"
               remoteIpHeader="X-Forwarded-For"
               requestAttributesEnabled="true"
               protocolHeader="x-forwarded-proto"
               protocolHeaderHttpsValue="https"/>

Valve Log

# Ajouter cette valve dans l'élément Host vers la fin du fichier
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />

Modification de la RAM

# Editer le fichier suivant
sudo nano /etc/default/tomcat9

# Remplacer la variable JAVA_OPTS existante par
JAVA_OPTS="-Djava.awt.headless=true -XX:+UseShenandoahGC -Xms6G -Xmx6G -Djava.security.egd=file:/dev/urandom -DPROP_MAX_CONCURRENT_TOTAL=5000 -DPROP_MAX_CONCURRENT_CON_PER_HOST=5000"

Activer l'autorisation d'écriture des logs par tomcat

# Créer le dossier dans /etc/systemd/system/
sudo mkdir tomcat9.service.d

# Créer le fichier
sudo nano logging-allow.conf

# Ajouter les lignes suivantes
[Service]
ReadWritePaths=/var/log/

Déploiement de Digdash Version 22R1

Télécharger la version de digdash

Dézipper la version que vous venez de télécharger

Fichiers properties

Placer les fichiers suivant dans le dossier /etc/digdash

Modifier le fichier digdash.properties précédemment copié

# Ajouter ces lignes au début du fichier

ddenterpriseapi.AppDataPath=/home/digdash/appdata/default
digdash_dashboard.AppDataPath=/home/digdash/appdata/default
studio.AppDataPath=/home/digdash/appdata/default
ddenterpriseapi.audit.db.url=jdbc:h2:/home/digdash/appdata/default/DDAudit_ddenterpriseapi;AUTO_SERVER=TRUE
ddenterpriseapi.comment.db.url=jdbc:h2:/home/digdash/appdata/default/DDAudit_ddenterpriseapi;AUTO_SERVER=TRUE
ddenterpriseapi.ddlog4j.properties.file=/etc/digdash/log4j_api.properties
studio.ddlog4j.properties.file=/etc/digdash/log4j_studio.properties
digdash_dashboard.ddlog4j.properties.file=/etc/digdash/log4j_dash.properties
adminconsole.adminconsole_domain=adminconsole
adminconsole.webstudio_domain=studio
adminconsole.server_domain_list=ddenterpriseapi
adminconsole.dashboard_domain=digdash_dashboard

studio.DOMAIN=ddenterpriseapi
studio.FORCEDOMAIN=true
studio.SERVERURL=http://localhost:8080
studio.FORCESERVERURL=true
studio.adminconsole_domain=adminconsole

digdash_dashboard.DOMAIN=ddenterpriseapi
digdash_dashboard.FORCEDOMAIN=true
digdash_dashboard.SERVERURL=http://localhost:8080
digdash_dashboard.FORCESERVERURL=true
digdash_dashboard.adminconsole_domain=adminconsole

########### Nettoyage automatique des fichiers programmé
########### Scheduled automatic file cleaning
ddenterpriseapi.startCleaner=true

########### Nettoyage des fichiers inutilisés  au démarrage du serveur
########### Clean up unused files on server startup
ddenterpriseapi.cleanOnStart=false

########### Sauvegarde automatique programmée
########### Scheduled automatic backup
ddenterpriseapi.autoBackup=true
ddenterpriseapi.autoBackupKeepDays=7
digdash_dashboard.CANCHANGEPASSWORD=true

Emplacement des war

  • Placer les war dans le dossier /home/digdash/webapps/default
    • adminconsole.war
    • ddenterpriseapi.war
    • digdash_dashboard.war
    • studio.war

Password Policy

<PasswordPolicyRepository>
       <Rules>
                <Profil>administrator</Profil>
                <Pattern msg="Au moins 12 caractères">.{12,}</Pattern>
                <MustHaveUpperCase>true</MustHaveUpperCase>
                <MustHaveLowerCase>true</MustHaveLowerCase>
                <MustHaveNumeric>true</MustHaveNumeric>
                <MustHaveSpecialChar>true</MustHaveSpecialChar>
                <MustNotContainID>true</MustNotContainID>
                <MustNotContainDisplayName>false</MustNotContainDisplayName>
        </Rules>
        <Rules>
                <Profil>supervisor</Profil>
                <Pattern msg="Au moins 12 caractères">.{12,}</Pattern>
                <MustHaveUpperCase>true</MustHaveUpperCase>
                <MustHaveLowerCase>true</MustHaveLowerCase>
                <MustHaveNumeric>true</MustHaveNumeric>
                <MustHaveSpecialChar>true</MustHaveSpecialChar>
                <MustNotContainID>true</MustNotContainID>
                <MustNotContainDisplayName>false</MustNotContainDisplayName>
        </Rules>
        <Rules>
                <Profil>user</Profil>
                <Pattern msg="Au moins 12 caractères">.{12,}</Pattern>
                <MustHaveUpperCase>true</MustHaveUpperCase>
                <MustHaveLowerCase>true</MustHaveLowerCase>
                <MustHaveNumeric>true</MustHaveNumeric>
                <MustHaveSpecialChar>true</MustHaveSpecialChar>
                <MustNotContainID>true</MustNotContainID>
                <MustNotContainDisplayName>false</MustNotContainDisplayName>
        </Rules>
</PasswordPolicyRepository>

MySQL 8

La base de données Mysql va servir à stocker les éléments suivants : Commentaires, données d'audit et formulaires de saisies.

Cette base est plus pérenne qu'une base H2 c'est pourquoi nous préconisons son utilisation. Si vous possédez déjà une base de données sur laquelle digdash peut écrire et lire alors passez à l'étape de configuration.

Installation

sudo apt install mysql-server
#Démarrage de mysql
sudo systemctl start mysql
#Arrêt de mysql
sudo systemctl stop mysql
#Reload pour prise en compte de modification de configuration
sudo systemctl reload mysql
sudo systemctl force-reload mysql
#Connaître la version
mysql --version

Lancer mysql_secure_installation, cela va permettre de sécuriser l'installation

sudo mysql_secure_installation

# Répondez oui à toutes les étapes

Si vous avez une erreur “Failed! Error: SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server” à l’étape de modification du mdp root voici la marche à suivre :

# Ouvrir la console mysql
sudo mysql

# Modifier la méthode d'authentification
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

# Puis quitter mysql
exit;

# Relancez ensuite mysql_secure_installation

Configuration côté base de données

Nous allons créer une base pour chaque domaine et chaque module (par exemple prod_ddaudit et dev_ddaudit et ainsi de suite)

Dans l'exemple ci dessous nous allons considérer qu'il n'existe qu'un environnement 'default'.

# Lancer mysql
sudo mysql -u root -p

# Créer toutes les bases de données nécessaires domaine_module
CREATE DATABASE default_ddaudit;
CREATE DATABASE default_comment;

# Créer un user pour chaque base de données domaine_user_module
CREATE USER 'default_user_ddaudit'@'localhost' IDENTIFIED BY 'mynewpassword';
CREATE USER 'default_user_comment'@'localhost' IDENTIFIED BY 'mynewpassword';

# Attribuer les droits aux utilisateurs sur les bonnes bases
GRANT ALL PRIVILEGES ON default_comment.* TO 'default_user_comment'@'localhost';
GRANT ALL PRIVILEGES ON default_ddaudit.* TO 'default_user_ddaudit'@'localhost';

Configuration côté Digdash

OpenLDAP

NGINX

Nous uitilisons Nginx comme reverse proxy

Installation

sudo apt install nginx

Configuration

Créer le fichier de configuration portant le nom de votre machine ou de votre environnement (ici documentation)

# Créer le fichier de conf
sudo nano /etc/nginx/sites-available/001-digdash.com.conf
# Ajouter ce contenu à l'intérieur :
upstream backend_tomcat{
    least_conn;
    server localhost:8080 fail_timeout=0;
}


server {
  listen [::]:80;
  listen      80;
  server_name *.digdash.com;

 # Redirect all non-https requests
 rewrite ^ https://$host$request_uri? permanent;

  error_log  /var/log/nginx/digdash.com.error_log  warn;
  access_log  /var/log/nginx/digdash.com.access.log;

}

server {
  listen [::]:443 ssl http2 default_server;
  listen      443 ssl http2 default_server;
  server_name *.digdash.com

  client_max_body_size 4G;
  proxy_read_timeout 300;
  proxy_connect_timeout 300;
  proxy_send_timeout 300;

  error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 421 422 423 424 425 426 428 429 431 451 500 501 502 503 504 505 506 507 508 510 511 /digdash_error.html;
  proxy_intercept_errors on;
  error_log  /var/log/nginx/digdash.com.error_log  warn;
  access_log  /var/log/nginx/digdash.com.access.log;

 # Certificate(s) and private key
 ssl_certificate_key /etc/ssl/stardigdashcom/digdashcom.key;
  ssl_certificate /etc/ssl/stardigdashcom/STAR_digdash_com_mergechain.crt;


 #DigDash Management SSL
 include digdash_ssl_params;

 #specific redirections rules
 include nginx_redirections;

 #Handle error with DigDash Message
  location /digdash_error.html {
       ssi on;
       internal;
       auth_basic off;
       root /var/www/digdash;

  }

   location / {
        include proxy_params;
        proxy_intercept_errors on;
        proxy_pass  http://backend_tomcat;
        proxy_cookie_path ~^/(.+)$ "/$1; HTTPOnly; Secure;samesite=none;";
  }

}

Puis créer un lien symbolique dans site enabled

sudo ln -s  /etc/nginx/sites-available/documentation.conf /etc/nginx/sites-enabled/documentation.conf