Prise de notre rapide pour debian jessie en mai 2017. Sur une machine toute neuve sans rien d'autre installé que les utilitaires de base.
toutes les commandes sont à passer sous le compte root. root est réputé avoir bash comme shell.
toutes les commandes montrées sont faites pour être copiées/collées d'un seul coup.
Geonetwork 3.2.1 nécessite java 8, mais à cette date, juin 2017, java 8 n'est disponible que dans les backports de la prochaine version vers la version stable (jessie 8.8). On a donc un petit peu de travail pour installer java8.
Installation préalable de openjdk-7. pour des histoires de dépendance de paquet. Puis il faut installer manuellement ca-certificates-java_20170531_all.deb, sinon, on ne pourra pas installer openjdk-8, à cause de conflits entre ca-certificates-java et openjdk-8. Solution : aller chercher manuellement le paquet sur packages.debian.org dans unstable puis installer le paquet manuellement. Le nom exact du paquet peut varier, par exemple en fonction
des révisions du paquet, d'où les lignes barbares exactname=$(…)
ci dessous.
apt install openjdk-7-jre-headless exactname=$( wget -O - http://ftp.fr.debian.org/debian/pool/main/c/ca-certificates-java/ | sed -ne 's/.*href="\(ca-certificates-java_20170531[^"]*.deb\).*/\1/p' ) wget http://ftp.fr.debian.org/debian/pool/main/c/ca-certificates-java/$exactname dpkg -i $exactname
Installer openjdk-8-jre-headless. cf http://stackoverflow.com/questions/35130798/install-java-8-in-debian-jessie
echo deb http://http.debian.net/debian jessie-backports main >> /etc/apt/sources.list apt update && apt install openjdk-8-jre-headless apt purge openjdk-7-jre-headless # plus besoin maintenant. update-alternatives --config java # normalement inutile, il ne reste que java 8
apt-get -y install \ tomcat8 libpostgresql-jdbc-java \ libpostgis-java postgresql-client
et puis donner de la mémoire à tomcat, plein de mémoire à la JVM pour geonetwork. Au strict minimum 2Go. ici, on donne 2048 de RAM, soit 2 Go à la JVM. Mais en prod, j'ai du mettre plus, sinon, boom la JVM manque de mémoire et s'arrête.
sleep 2 systemctl stop tomcat8 sed -i -e 's/^\(JAVA_OPTS=.*\)-Xmx[^ ]*\(.*\)/\1-Xms2048m -Xmx2048m -XX:+UseConcMarkSweepGC\2/' /etc/default/tomcat8 # Ne pas redémarrer tomcat8 maintenant.
/var/lib/tomcat8
à tomcat8 car geonetwork va tenter de créer une base de données H2 juste dans ce dossier. Par défaut ce dossier appartient à root et seuls certains sous dossiers appartiennent à tomcat8. find /var/lib/tomcat8 -ls >/var/lib/tomcat8/files-and-users chown -hR tomcat8: /var/lib/tomcat8
/var/lib/tomcat8/webapps/geonetwork.war
. Il peut appartenir à root si on veut ça n'a pas d'importance. cp /tmp/geonetwork.war /var/lib/tomcat8/webapps/geonetwork.war
systemctl start tomcat8
top - 19:02:18 up 41 min, 2 users, load average: 0.73, 0.67, 0.31 Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie %Cpu(s): 94.6 us, 5.4 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8195964 total, 1714800 used, 6481164 free, 992 buffers KiB Swap: 385020 total, 0 used, 385020 free. 1260812 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 13782 tomcat8 20 0 5186796 312088 17312 S 99.9 3.8 0:13.92 java 1 root 20 0 28696 4748 3072 S 0.0 0.1 0:01.12 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.30 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.27 kworker/u2:0
Ensuite, aller voir http://votreserveur.votre-univ.fr:8080/geonetwork/
user admin
, mot de passe admin
image du résultat attendu
Quoi qu'on fasse geonetwork crée initialement une base de données h2. Comme l'environnement est encore vide, on va la remplacer par une base de données postgis ou postgres. Il me semble que selon une doc de geonetwork, ça n'est intéressant que si on a plusieurs dizaine de milliers de fiches. C'est pas notre cas (enfin à moi, hein), mais tout mettre dans une base de stype SQL, ça me rassure, car je sais les cloner, sauvegarder, restaurer, dupliquer, et éventuellement modifier en ligne de commande, alors que je suis moins à l'aise avec une base h2. Lorsqu'on utilise une base postgres simple, geonetwork utilise toujours un fichier pour son index spatial, avec une base postgres munie de l'extension postgis et une configuration adéquate de geonetwork, l'index spatial est également géré par le moteur de base de données.
Si vous n'avez pas de serveur postgres sous la main, vous pouvez en installer un très rapidement, en suivant les instructions à la fin de cette page.
Les fichiers mentionnés ici sont relatifs à la base du déploiement de geonetwork. Ainsi quand on parle de WEB-INF/config-node/srv.xml
, si vous avez déposé le war de geonetwork dans /var/lib/tomcat8/webapps/geonetwork.war
il s'agit de /var/lib/tomcat8/webapps/geonetwork/WEB-INF/config-node/srv.xml
monserveur.mon-univ.fr
, localhost
,…systemctl stop tomcat8
<import resource=“../config-db/postgres.xml”/>
et commentez les autres. Le résultat est à peu près ça <?xml version="1.0" encoding="UTF-8"?> <beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" > <import resource="classpath*:/config-spring-geonetwork.xml"/> <import resource="../config-db/database_migration.xml"/> <bean id="nodeInfo" class="org.fao.geonet.NodeInfo"> <property name="id" value="srv" /> <property name="defaultNode" value="true" /> </bean> <!-- Uncomment the database configuration you need to use --> <!--<import resource="../config-db/h2.xml"/>--> <!--<import resource="../config-db/jndi-postgres-postgis.xml"/> --> <!--<import resource="../config-db/oracle.xml"/>--> <!--<import resource="../config-db/mysql.xml"/> --> <!--<import resource="../config-db/db2.xml"/> --> <import resource="../config-db/postgres.xml"/> <!--<import resource="../config-db/sqlserver.xml"/> --> <!--<import resource="../config-db/postgres-postgis.xml"/> --> </beans>
<import resource=“../config-db/postgres-postgis.xml”/>
et le résultat sera<?xml version="1.0" encoding="UTF-8"?> <beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" > <import resource="classpath*:/config-spring-geonetwork.xml"/> <import resource="../config-db/database_migration.xml"/> <bean id="nodeInfo" class="org.fao.geonet.NodeInfo"> <property name="id" value="srv" /> <property name="defaultNode" value="true" /> </bean> <!-- Uncomment the database configuration you need to use --> <!--<import resource="../config-db/h2.xml"/>--> <!--<import resource="../config-db/jndi-postgres-postgis.xml"/> --> <!--<import resource="../config-db/oracle.xml"/>--> <!--<import resource="../config-db/mysql.xml"/> --> <!--<import resource="../config-db/db2.xml"/> --> <!--<import resource="../config-db/postgres.xml"/>--> <!--<import resource="../config-db/sqlserver.xml"/> --> <import resource="../config-db/postgres-postgis.xml"/> </beans>
jdbc.username=ugeonet jdbc.password=jaikee9Tejopoo jdbc.database=geonetdb jdbc.host=bdds.mon-univ.fr jdbc.port=5432 jdbc.basic.removeAbandoned=true jdbc.basic.removeAbandonedTimeout=120 jdbc.basic.logAbandoned=true jdbc.basic.maxActive=33 jdbc.basic.maxIdle=\${jdbc.basic.maxActive} jdbc.basic.initialSize=\${jdbc.basic.maxActive} jdbc.basic.maxWait=200 jdbc.basic.testOnBorrow=true jdbc.basic.timeBetweenEvictionRunsMillis=10000 jdbc.basic.minEvictableIdleTimeMillis=1800000 jdbc.basic.testWhileIdle=true jdbc.basic.numTestsPerEvictionRun=3 jdbc.basic.poolPreparedStatements=true jdbc.basic.maxOpenPreparedStatements=1200 jdbc.basic.validationQuery=SELECT 1 jdbc.basic.defaultReadOnly=false jdbc.basic.defaultAutoCommit=false EOH
systemctl start tomcat8
Vous n'avez pas de serveur postgres ? pas grave. Installez en un sur votre serveur super rapidement :
apt install postgresql apt-get -o apt::install-recommends=true install postgis
su - postgres
ugeonetdb
pour postgrescreateuser --no-createdb --encrypted --login --pwprompt --no-createrole --no-superuser ugeonetdb
createdb --owner=ugeonetdb --encoding=UTF-8 dbgeonetwork
psql dbgeonetwork <<<'CREATE EXTENSION postgis;' psql dbgeonetwork <<<'CREATE EXTENSION postgis_topology;'
exit
jdbc.username=ugeonetdb jdbc.password=Mettez ici le mot de passe de la BBD que vous venez de définir. jdbc.database=dbgeonetwork jdbc.host=localhost jdbc.port=5432
— Christophe Martin 2017/05/18 17:04:29