Pré-requis
- Java (JDK - JAVA SE 8): http://www.oracle.com/technetwork/java/javase/downloads/index.html
- Maven (dernière version 3.0.x) : http://maven.apache.org/download.cgi
- Postgresql 9 : le mieux est de l'installer via le système de paquets de votre linux.
- Tomcat (Tomcat 8)
- Apache + libapache2-mod-shib2 : https://services.renater.fr/federation/docs/installation/sp
- Git
PostgreSQL
L'ensemble des données est stocké dans une base de données, photos comprises, cela nous a ammené à utiliser PostgreSQL (et non MySQL) pour ses possibilités de streaming sur les blobs.
Sous debian :
apt-get install postgresql
dans pg_hba.conf : ajout de
host all all 127.0.0.1/32 password
Redémarrage de postgresql
Création de la base :
su postgres psql create database esupsgc; create USER esupsgc with password 'esup'; grant ALL ON DATABASE esupsgc to esupsgc;
Cette application a été dévelopée en utilisant Spring ROO et donc ses technologies associées.
Comme annoncé ci-dessus, l'application a cependant été développée avec PostgreSQL : lecture/écriture des blobs dans une transaction par streaming ; idexation postgresql (usage de tsvector/tsquery).
Pour une bonne gestion des blob de cette application, il faut ajouter dans PostgreSQL un trigger sur la base de données sur la table big_file. La fonction lo_manage est nécessaire ici.
Sous debian :
apt-get install postgresql-contrib
Puis la création de l'extension lo se fait via un super-user:
avec postgresql 9 :
apt-get install postgresql-contrib psql \c esupsgc CREATE EXTENSION lo;
Et enfin ajout du trigger (afin que les tables soient préalablement créées, notamment la table big_file sur lequel on souhaite mettre le trigger lo_manage, il faudra avant celà démarrer une fois esup-sgc (avec le paramètre 'create'dans le persistence.xml)) :
CREATE TRIGGER t_big_file BEFORE UPDATE OR DELETE ON big_file FOR EACH ROW EXECUTE PROCEDURE lo_manage(binary_file);
CF https://www.postgresql.org/docs/9.4/static/lo.html
Vous devez démarrer l'application une fois.Ne pas oublier ensuite, pour ne pas écraser la base au redémarrage, de modifier src/main/resources/META-INF/persistence.xml : create-> update - cf ci-dessous.
Ajouter la contrainte postgresql supplémentaires :
alter table card_desfire_ids ADD CONSTRAINT unique_desfire_ids_desfire_ids_key UNIQUE (desfire_ids, desfire_ids_key);
Backup / restauration :
Avec l'utilisateur postgres backup :
pg_dump -b -F d -f /backup/esupsgc-dump esupsgc
restauration :
pg_restore -d esupsgc /backup/esupsgc-dump
Paramétrage mémoire JVM :
Pensez à paramétrer les espaces mémoire JVM :
export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m"
Pour maven :
export MAVEN_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m"
Sources https://github.com/EsupPortail/esup-sgc
cd /opt git clone https://github.com/EsupPortail/esup-sgc
Compilation
cd /opt/esup-sgc mvn clean package
Déploiement
On copie/colle le répertoire webapp packagé ainsi dans le tomcat :
rm -rf /opt/tomcat-esup-sgc/webapps/ROOT && cp -rf /opt/esup-sgc/target/sgc-0.1.0.BUILD-SNAPSHOT /opt/tomcat-esup-sgc/webapps/ROOT
On arrête le tomcat avant et on le redémarre ensuite.
Configurations systèmes
- Logs : src/main/resources/log4j.properties
- Base de données :
src/main/resources/META-INF/spring/database.properties pour paramètres de connexion
src/main/resources/META-INF/persistence.xml pour passage de create à update après premier lancement (création + initialisation de la base de données)
- Mails : src/main/resources/META-INF/spring/email.properties
Mises à jour
Lors d'une mise à jour majeure de l'application, lancez la commande suivant pour mettre à jour la base :
mvn compile exec:java -Dexec.args="dbupgrade"