Applications tierces & configuration système

Pour compléter l'installation de SCENARIchain-server il y a certains paramètres système à adapter et, selon les modèles documentaires que vous utilisez, certaines applications tierces à ajouter.

Allocation mémoire

Truc & astuceParamétrer la mémoire allouée au serveur d'application

Selon la quantité de documents gérés, SCENARIchain-server peut être gourmand en RAM. Il est donc conseillé de paramétrer la mémoire allouée au serveur d'application, l'exemple suivant alloue 3072Mo à Jetty.

Ouvrir le fichier /etc/default/jetty9  et ajoutez la ligne :

1
JAVA_OPTIONS="-Djava.awt.headless=true -Xmx3072M -Xms3072M"

Puis faire un restart du service jetty9.

systemctl restart jetty9

ImageMagick

Truc & astuce

Les conversions de PDF vers une image sont désactivées par défaut.

Modifier le fichier /etc/ImageMagick-6/policy.xml pour remplacer none par read :

1
  <policy domain="coder" rights="read" pattern="PDF" />

Polices

Installation sous Debian / Ubuntu

apt install --no-install-recommends -y fonts-noto fonts-noto-cjk fonts-noto-unhinted fonts-noto-color-emoji fonts-noto-ui-core fonts-noto-mono fonts-liberation fontconfig

Installation sous RedHat

yum install -y google-noto-emoji-color-fonts google-noto-fonts-common google-noto-sans-fonts google-noto-cjk-fonts liberation-fonts

Truc & astuce

Nécessaire pour les publications PDF et ODT (LibreOffice / Papier).

Postscriptum

Installation

apt install postscriptum-app

RemarqueSous Debian

Postscriptum est basé sur Chromium qui utilise la fonctionnalité des user namespaces disponible dans les kernels modernes pour implémenter un bac à sable dans lequel est chargé toute page HTML.

Actuellement Debian considère les user namespaces comme un trou de sécurité et les désactivent par défaut. Pour faire fonctionner Postscriptum il faut soit :

  • Activer les user namespaces dans le kernel :

    echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/00-local-userns.conf

    sysctl --system

  • Désactiver le principe de bac à sable de Postscriptum (Déconseillé) :

    déclarer la variable d'environnement PS_NO_CHROMIUM_SANDBOX=true

Truc & astuce

Nécessaire pour les générations de PDF des chaines libres.

LibreOffice

Truc & astuce

Certains modèles documentaires proposent d'intégrer des ressources (ODS, ODG...) et des publications (OptimOffice et Opale) au format OpenDocument.

Il faut alors de SCENARIchain-server puisse interagir avec LibreOffice qui doit être installé sur le serveur.

Actuellement une version 6.x ou 7.x est nécessaire.

Installation sous Debian / Ubuntu

apt install --no-install-recommends -y libreoffice libreoffice-java-common ure

Installation sous RedHat

yum install -y libreoffice-ure libreoffice-base

LaTeX

Installation Debian/Ubuntu

apt install --no-install-recommends -y texlive-latex-base texlive-latex-extra texlive-science texlive-fonts-recommended dvipng

Installation RedHat

yum install -y texlive-latex texlive-dvipng

Truc & astuce

Nécessaire pour les formules Mathématiques et Scientifiques (Opale, Topaze, Rubis).

Reverse Proxy

Il est souvent souhaitable ou nécessaire de placer le serveur d'application derrière un serveur web classique qui agit comme un proxy inverse.

Vous avez le choix entre de nginx (recommandé) et apache comme proxy inverse devant le serveur d'application.

Attention

Pensez à adapter la paramètre webapp.public.url du fichier de configuration webapp.properties pour prendre en compte la modification éventuelle de l'URL publique de SCENARIchain-server :

  • https:// au lieu de http://
  • port 80/443 au lieu de 8080
  • Hostname différent du serveur d'application

Il faut préciser le port seulement si vous n'utilisez pas les ports standard pour le http:// (port 80) et le https:// (port 443)

Nginx

Attention

Une version de nginx 1.7.11 ou plus est nécessaire.

Installation Nginx

apt install -y nginx

ExempleExemple de Configuration

Créer le fichier /etc/nginx/conf.d/scenari.conf :

1
map $http_upgrade $connection_upgrade {
2
  default upgrade;
3
  ''      '';
4
}
5
6
server {
7
  # Listen TCP/HTTPS
8
  listen 443 ssl http2;
9
10
  # Remove 1MB limit
11
  client_max_body_size 0;
12
13
  proxy_request_buffering off;
14
  proxy_buffering off;
15
  proxy_read_timeout 600;
16
17
  # DOMAIN
18
  server_name mydomain;
19
20
  # CERT
21
  ssl_certificate /etc/ssl/certs/mydomain.pem;
22
  ssl_certificate_key /etc/ssl/private/mydomain.key;
23
24
  # LOG
25
  error_log /var/log/nginx/error_mydomain.log error;
26
  access_log /var/log/nginx/access_mydomain.log combined;
27
28
  # WS + HTTP
29
  location /scenarichain-server6.1/ {
30
    # ProxyPass to Jetty : http://IP:PORT/WEBAPPS_NAME/
31
    proxy_pass http://127.0.0.1:8080/scenarichain-server6.1/;
32
    proxy_http_version 1.1;
33
    proxy_set_header Upgrade $http_upgrade;
34
    proxy_set_header Connection $connection_upgrade;
35
    include proxy_params;
36
  }
37
}

Puis faire un restart du service nginx.

systemctl restart nginx

Apache

Attention

Une version d'apache 2.4.5 ou plus est nécessaire.

Installation Apache

apt install -y apache2

Activer les modules pour le reverse proxy :

a2enmod proxy_http proxy_wstunnel

ExempleExemple de Configuration

Rajouter dans /etc/apache2/sites-enabled/000-default.conf :

1
# Listen TCP/HTTPS
2
<VirtualHost *:443>
3
  SSLEngine on
4
	
5
  # DOMAIN
6
  ServerName mydomain
7
8
  # CERT
9
  SSLCertificateFile    /etc/ssl/certs/mydomain.pem
10
  SSLCertificateKeyFile   /etc/ssl/private/mydomain.key
11
12
  # LOG
13
  ErrorLog ${APACHE_LOG_DIR}/error_mydomain.log
14
  CustomLog ${APACHE_LOG_DIR}/access_mydomain.log combined
15
16
  # Websocket
17
  ProxyPass "/scenarichain-server6.1/ws" "ws://127.0.0.1:8080/scenarichain-server6.1/ws" 
18
  ProxyPassReverse "/scenarichain-server6.1/ws" "ws://127.0.0.1:8080/scenarichain-server6.1/ws" 
19
  # without Websocket
20
  ProxyPass "/scenarichain-server6.1/" "http://127.0.0.1:8080/scenarichain-server6.1/"
21
  ProxyPassReverse "/scenarichain-server6.1/" "http://127.0.0.1:8080/scenarichain-server6.1/"
22
</VirtualHost>

Puis faire un restart du service apache.

systemctl restart apache2