Lavagna Configuration MySQL

De EjnTricks

L'application Lavagna s'appuye sur une base de données, HSQL par défaut. Les bases PostgreeSQL et MySql sont supportées.

Cet article présente l'initialisation d'une base de données sous MySql ainsi que la configuration dans l'application.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Icon-database-init.png Création de la base

La base de données doit utiliser l'encoding UTF-8, comme indiqué sur la documentation officielle http://help.lavagna.io/02-install/02-01-install.html#mysql Un nouveau schéma est créé.

mysql> CREATE DATABASE IF NOT EXISTS lavagna
    -> CHARACTER SET = 'utf8'
    -> COLLATE = 'utf8_unicode_ci';
Query OK, 1 row affected (0,13 sec)


User-icon.png Création du compte MySQL

Un compte est mis en place comme indiqué dans le fichier d'initialisation.

mysql> create user 'lavagna'@'127.0.0.1' identified by 'LAVAGNA_PASSWORD';
Query OK, 0 rows affected (0,14 sec)
 
mysql> grant all on lavagna.* TO 'lavagna'@'127.0.0.1';
Query OK, 0 rows affected, 1 warning (0,02 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,11 sec)

LAVAGNA_PASSWORD est remplacé par le mot de passe souhaité.

A noter que le compte est déclaré pour 127.0.0.1, l'IP locale, car c'est avec celle-ci que la connexion sera réalisé. La déclaration avec localhost ne fonctionnerait pas.


Icon-Configuration-Settings.png Configuration de la base de données

Command-icon.png Variables environnement

Le compte utilisé peut être renseigné dans les variables d'environnement de l'exécution de l'application. Warning-icon.png Attention, ce mode de configuration entraîne la visibilité des valeurs dans les process en cours d'exécution. Cela n'est donc pas forcément la meilleure solution, car il serait "facile" de retrouver le mot de passe du compte de la base de données. Ceci a été corrigé suite à la demande #43, dont la mise ne place est dérite dans le paragraphe suivant.

Dans le cadre de l'exécution du serveur embarqué, deux scripts sont disponibles sous le répertoire bin en fonction de l'OS.

Pour Windows, le script lavagna.bat contient les instructions suivantes.

java ^
	-Ddatasource.dialect=HSQLDB ^
	-Ddatasource.url=jdbc:hsqldb:mem:lavagna ^
	-Ddatasource.username=sa ^
	-Ddatasource.password= ^
	-Dspring.profiles.active=dev ^
	-jar %~dp0/../lavagna/lavagna-jetty-console.war

Pour Linux, le script lavagna.sh contient les instructions suivantes.

java \
	-Ddatasource.dialect=HSQLDB \
	-Ddatasource.url=jdbc:hsqldb:mem:lavagna \
	-Ddatasource.username=sa \
	-Ddatasource.password= \
	-Dspring.profiles.active=dev \
	-jar $BASEDIR/../lavagna/lavagna-jetty-console.war

Dans le cadre d'un déploiement sous Tomcat, il est nécessaire de modifier les scripts de démarrage. Attention ceci peut être assez problématique lors que d'autres applications sont déployées dans la même instance, car elles seront disponibles pour toutes les applications.

Pour une machine Ubuntu, il est possible de mettre en place un fichier setenv.sh dans le répertoire /var/lib/tomcat8/bin pour spécialiser l'exécution. IL est modifié en ajoutant les configurations dans la variables JAVA_OPTS

export JAVA_OPTS="$JAVA_OPTS -Ddatasource.dialect=MYSQL -Ddatasource.url=jdbc:mysql://localhost:3306/lavagna -Ddatasource.username=lavagna -Ddatasource.password=LAVAGNA_PASSWORD -Dspring.profiles.active=prod"

Il faut modifier la valeur de la propriété database.password avec le mot de passe mis en place dans lors de la création du compte d'accès à la base.

Icon Personnalisation.png Fichier configuration

Suite à la demande #43, il est possible de d'externaliser les paramètres de configuration. Ceci n'est pas disponible depuis la version 1.0.X, ni 1.1-M1. Afin de pouvoir en bénéficier, il faut récupérer la version courante de développement. Les prochaines versions contiendront cette évolution.

Dans le cadre de cette installation, les paramètres sont externalisés dans le fichier /var/opt/lavagna/common/config/lavagna.conf avec le contenu suivant.

datasource.dialect=MYSQL
datasource.url=jdbc:mysql://localhost:3306/lavagna?useUnicode=true&characterEncoding=utf-8
datasource.username=lavagna
datasource.password=LAVAGNA_PASSWORD
spring.profiles.active=prod

LAVAGNA_PASSWORD est remplacé par le mot de passe du compte lavagna.

Enfin, il faut référencer l'emplacement de ce fichier dans la variable d'environnement lavagna.config.location. Dans le cadre de cette installation, ceci est réalisé en modifiant le fichier /var/lib/tomcat8/bin/setenv.sh, exécuté au démarrage de Tomcat, en ajoutant la ligne suivante.

export JAVA_OPTS="$JAVA_OPTS -Dlavagna.config.location=file:/var/opt/lavagna/common/config/lavagna.conf"


Icon ACL.png Droits d'accès

Après installation de l'application, et donc la création des objets dans la base de données, il n'est pas nécessaire de conserver les droits d'accès. Les privilèges seront réduits en fin d'installation à l'aide des requêtes suivantes:

mysql> REVOKE ALL on lavagna.* FROM 'lavagna'@'127.0.0.1';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, TRIGGER, EXECUTE ON lavagna.* TO 'lavagna'@'127.0.0.1';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)