Installation d'un socle esup-portail 3.2.4 sous centos 6
cette installation de socle se fait sur un serveur virtuel openvz - centos 6
[root@esup3re7 /]# cat /etc/redhat-release CentOS Linux release 6.0 (Final) [root@esup3re7 /]# free total used free shared buffers cached Mem: 2097152 43096 2054056 0 0 0 -/+ buffers/cache: 43096 2054056 Swap: 0 0 0 [root@esup3re7 /]# df -H Filesystem Size Used Avail Use% Mounted on /dev/simfs 4.3G 531M 3.8G 13% / # arch i686
disposer d'un serveur mysql et le rendre insensible a la case sur le nom des table mysql (6mn)
[root@bd3 ~]# grep case /etc/my.cnf lower_case_table_names=1
attention a bien positionner cet propriete dans [mysqld] et non dans [mysqld_safe]
Attention au format des databases en mysql 5.5, il faut des tables innoDB
dans esup-uPortal-3.2.4-esupdev-1.0.0-RC3\update\uPortal\uportal-impl\src\main\resources\properties\rdbm.properties Il faut inverser le commentaire # pour obtenir ce qui suit. @ esup.db.mysql.dialect@hibernate.dialect=org.hibernate.dialect.MySQLDialect #@esup.db.mysql.dialect@hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
Creation de la BD pour uportal
mysql> create database uportal32re7; mysql> CREATE USER uportal32re7@'esup3re7.it-sudparis.eu' IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON uportal32re7.* TO 'uportal32re7'@'esup3re7.it-sudparis.eu' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON uportal32re7.* TO 'uportal32re7'@'localhost' WITH GRANT OPTION; Query OK, 0 rows affected (0.01 sec)
Verification
installation du client mysql sur le serveur esup
[root@esup3re7 /]# yum install mysql Installed: mysql.i686 0:5.1.52-1.el6_0.1 Dependency Installed: mysql-libs.i686 0:5.1.52-1.el6_0.1
[root@esup3re7 /]# mysql -u uportal32re7 -p -h bd3.it-sudparis.eu -e "SHOW DATABASES" Enter password: +--------------------+ | Database | +--------------------+ | information_schema | | test | | uportal32re7 | +--------------------+
options JVM cf desciptions de script sur la video1 (~20mn )
Les centos/redhat proposent par defaut un environement Java a base de openjdk et gcj . initialement pas entierement compatible avec esup-uPortal, mais ici nous utiliserons les packages openjdk de la redhat/centos.
[root@esup3re7 ~]# yum install java-1.6.0-openjdk-devel Install 10 Package(s) Total download size: 36 M Installed size: 120 M Installed: java-1.6.0-openjdk-devel.i686 1:1.6.0.0-1.42.1.10.4.el6_2 Dependency Installed: flac.i686 0:1.2.1-6.1.el6 giflib.i686 0:4.1.6-3.1.el6 java-1.6.0-openjdk.i686 1:1.6.0.0-1.42.1.10.4.el6_2 jline.noarch 0:0.9.94-0.8.el6 libasyncns.i686 0:0.8-1.1.el6 libsndfile.i686 0:1.0.20-5.el6 pulseaudio-libs.i686 0:0.9.21-13.el6 rhino.noarch 0:1.7-0.7.r2.2.el6 tzdata-java.noarch 0:2011l-4.el6 Complete!
l'installation de tomcat6 entraine l'installation du JRE (ici java-1.5.0-gcj; openjdk !) sous forme de dependance :
[root@esup3re7 ~]# yum install tomcat6 ... Transaction Summary =================================================================================================================================== Install 67 Package(s) Upgrade 0 Package(s) Total download size: 42 M Installed size: 117 M Installed: tomcat6.noarch 0:6.0.24-24.el6_0 Dependency Installed: alsa-lib.i686 0:1.0.21-3.el6 at.i686 0:3.1.10-43.el6 atk.i686 0:1.28.0-2.el6 axis.noarch 0:1.2.1-7.2.el6 bc.i686 0:1.06.95-1.el6 bcel.i686 0:5.2-7.2.el6 cairo.i686 0:1.8.8-3.1.el6 classpathx-jaf.i686 0:1.0-15.4.el6 classpathx-mail.noarch 0:1.1.1-9.4.el6 cvs.i686 0:1.11.23-11.el6_0.1 ecj.i686 1:3.4.2-6.el6 file.i686 0:5.04-6.el6 fontconfig.i686 0:2.8.0-3.el6 freetype.i686 0:2.3.11-6.el6_0.2 gettext.i686 0:0.17-16.el6 gtk2.i686 0:2.18.9-4.el6 hicolor-icon-theme.noarch 0:0.11-1.1.el6 jakarta-commons-collections.noarch 0:3.2.1-3.4.el6 jakarta-commons-daemon.i686 1:1.0.1-8.9.el6 jakarta-commons-dbcp-tomcat5.noarch 0:1.2.1-13.8.el6 jakarta-commons-discovery.noarch 1:0.4-5.4.el6 jakarta-commons-httpclient.i686 1:3.1-0.6.el6 jakarta-commons-logging.noarch 0:1.0.4-10.el6 jakarta-commons-pool-tomcat5.i686 0:1.3-12.7.el6 jasper-libs.i686 0:1.900.1-15.el6 java-1.5.0-gcj.i686 0:1.5.0.0-29.1.el6 java_cup.i686 1:0.10k-5.el6 jpackage-utils.noarch 0:1.7.5-3.12.el6 libICE.i686 0:1.0.6-1.el6 libSM.i686 0:1.1.0-7.1.el6 libX11.i686 0:1.3-2.el6 libX11-common.noarch 0:1.3-2.el6 libXau.i686 0:1.0.5-1.el6 libXcomposite.i686 0:0.4.1-2.el6 libXcursor.i686 0:1.1.10-2.el6 libXdamage.i686 0:1.1.2-1.el6 libXext.i686 0:1.1-3.el6 libXfixes.i686 0:4.0.4-1.el6 libXft.i686 0:2.1.13-4.1.el6 libXi.i686 0:1.3-3.el6 libXinerama.i686 0:1.1-1.el6 libXrandr.i686 0:1.3.0-4.el6 libXrender.i686 0:0.9.5-1.el6 libXtst.i686 0:1.0.99.2-3.el6 libart_lgpl.i686 0:2.3.20-5.1.el6 libgcj.i686 0:4.4.4-13.el6 libgomp.i686 0:4.4.4-13.el6 libthai.i686 0:0.1.12-3.el6 libxcb.i686 0:1.5-1.el6 log4j.i686 0:1.2.14-6.4.el6 mx4j.noarch 1:3.0.1-9.13.el6 pango.i686 0:1.28.1-3.el6_0.5 patch.i686 0:2.6-6.el6 pax.i686 0:3.4-10.1.el6 pixman.i686 0:0.18.4-1.el6_0.1 redhat-lsb.i686 0:4.0-2.1.el6.centos regexp.i686 0:1.5-4.4.el6 sinjdoc.i686 0:0.5-9.1.el6 tomcat6-el-2.1-api.noarch 0:6.0.24-24.el6_0 tomcat6-jsp-2.1-api.noarch 0:6.0.24-24.el6_0 tomcat6-lib.noarch 0:6.0.24-24.el6_0 tomcat6-servlet-2.5-api.noarch 0:6.0.24-24.el6_0 wsdl4j.noarch 0:1.5.2-7.8.el6 xml-commons-apis.i686 0:1.3.04-3.6.el6 xml-commons-resolver.i686 0:1.1-4.18.el6 zip.i686 0:3.0-1.el6 Complete!
Si on souhaite disposer de l'interface d'aministration de tomcat
$ yum install tomcat6-webapps tomcat6-admin-webapps Installed: tomcat6-admin-webapps.noarch 0:6.0.24-24.el6_0 tomcat6-webapps.noarch 0:6.0.24-24.el6_0 Dependency Installed: apache-tomcat-apis.noarch 0:0.1-1.el6 jakarta-taglibs-standard.noarch 0:1.1.1-11.4.el6 xalan-j2.noarch 0:2.7.0-9.8.el6
en tomcat5 il y avait des librairies dans common et shared, depuis le 6 il y a seulement un repertoire lib. pour la compatibilité avec les anciens canaux esup , il faut recreer cette arborescence de lib.
tomcat5
[root@esupdev4 /usr/share/tomcat5] $ ls -al total 12 drwxr-xr-x 3 root root 4096 oct 15 2009 . drwxr-xr-x 50 root root 4096 jun 19 2009 .. drwxr-xr-x 2 root root 4096 oct 15 2009 bin lrwxrwxrwx 1 root root 23 oct 15 2009 common -> /var/lib/tomcat5/common lrwxrwxrwx 1 root root 12 oct 15 2009 conf -> /etc/tomcat5 lrwxrwxrwx 1 root root 16 oct 15 2009 logs -> /var/log/tomcat5 lrwxrwxrwx 1 root root 23 oct 15 2009 server -> /var/lib/tomcat5/server lrwxrwxrwx 1 root root 23 oct 15 2009 shared -> /var/lib/tomcat5/shared lrwxrwxrwx 1 root root 23 oct 15 2009 temp -> /var/cache/tomcat5/temp lrwxrwxrwx 1 root root 24 oct 15 2009 webapps -> /var/lib/tomcat5/webapps lrwxrwxrwx 1 root root 23 oct 15 2009 work -> /var/cache/tomcat5/work
tomcat6
[root@esup3re7 tomcat6]# ll total 4 drwxr-xr-x 2 root root 4096 1 déc. 18:41 bin lrwxrwxrwx 1 root root 23 2 déc. 16:04 common -> /var/lib/tomcat6/common lrwxrwxrwx 1 tomcat root 12 1 déc. 18:41 conf -> /etc/tomcat6 lrwxrwxrwx 1 root root 23 1 déc. 18:41 lib -> /usr/share/java/tomcat6 lrwxrwxrwx 1 root root 16 1 déc. 18:41 logs -> /var/log/tomcat6 lrwxrwxrwx 1 root root 23 2 déc. 16:04 shared -> /var/lib/tomcat6/shared lrwxrwxrwx 1 root root 23 1 déc. 18:41 temp -> /var/cache/tomcat6/temp lrwxrwxrwx 1 root root 24 1 déc. 18:41 webapps -> /var/lib/tomcat6/webapps lrwxrwxrwx 1 root root 23 1 déc. 18:41 work -> /var/cache/tomcat6/work
adaptation
[root@esup3re7 ~]# cd /var/lib/tomcat6/ [root@esup3re7 tomcat6]# ll total 4 drwxrwxr-x 7 tomcat root 4096 1 déc. 18:53 webapps [root@esup3re7 tomcat6]# mkdir -p /var/lib/tomcat6/common/classes ; mkdir -p /var/lib/tomcat6/common/endorsed ; mkdir -p /var/lib/tomcat6/common/lib ; mkdir -p /var/lib/tomcat6/shared/classes ; mkdir -p /var/lib/tomcat6/shared/lib [root@esup3re7 tomcat6]# ll total 12 drwxr-xr-x 5 root root 4096 2 déc. 16:02 common drwxr-xr-x 4 root root 4096 2 déc. 16:02 shared drwxrwxr-x 7 tomcat root 4096 1 déc. 18:53 webapps [root@esup3re7 tomcat6]# cd /usr/share/tomcat6 [root@esup3re7 tomcat6]# ln -s /var/lib/tomcat6/common common ; ln -s /var/lib/tomcat6/shared shared [root@esup3re7 tomcat6]# ll total 4 drwxr-xr-x 2 root root 4096 1 déc. 18:41 bin lrwxrwxrwx 1 root root 23 2 déc. 16:04 common -> /var/lib/tomcat6/common lrwxrwxrwx 1 tomcat root 12 1 déc. 18:41 conf -> /etc/tomcat6 lrwxrwxrwx 1 root root 23 1 déc. 18:41 lib -> /usr/share/java/tomcat6 lrwxrwxrwx 1 root root 16 1 déc. 18:41 logs -> /var/log/tomcat6 lrwxrwxrwx 1 root root 23 2 déc. 16:04 shared -> /var/lib/tomcat6/shared lrwxrwxrwx 1 root root 23 1 déc. 18:41 temp -> /var/cache/tomcat6/temp lrwxrwxrwx 1 root root 24 1 déc. 18:41 webapps -> /var/lib/tomcat6/webapps lrwxrwxrwx 1 root root 23 1 déc. 18:41 work -> /var/cache/tomcat6/work
modification de catalina.properties
[root@esup3re7 tomcat6]# diff /etc/tomcat6/catalina.properties.orig /etc/tomcat6/catalina.properties 47c47 < common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar --- > common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/common/classes,${catalina.home}/common/endorsed/*.jar,${catalina.home}/common/lib/*.jar
[root@esup3re7 ~]# /usr/sbin/alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java *+ 2 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java Enter to keep the current selection[+], or type selection number:
Avec ant depuis les packages originaux de la centos (ant i686 1.7.1-13.el6 repo core-0)
[root@esup3re7 ~]# yum install ant Installed: ant.i686 0:1.7.1-13.el6 Dependency Installed: cloog-ppl.i686 0:0.15.7-1.2.el6 cpp.i686 0:4.4.4-13.el6 gcc.i686 0:4.4.4-13.el6 gcc-java.i686 0:4.4.4-13.el6 glibc-devel.i686 0:2.12-1.7.el6_0.5 glibc-headers.i686 0:2.12-1.7.el6_0.5 java-1.5.0-gcj-devel.i686 0:1.5.0.0-29.1.el6 kernel-headers.i686 0:2.6.32-71.29.1.el6 libgcj-devel.i686 0:4.4.4-13.el6 libgcj-src.i686 0:4.4.4-13.el6 mpfr.i686 0:2.4.1-6.el6 ppl.i686 0:0.10.2-11.el6 xerces-j2.i686 0:2.7.1-12.5.el6 zlib-devel.i686 0:1.2.3-25.el6 Complete!
si au premier lancement de ant sur le package esup il plante sur :
[esup@esup3re7 esup-install]$ ant usage Buildfile: build.xml BUILD FAILED /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/build.xml:14: Problem: failed to create task or type replaceregexp Cause: the class org.apache.tools.ant.taskdefs.optional.ReplaceRegExp was not found. ...
il manque alors le package ant-nodeps
[root@esup3re7 ~]# yum install ant-nodeps Total download size: 695 k Installed size: 1.6 M Is this ok [y/N]: y Installed: ant-nodeps.i686 0:1.7.1-13.el6
Pour maven seul jpackage fournis des RPM, on va donc configurer jpackage exclusivement pour maven, pour rester dans une tradition RPM, suivre
http://www.davehodgkinson.com/blog/2011/04/installing-maven-on-a-fresh-redhatcentos-5-5/
[root@esup3re7 yum.repos.d]# wget http://www.jpackage.org/jpackage50.repo
Autrement installer maven en tar.gz
http://pwong-tipsandtricks.blogspot.com/2009/02/install-and-test-maven-on-centos-52.html
[root@esup3re7 local]# wget ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz [root@esup3re7 local]# tar xvfz apache-maven-2.2.1-bin.tar.gz apache-maven-2.2.1/boot/classworlds-1.1.jar apache-maven-2.2.1/LICENSE.txt apache-maven-2.2.1/NOTICE.txt apache-maven-2.2.1/README.txt apache-maven-2.2.1/bin/m2.conf apache-maven-2.2.1/bin/mvn.bat apache-maven-2.2.1/bin/mvnDebug.bat apache-maven-2.2.1/bin/mvn apache-maven-2.2.1/bin/mvnDebug apache-maven-2.2.1/conf/ apache-maven-2.2.1/conf/settings.xml apache-maven-2.2.1/lib/maven-2.2.1-uber.jar [root@esup3re7 local]# ln -s apache-maven-2.2.1 maven [root@esup3re7 local]# maven/bin/mvn -version Warning: JAVA_HOME environment variable is not set. Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) Java version: 1.5.0 Java home: /usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre Default locale: fr_FR, platform encoding: UTF-8 OS name: "linux" version: "2.6.18-274.3.1.el5.028stab094.3" arch: "i386" Family: "unix"
tous les travaux de parametrage, compilation se feront avec un utilisateur dedié non privilégié: esup
$ useradd esup $ su - esup [esup@esup3dev ~] $ pwd /home/esup
anticiper les droits d'acces au deploy d'esup
$ mkdir /usr/share/tomcat6/webapps/uPortal $ chown esup /usr/share/tomcat6/webapps/uPortal $ mkdir /usr/share/tomcat6/webapps/ResourceServingWebapp $ chown esup /usr/share/tomcat6/webapps/ResourceServingWebapp
recuperer l'archive uPortal-esup-DLM depuis https://sourcesup.cru.fr/frs/download.php/3562/esup-uPortal-3.2.4-esup-1.0.0-RC3.tar.gz
travailler en tant qu'utilisateur esup.
[esup@esup3re7 ~]$ wget https://sourcesup.cru.fr/frs/download.php/3562/esup-uPortal-3.2.4-esup-1.0.0-RC3.tar.gz $ tar xvfz esup-uPortal-3.2.4-esup-1.0.0-RC3.tar.gz
[esup@esup3re7 ~]$ ln -s esup-uPortal-3.2.4-esup-1.0.0-RC3 esup-install [esup@esup3re7 ~]$ ll total 2136 lrwxrwxrwx 1 esup esup 33 2 déc. 16:17 esup-install -> esup-uPortal-3.2.4-esup-1.0.0-RC3 drwxr-xr-x 6 esup esup 4096 14 févr. 2011 esup-uPortal-3.2.4-esup-1.0.0-RC3 -rw-rw-r-- 1 esup esup 2178865 2 déc. 16:17 esup-uPortal-3.2.4-esup-1.0.0-RC3.tar.gz
Voici les taches ant disponiblent dans le build.xml:
[esup@esup3re7 esup-install]$ ant usage Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac _version.display: [echo] Esup version : esup-3.2.4-1.0--RC30 [echo] - Use uPortal [3.2.4] usage: [echo] *** How to use this package by step *** [echo] *** 1) Rename build.sample.properties to build.properties [echo] *** 2) adapt build.properties (java_home, etc...) [echo] *** 3) Rename config.sample.properties to config.properties [echo] *** 4) Adapt config.properties [echo] *** 5) Adapt ant.[cmd|sh] (JAVA_HOME) [echo] *** 6) ant getcomponents : get remote components like uPortal sources [echo] *** 7) ant unzip : unzip remote components [echo] *** 8) ant init : init the package installation [echo] *** 9) ant db.test : test the database connection (becareful if you use production packageupdate your server.xml in tomcat before) [echo] *** 10) ant db.init : init the database (erase all data) [echo] *** 11) ant deploy : deploy portal in tomcat [echo] *** 12) start-esup.[cmd|sh] : start embedded tomcat server [echo] *** [echo] *** look in logs folder (portal.log) BUILD SUCCESSFUL Total time: 0 seconds
[esup@esup3re7 esup-install]$ ant -p Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac Main targets: clean Clean uPortal compile db.delete Delete to database db.export Export database part db.import Import to database db.init Drops all tables, then runs all the targets necessary prepare the portal database db.test Displays information about the database defined in rdbm.properties deploy Deploy deploy-ear deploy-ear getcomponents get remote components hsql.start Start Hsql Server hsql.stop Stop Hsql Server init Initialization package.clean Make a clean of package package.make Make a package portlet.deploy Deploy a portlet application properties.debug Display properties undeploy Clean deploy file unzip unzip remote components usage How to se this package user.add Add on uPortal user user.del Delete one uPortal user users.del Delete users from flat file users.ldap.add Add users from LDAP to database Default target: usage
les taches ant peuvent comsomer beaucoup de ressources, ici sur notre serveur virtuel (container) openvz, l'allocation de 768M de ram n'est pas suffisante.
[esup@esup3dev ~/src/esup-3.1.2-esup-0.5-RC3] $ ant getcomponents Buildfile: build.xml _version.display: [echo] Esup version : esup-3.1.2-0.5-RC3 [echo] - Use uPortal [3.1.2] _prepare: [mkdir] Created dir: /home/esup/src/esup-3.1.2-esup-0.5-RC3/packages [mkdir] Created dir: /home/esup/src/esup-3.1.2-esup-0.5-RC3/temp [mkdir] Created dir: /home/esup/src/esup-3.1.2-esup-0.5-RC3/logs _script.init: [echo] Init env.sh [copy] Copying 1 file to /home/esup/src/esup-3.1.2-esup-0.5-RC3 BUILD FAILED /home/esup/src/esup-3.1.2-esup-0.5-RC3/resources/ant-files/package.xml:55: The following error occurred while executing this line: /home/esup/src/esup-3.1.2-esup-0.5-RC3/resources/ant-files/script.xml:95: Execute failed: java.io.IOException: Cannot run program "chmod": java.io.IOException: error=12, Cannot allocate memory <code> en effet <code> [root@epidaure ~]# vzctl exec 21230 cat /proc/user_beancounters Version: 2.5 uid resource held maxheld barrier limit failcnt 21230: kmemsize 4953414 6300969 14372700 14790164 0 lockedpages 0 0 256 256 0 privvmpages 77174 205337 196608 196608 1
cf le failcnt = 1 pour privvmpages !
on passe a 1G
[root@epidaure ~]# vzctl set 21230 --privvmpages $((256 * 1024)) --save UB limits were set successfully Configure meminfo: 262144 Saved parameters for CT 21230
parametrer l'environement de developpement et deploiment a notre systeme
[esup@esup3re7 esup-install]$ diff build.sample.properties build.properties 2c2 < java_home=/usr/java/jdk1.6.0_16 --- > java_home=/usr/lib/jvm/java-1.5.0-gcj 8c8 < ant_home=${basedir.conv}/resources/${ant.package.final} --- > ant_home=/usr/share/ant/ 11c11 < esup.deploy=${esup.base}/webapps --- > esup.deploy=/usr/share/tomcat6/webapps 15c15 < server.home=${esup.base}/apache-tomcat-${tomcat.ver} --- > server.home=/usr/share/tomcat6 30c30 < mvn_home=${esup.base}/${mvn.package.final} --- > mvn_home=/usr/local/maven 34c34 < mvn_repo=${esup.base}/maven-repo --- > mvn_repo=/usr/local/maven-repo
[esup@esup3re7 esup-install]$ diff config.sample.properties config.properties 14c14 < esup.public.host=localhost --- > esup.public.host=esup3re7.it-sudparis.eu 17c17 < esup.public.uri= --- > esup.public.uri=/uPortal 27,30c27,30 < esup.ldap.url=ldap://ldap1.univ.fr:389 ldap://ldap2.univ.fr:389 < esup.ldap.baseDN=dc=univ,dc=fr < esup.ldap.bindDN= < esup.ldap.bindPasswd= --- > esup.ldap.url=ldap://ldapesup1.it-sudparis.eu:389 ldap://ldapesup2.it-sudparis.eu:389 > esup.ldap.baseDN=dc=int-evry,dc=fr > esup.ldap.bindDN=cn=mcibind,ou=system,dc=int-evry,dc=fr > esup.ldap.bindPasswd=secret 38,39c38,39 < esup.cas.host=auth.univ.fr < esup.cas.port.https= --- > esup.cas.host=cas3.it-sudparis.eu > esup.cas.port.https=:443 41c41 < esup.cas.uri= --- > esup.cas.uri=/cas 52,53c52,53 < esup.db.username=sa < esup.db.password= --- > esup.db.username=uportalre7 > esup.db.password=secret 55c55 < esup.db.type=hsql --- > esup.db.type=mysql 57c57 < esup.db.url=jdbc:hsqldb:hsql://localhost:8887 --- > esup.db.url=jdbc:mysql://bd.it-sudparis.eu/uportalre7 59c59 < esup.db.className=org.hsqldb.jdbcDriver --- > #esup.db.className=org.hsqldb.jdbcDriver 61c61 < #esup.db.className=com.mysql.jdbc.Driver --- > esup.db.className=com.mysql.jdbc.Driver 66,67c66,67 < esup.xsl.help.url=http://www.esup-portail.org/display/ESUPMU/Documentations+%28esup-3%29 < esup.xsl.help.login=http://www.esup-portail.org/display/ESUPMU/Documentations+%28esup-3%29 --- > esup.xsl.help.url=http://infopedia.it-sudparis.eu/wikiuser/doku.php?id=documentation:gaspar:openportal > esup.xsl.help.login=http://infopedia.it-sudparis.eu/wikiuser/doku.php?id=documentation:gaspar:esup 97c97 < esup.log.dir=${esup.root}/logs --- > esup.log.dir=/var/log/tomcat6 109,110c109,110 < esup.title.main=eSup PROD ${uportal.ver} - [${esup.host.logicalName}] < esup.host.logicalName=esup1 --- > esup.title.main=eSup RE7 ${uportal.ver} - [${esup.host.logicalName}] > esup.host.logicalName=esupre7
recuperation online de uPortal 3.2.4
[esup@esup3re7 esup-install]$ ant getcomponents Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac _version.display: [echo] Esup version : esup-3.2.4-1.0--RC30 [echo] - Use uPortal [3.2.4] _prepare: [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/packages [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/temp [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/logs Trying to override old definition of task java Trying to override old definition of task javac _script.init: [echo] Init env.sh [copy] Copying 1 file to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3 [echo] Init start-esup.sh [copy] Copying 1 file to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3 [echo] Init stop-esup.sh [copy] Copying 1 file to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3 getcomponents: Trying to override old definition of task java Trying to override old definition of task javac _uportal.getRemote: [echo] Download uPortal ... [get] Getting: http://www.ja-sig.org/downloads/uportal/uPortal-3.2.4/uPortal-3.2.4.tar.gz [get] To: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/packages/uPortal-3.2.4.tar.gz BUILD SUCCESSFUL Total time: 5 seconds [esup@esup3re7 esup-install]$ locate uPortal-3.2.4.tar.gz /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/packages/uPortal-3.2.4.tar.gz
desarchivage de uPortal
[esup@esup3re7 esup-install]$ ant unzip Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac unzip: Trying to override old definition of task java Trying to override old definition of task javac _uportal.unzip: [untar] Expanding: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/packages/uPortal-3.2.4.tar.gz into /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/temp [move] Moving 2764 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4 BUILD SUCCESSFUL Total time: 1 second
role de ant init:
ant init prend les update esup les copie dans uportal + customise uportal, en effet tout ce qui est dans custom/uPortal va etre copié dans les sources natives jasig
video2 esup 3.2 2mn
[esup@esup3re7 esup-install]$ ant init Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac _version.display: [echo] Esup version : esup-3.2.4-1.0--RC30 [echo] - Use uPortal [3.2.4] _prepare: Trying to override old definition of task java Trying to override old definition of task javac _script.init: init: Trying to override old definition of task java Trying to override old definition of task javac _uportal.init: [echo] Copy of updates/custom /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update [copy] Copying 111 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4 [copy] Copying 169 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4 BUILD SUCCESSFUL Total time: 0 seconds
ant deploy compile les class (1 milliers !) et les deploient dans webapps/esup-portail, la premiere fois ⇒ bcp de downloads de .jar ⇒ long (~6mn )
mais cette tache necessite maven
[esup@esup3re7 esup-install]$ ant deploy Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac _version.display: [echo] Esup version : esup-3.2.4-1.0--RC30 [echo] - Use uPortal [3.2.4] _prepare: Trying to override old definition of task java Trying to override old definition of task javac _script.init: deploy: checkForTomcat: deploy-war: install-parent-pom: [artifact:pom] Downloading: org/jasig/parent/jasig-parent/21/jasig-parent-21.pom from local [artifact:pom] Downloading: org/jasig/parent/jasig-parent/21/jasig-parent-21.pom from jasig-3rd-party [artifact:pom] Downloading: org/jasig/parent/jasig-parent/21/jasig-parent-21.pom from central ... artifact:mvn] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-war/target/uPortal-sources.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-war/3.2.4/uportal-war-3.2.4-sources.jar [artifact:mvn] [INFO] ------------------------------------------------------------------------ [artifact:mvn] [INFO] BUILD SUCCESSFUL [artifact:mvn] [INFO] ------------------------------------------------------------------------ [artifact:mvn] [INFO] Total time: 1 minute 41 seconds [artifact:mvn] [INFO] Finished at: Tue Feb 07 22:57:52 CET 2012 [artifact:mvn] [INFO] Final Memory: 61M/229M [artifact:mvn] [INFO] ------------------------------------------------------------------------ fastWarDeploy: [echo] extractWars=true [echo] removeExisting=false [mkdir] Created dir: /tmp/jasig/uPortal [unwar] Expanding: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-war/target/uPortal.war into /tmp/jasig/uPortal [echo] Moving /tmp/jasig/uPortal to /usr/share/tomcat6/webapps [move] Moving 3107 files to /usr/share/tomcat6/webapps BUILD SUCCESSFUL Total time: 2 minutes 1 second
il faut un maven 2.0.9 minimum, exemple ci-dessous d'un pb sur une autre machine avec un maven jpackage
[artifact:mvn] [ERROR] BUILD ERROR [artifact:mvn] [INFO] ------------------------------------------------------------------------ [artifact:mvn] [INFO] Error resolving version for 'org.apache.maven.plugins:maven-compiler-plugin': Plugin requires Maven v 2.0.9
alors cf http://www.esup-portail.org/display/CASKERB/Installation+Java,+Maven+et+Tomcat on remplace maven2 rpm et on met un tar.gz en 2.0.9
Donc exeptionnelement dans la philosophie de cet installation (rpm based !) on va utiliser un tar.gz pour disposer de maven >= 2.0.9 !
[root@esup3re7 local]# wget ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz [root@esup3re7 /usr/local] $ tar xvfz apache-maven-2.2.1-bin.tar.gz apache-maven-2.2.1/boot/classworlds-1.1.jar apache-maven-2.2.1/LICENSE.txt apache-maven-2.2.1/NOTICE.txt apache-maven-2.2.1/README.txt apache-maven-2.2.1/bin/m2.conf apache-maven-2.2.1/bin/mvn.bat apache-maven-2.2.1/bin/mvnDebug.bat apache-maven-2.2.1/bin/mvn apache-maven-2.2.1/bin/mvnDebug apache-maven-2.2.1/conf/ apache-maven-2.2.1/conf/settings.xml apache-maven-2.2.1/lib/maven-2.2.1-uber.jar [root@esup3re7 /usr/local] $ ln -s apache-maven-2.2.1 maven2 lrwxrwxrwx 1 root root 18 Dec 5 23:00 maven -> apache-maven-2.2.1
on trouve alors uPortal deployé dans l'arboresence d'applis tomcat:
[esup@esup3re7 esup-install]$ ls -l /usr/share/tomcat6/webapps/uPortal/ total 328 -rw-rw-r-- 1 esup esup 1598 Oct 16 2010 error.jsp -rw-rw-r-- 1 esup esup 300318 Oct 16 2010 favicon.ico -rw-rw-r-- 1 esup esup 928 Oct 16 2010 index.jsp drwxrwxr-x 4 esup esup 4096 Feb 7 22:57 media drwxrwxr-x 3 esup esup 4096 Feb 7 22:57 META-INF drwxrwxr-x 2 esup esup 4096 Feb 7 22:57 monitor drwxrwxr-x 2 esup esup 4096 Feb 7 22:57 private drwxrwxr-x 10 esup esup 4096 Feb 7 22:57 WEB-INF
droit d'acces aux webapps de tomcat
$ chgrp -R esup /usr/share/tomcat6/shared/ ; chmod -R 775 /usr/share/tomcat6/shared/
autrement:
/home/esup/src/esup-3.1.2-esup-0.5-RC3/Portail/uPortal_rel-3.1.2/build.xml:298: java.io.FileNotFoundException: /usr/share/tomcat6/shared/lib/commons-logging-api-1.1.jar (Permission denied)
deploy des librairies necessaire au portail
[esup@esup3re7 esup-install]$ ant deploy-ear Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac deploy-ear: mvn: [artifact:mvn] [INFO] Scanning for projects... [artifact:mvn] [INFO] ------------------------------------------------------------------------ [artifact:mvn] [INFO] Building uPortal EAR [artifact:mvn] [INFO] task-segment: [clean] [artifact:mvn] [INFO] ------------------------------------------------------------------------ [artifact:mvn] Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/build.xml:392: java.io.IOException: Unable to create directory /usr/share/tomcat6/webapps/BookmarksPortlet Total time: 2 minutes 3 seconds
ici pb de creation de repertoire dans /usr/share/tomcat6/webapps/ poiur la portlet Bookmarks, on corrige en donnant provisoirement la propriete a esup du repertoire
[root@esup3re7 local]# chown esup /usr/share/tomcat6/webapps/
le ant deploy-ear se termine bien du coup .
up:tomcatEarDeploy] INFO: Copying EAR entry '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-ear/target/uPortal.ear!pluto-container-1.1.7.jar' to '/usr/share/tomcat6/shared/lib/pluto-container-1.1.7.jar' [up:tomcatEarDeploy] Feb 7, 2012 11:17:11 PM org.jasig.portal.tools.deployer.AbstractEarDeployer copyAndClose [up:tomcatEarDeploy] INFO: Copying EAR entry '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-ear/target/uPortal.ear!castor-1.1.1.jar' to '/usr/share/tomcat6/shared/lib/castor-1.1.1.jar' BUILD SUCCESSFUL Total time: 34 seconds
maintenant apres le ant deploy on retrouve plusieurs librairies à ce niveau
[esup@esup3re7 esup-install]$ ls -l /usr/share/tomcat6/shared/lib/ total 2028 -rw-rw-r-- 1 esup esup 1736099 Feb 7 23:17 castor-1.1.1.jar -rw-rw-r-- 1 esup esup 44598 Feb 7 23:17 commons-logging-api-1.1.jar -rw-rw-r-- 1 esup esup 3463 Feb 7 23:17 person-directory-api-1.5.0-RC6.jar -rw-rw-r-- 1 esup esup 142812 Feb 7 23:17 pluto-container-1.1.7.jar -rw-rw-r-- 1 esup esup 39406 Feb 7 23:17 pluto-descriptor-api-1.1.7.jar -rw-rw-r-- 1 esup esup 46472 Feb 7 23:17 pluto-descriptor-impl-1.1.7.jar -rw-rw-r-- 1 esup esup 25969 Feb 7 23:17 pluto-taglib-1.1.7.jar -rw-rw-r-- 1 esup esup 17090 Feb 7 23:17 portlet-api-1.0.jar
initialisation de la base de donnée. En esup3 cette etape est plus simplifiée, le mecanisme “d'import” changement completement le mode de fonctionnement par rapport a esup v2.x qui fonctionnait avec un fichier xml … . il n'y a plus les users de demo, canaux acessoires etc ..
video esup 3.2 ~70 - 74 mn , 77mn export bd 3.1 → 3.2
attention au group “PAGS root” de base qui n'est souvent pas repris dans une implementation locale personalisée de PAGSGroupStoreConfig.xml, cela plante les groupes initiaux de base du db.init cf https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2011-06/msg00034.html
La BD avant
mysql> use uportalre7 Database changed mysql> show tables; Empty set (0.00 sec)
[esup@esup3re7 esup-install]$ ant db.test ... [java] INFO MySQL (5.0.77) / MySQL-AB JDBC Driver (mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )) database/driver [java] Connected To: jdbc:mysql://bd3.it-sudparis.eu/uportal32re7 [java] WARNING: uPortal tables do no exist, not all meta-data tests were executed. [java] [java] Database name: 'MySQL' [java] Database version: '5.0.77' [java] Driver name: 'MySQL-AB JDBC Driver' [java] Driver version: 'mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )' [java] Driver class: 'MySQL-AB JDBC Driver' [java] Connection URL: 'jdbc:mysql://bd.it-sudparis.eu/uportalre7' [java] User: 'uportalre7@esup3re7.it-sudparis.eu' [java] [java] supportsANSI92EntryLevelSQL: true ... [java] Table Types: TABLE,VIEW,LOCAL TEMPORARY [java] SQL Types: BIT,BOOL,TINYINT,TINYINT UNSIGNED,BIGINT,BIGINT UNSIGNED,LONG VARBINARY,MEDIUMBLOB,LONGBLOB,BLOB,TINYBLOB,VARBINARY,BINARY,LONG VARCHAR,MEDIUMTEXT,LONGTEXT,TEXT,TINYTEXT,CHAR,NUMERIC,DECIMAL,INTEGER,INTEGER UNSIGNED,INT,INT UNSIGNED,MEDIUMINT,MEDIUMINT UNSIGNED,SMALLINT,SMALLINT UNSIGNED,FLOAT,DOUBLE,DOUBLE PRECISION,REAL,VARCHAR,ENUM,SET,DATE,TIME,DATETIME,TIMESTAMP BUILD SUCCESSFUL Total time: 7 seconds
[esup@esup3re7 esup-install]$ ant db.init ... [java] INFO drop table if exists UP_VERSIONS [java] INFO drop table if exists UP_USER ... [java] INFO Creating tables [java] INFO create table UP_VERSIONS (FNAME varchar(255) not null, MAJOR integer, MINOR integer, MICRO integer, DESCRIPTION varchar(255), primary key (FNAME), unique (FNAME, MAJOR, MINOR, MICRO)) type=InnoDB [java] INFO create table UP_USER (USER_ID integer not null, USER_NAME varchar(35), USER_DFLT_USR_ID integer, USER_DFLT_LAY_ID integer, NEXT_STRUCT_ID integer, LST_CHAN_UPDT_DT datetime, primary key (USER_ID)) type=InnoDB ... [java] Import User: user/system.user [java] Import Group_Membership: group_membership/Administrateurs_Portail.group_membership [java] Import Group_Membership: group_membership/Anonymes.group_membership [java] Import Group_Membership: group_membership/Applications.group_membership [java] Import Group_Membership: group_membership/Canaux_eSup.group_membership [java] Import Group_Membership: group_membership/Canaux_uPortal.group_membership [java] Import Group_Membership: group_membership/Demonstration.group_membership [java] Import Group_Membership: group_membership/Information.group_membership [java] Import Group_Membership: group_membership/Portal System.group_membership [java] Import Group_Membership: group_membership/Proprietaires_de_fragment.group_membership [java] Import Group_Membership: group_membership/Tout_le_monde.group_membership [java] Import Group_Membership: group_membership/Toutes_les_categories.group_membership [java] Import Group_Membership: group_membership/Administrateurs_Portail.group_membership [java] Import Group_Membership: group_membership/Anonymes.group_membership [java] Import Group_Membership: group_membership/Applications.group_membership [java] Import Group_Membership: group_membership/Canaux_eSup.group_membership [java] Import Group_Membership: group_membership/Canaux_uPortal.group_membership [java] Import Group_Membership: group_membership/Demonstration.group_membership [java] Import Group_Membership: group_membership/Information.group_membership [java] Import Group_Membership: group_membership/Portal System.group_membership [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: group_membership/Proprietaires_de_fragment.group_membership [java] Import Group_Membership: group_membership/Tout_le_monde.group_membership [java] Import Group_Membership: group_membership/Toutes_les_categories.group_membership [java] Import Channel Type: channel-type/Applet.channel-type [java] INFO Creating singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' ... [java] Import Channel Type: channel-type/Web_Proxy_Portlet.channel-type [java] Import Channel Type: channel-type/XML_SSL.channel-type [java] Import Channel Type: channel-type/XML_XSLT.channel-type [java] Import Channel: channel-esup/cas-test.channel [java] INFO Looking up bean 'channelRegistryStore' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'jpaInterceptor' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'portletDefinitionRegistry' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'channelPublishingService' in ApplicationContext due to context not yet being initialized [java] Import Channel: channel-esup/ent-info.channel [java] Import Channel: channel-esup/esup-portail-nouvelles.channel [java] Import Channel: channel-esup/esup-portail-rss.channel [java] Import Channel: channel-esup/esup-portail.org.channel [java] Fixing FNAME=esup-portail.org [java] Import Channel: channel-esup/groups-id.channel ... [java] Import Channel: channel/webproxy-cas-test.channel [java] Import Permission: permission/Administrateurs_Portail__MANAGE__CHAN_ID._94-.permission [java] Import Permission Set: permission_set/Developers__ADD.REMOVE__org.jasig.portal.channels.groupsmanager.CGroupsManager.permission_set [java] Import Permission Set: permission_set/Developers__PUBLISH__UP_FRAMEWORK.permission_set ... [java] Fixing FNAME=esup-portail.org [java] Import DLM Fragment Layout: fragment-layout/guest-lo.fragment-layout [java] Fixing FNAME=esup-portail.org [java] Import Layout: layout/defaultTemplateUser.layout [java] Import Layout: layout/fragmentTemplate.layout [java] Import of /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/db/mini Complete in 8945 milliseconds. BUILD SUCCESSFUL Total time: 51 seconds
Au final, on a une base de donnée remplie de plusieurs tables:
mysql> show tables; +------------------------------+ | Tables_in_uportal32re7 | +------------------------------+ | up_chan_type | | up_channel | | up_channel_mdata | | up_channel_param | | up_dlm_evaluator | | up_dlm_evaluator_paren | | up_entity_cache_invalidation | | up_entity_lock | | up_entity_prop | | up_entity_type | | up_group | | up_group_membership | | up_layout_param | | up_layout_struct | | up_layout_struct_locale | | up_layout_struct_mdata | | up_mime_type | | up_permission | | up_person_dir | | up_portlet_def | | up_portlet_ent | | up_portlet_pref | | up_portlet_pref_values | | up_portlet_prefs | | up_sequence | | up_ss_map | | up_ss_struct | | up_ss_struct_par | | up_ss_theme | | up_ss_theme_parm | | up_ss_user_atts | | up_ss_user_parm | | up_user | | up_user_layout | | up_user_layout_mdata | | up_user_locale | | up_user_mdata | | up_user_param | | up_user_profile | | up_user_profile_locale | | up_user_profile_mdata | | up_user_ua_map | | up_versions | | upc_perm_mgr | +------------------------------+ 44 rows in set (0.00 sec)
Les groupes initiaux:
mysql> select * from up_group; +----------+------------+----------------+---------------------------+------------------------------------------+ | GROUP_ID | CREATOR_ID | ENTITY_TYPE_ID | GROUP_NAME | DESCRIPTION | +----------+------------+----------------+---------------------------+------------------------------------------+ | 0 | system | 2 | Tout le monde | Toutes les personnes | | 1 | system | 7 | Toutes les categories | Toutes les categories | | 11 | system | 2 | Anonymes | Utilisateur Anonyme | | 12 | system | 7 | Applications | Applications | | 13 | system | 7 | Canaux eSup | Canaux eSup | | 14 | system | 7 | Canaux uPortal | Canaux uPortal | | 15 | system | 7 | Demonstration | Canaux de d�monstration | | 16 | system | 7 | Information | Canaux d'information | | 17 | system | 2 | Portal System | Portal System Accounts | | 18 | system | 2 | Proprietaires de fragment | These are fragment layout owner accounts | | 2 | system | 2 | Administrateurs Portail | Administrateurs Portail | +----------+------------+----------------+---------------------------+------------------------------------------+ 11 rows in set (0.00 sec) mysql> select * from up_group_membership; +----------+----------------+------------------+-----------------+ | GROUP_ID | MEMBER_SERVICE | MEMBER_KEY | MEMBER_IS_GROUP | +----------+----------------+------------------+-----------------+ | 0 | local | 11 | T | | 0 | local | 18 | T | | 0 | local | 2 | T | | 0 | pags | pags_root | T | | 1 | local | 12 | T | | 1 | local | 13 | T | | 1 | local | 14 | T | | 1 | local | 15 | T | | 1 | local | 16 | T | | 1 | local | 42 | F | | 11 | local | guest | F | | 11 | local | guest-lo | F | | 13 | local | 1 | F | | 13 | local | 2 | F | | 13 | local | 3 | F | | 13 | local | 4 | F | | 13 | local | 5 | F | | 13 | local | 6 | F | | 13 | local | 7 | F | | 13 | local | 8 | F | | 13 | local | 9 | F | | 14 | local | 10 | F | | 14 | local | 11 | F | | 14 | local | 12 | F | | 14 | local | 13 | F | | 14 | local | 15 | F | | 14 | local | 17 | F | | 14 | local | 18 | F | | 14 | local | 19 | F | | 14 | local | 23 | F | | 14 | local | 24 | F | | 14 | local | 25 | F | | 14 | local | 26 | F | | 14 | local | 27 | F | | 14 | local | 28 | F | | 14 | local | 29 | F | | 14 | local | 30 | F | | 14 | local | 31 | F | | 14 | local | 32 | F | | 14 | local | 33 | F | | 14 | local | 34 | F | | 14 | local | 35 | F | | 14 | local | 36 | F | | 14 | local | 37 | F | | 14 | local | 38 | F | | 14 | local | 39 | F | | 14 | local | 40 | F | | 14 | local | 41 | F | | 14 | local | 43 | F | | 14 | local | 44 | F | | 14 | local | 45 | F | | 14 | local | 46 | F | | 14 | local | 48 | F | | 16 | local | 14 | F | | 16 | local | 16 | F | | 16 | local | 20 | F | | 16 | local | 21 | F | | 16 | local | 22 | F | | 16 | local | 47 | F | | 17 | local | 18 | T | | 17 | local | 2 | T | | 18 | local | admin-lo | F | | 18 | local | all-lo | F | | 18 | local | fragmentTemplate | F | | 18 | local | guest-lo | F | | 2 | local | admin | F | | 2 | local | admin-lo | F | +----------+----------------+------------------+-----------------+ 67 rows in set (0.00 sec)
On met apache en frontal avec le proxy-ajp
https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2010-04/msg00003.html
[root@esup3re7 local]# yum install httpd mod_ssl Installed: httpd.i686 0:2.2.15-15.el6.centos mod_ssl.i686 1:2.2.15-15.el6.centos Complete!
il importe de configurer la partie SSL: ssl.conf d'apache !
SSLCertificateFile /etc/pki/tls/certs/cert-1075-wildcard.it-sudparis.eu.pem SSLCertificateKeyFile /etc/pki/tls/private/wildcard.key SSLCertificateChainFile /etc/pki/tls/certs/cachain-TERENA_UTN-USERFirst-Hardware_AddTrust.pem SSLCACertificateFile /etc/pki/tls/certs/cachain.pem
[root@esup3re7 local]# tail -9 /etc/httpd/conf/httpd.conf ProxyPass /uPortal ajp://localhost:8009/uPortal retry=1 ProxyPass /ResourceServingWebapp ajp://localhost:8009/ResourceServingWebapp retry=1 ProxyPass /BookmarksPortlet ajp://localhost:8009/BookmarksPortlet retry=1 ProxyPass /cas-proxy-test-portlet ajp://localhost:8009/cas-proxy-test-portlet retry=1 ProxyPass /RssPortlet ajp://localhost:8009/RssPortlet retry=1 ProxyPass /WeatherPortlet ajp://localhost:8009/WeatherPortlet retry=1 ProxyPass /WebProxyPortlet ajp://localhost:8009/WebProxyPortlet retry=1 ProxyPass /manager ajp://localhost:8009/manager retry=1
ResourceServingWebapp, ressources indispensables au portail, jqueries … video esup 3.2 79mn WebProxyPortlet egalement necessaire sinon cela plante
definition du context uPortal et /ResourceServingWebapp pour tomcat, cf http://www.esup-portail.org/display/ESUPMU/Tomcat+en+production
video esup 3.2 82mn
context ajoutés dans le server.xml de tomcat, sous section de <Host name=“localhost” appBase=“webapps” :
<Context path="/uPortal" docBase="/var/lib/tomcat6/webapps/uPortal" crossContext="true" reloadable="true"> <Resource name="jdbc/PortalDb" auth="Container" type="javax.sql.DataSource" username="uportal32re7" password="secret" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://bd.it-sudparis.eu/uportalre7dev?autoReconnect=true" maxActive="50" maxIdle="30" maxWait="10000" poolPreparedStatements="true" removeAbandoned="true" removeAbandonedTimeout="300" /> <Manager pathname="" /> </Context> <Context path="/ResourceServingWebapp" docBase="/var/lib/tomcat6/webapps/ResourceServingWebapp" reloadable="false"> <Manager pathname=""/> </Context> </Host> </Engine> </Service> </Server>
crossContext a true pour les portlet
le portail sera accessible dans ces conditions (ProxyPass /uportal) sur l'URL
http://esup3re7.it-sudparis.eu/uPortal/render.userLayoutRootNode.uP
il faut une confiance entre le serveur CAS et le serveur du portail esup. c'est en certifiant le frontend apache que cette confiance (communication https entre CAS et uPortal/tomcat/apache) est réalisée. autrement on reçoit suite a une auth CAS ce genre d'erreure
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
⇒ cf ordre CA-chain ci-dessous !!
sur le serveur uPortal on met en place un frontend apache pour recptionner les requetes https (443) du serveur CAS
[root@esup3re7 ~] $ yum install mod_ssl
signature d'un request de certificat par TCS, puis paramtrage apache mod_ssl
[root@esup3re7 certs]# grep SSLCertificate /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/pki/tls/certs/cert-10605--.tem-tsp.eu.pem SSLCertificateKeyFile /etc/pki/tls/private/tem-tsp_star_nop.key SSLCertificateChainFile /etc/pki/tls/certs/chain-10605--.tem-tsp.eu.pem
https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2010-06/msg00049.html
Mathieu LARCHET a écrit : > Oui une dernière idée. > On a eu des soucis car la chaîne de certification présentée par Apache était dans le désordre (fichier addtrust_chain.pem) et provoquait ce genre d'erreur. > > Voici l'ordre tel qu'il doit être (à vérifier côté Apache CAS et Apache ENT) : > > subject= /C=NL/O=TERENA/CN=TERENA SSL CA > subject= /C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware > subject= /C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root Jehan Procaccia a ecrit : le site "officiel" une chaine AddTrust/Tenrena: $ wget http://www.cru.fr/_media/services/tcs/cachain.pem je renomme pour faire apparaitre l'ordre dans le nom de fichier $ cp cachain.pem cachain-TERENA_UTN-USERFirst-Hardware_AddTrust.pem effectivement celui livré à la signature (il y a ~3semaines) par la PKI TCS est en ordre inverse chain-1073-esup3dev.it-sudparis.eu.pem = Addtrust, puis UTN-USERFirst-Hardware et enfin TERENA :-( ! je corrige mes 2 frontaux apache (esup et CAS) avec : SSLCertificateChainFile /etc/pki/tls/certs/cachain-TERENA_UTN-USERFirst-Hardware_AddTrust.pem Cela marche .
[procacci@arvouin ~] $ openssl s_client -connect esup3re7.tem-tsp.eu:443 -CAfile /etc/pki/tls/certs/add_trust_external_ca_root.pem -verify 3 verify depth is 3 CONNECTED(00000003) depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root verify return:1 depth=2 C = US, ST = UT, L = Salt Lake City, O = The USERTRUST Network, OU = http://www.usertrust.com, CN = UTN-USERFirst-Hardware verify return:1 depth=1 C = NL, O = TERENA, CN = TERENA SSL CA verify return:1 depth=0 C = FR, O = Telecom Ecole de Management et Telecom SudParis, OU = DISI, CN = *.tem-tsp.eu verify return:1 --- Certificate chain 0 s:/C=FR/O=Telecom Ecole de Management et Telecom SudParis/OU=DISI/CN=*.tem-tsp.eu i:/C=NL/O=TERENA/CN=TERENA SSL CA 1 s:/C=NL/O=TERENA/CN=TERENA SSL CA i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware 2 s:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root 3 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
il faut rendre accessible a tomcat le driver mysql autrement au demarrage du serveur on a ce type d'erreur:
INFO: Portlet Container [/uPortal-PlutoPortletContainer]: Container initialized successfully. Cannot load JDBC driver class 'com.mysql.jdbc.Driver' java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
copie du jar mysql
[root@esup3re7 tomcat6]# cp /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/Tomcat/lib/mysql-connector-java-5.1.6.jar /var/lib/tomcat6/shared/lib/ [root@esup3re7 tomcat6]# [root@esup3re7 tomcat6]# [root@esup3re7 tomcat6]# ls -al /var/lib/tomcat6/shared/lib/ total 2728 drwxrwxr-x 2 root esup 4096 Feb 8 11:22 . drwxrwxr-x 4 root esup 4096 Dec 2 16:02 .. -rw-rw-r-- 1 esup esup 1736099 Feb 7 23:17 castor-1.1.1.jar -rw-rw-r-- 1 esup esup 44598 Feb 7 23:17 commons-logging-api-1.1.jar -rw-r--r-- 1 root root 703265 Feb 8 11:22 mysql-connector-java-5.1.6.jar -rw-rw-r-- 1 esup esup 3463 Feb 7 23:17 person-directory-api-1.5.0-RC6.jar -rw-rw-r-- 1 esup esup 142812 Feb 7 23:17 pluto-container-1.1.7.jar -rw-rw-r-- 1 esup esup 39406 Feb 7 23:17 pluto-descriptor-api-1.1.7.jar -rw-rw-r-- 1 esup esup 46472 Feb 7 23:17 pluto-descriptor-impl-1.1.7.jar -rw-rw-r-- 1 esup esup 25969 Feb 7 23:17 pluto-taglib-1.1.7.jar -rw-rw-r-- 1 esup esup 17090 Feb 7 23:17 portlet-api-1.0.jar [root@esup3re7 tomcat6]# chown esup /var/lib/tomcat6/shared/lib/mysql-connector-java-5.1.6.jar
finalement dans /usr/share/tomcat6/lib/ semble mieux que /usr/share/tomcat6/shared/lib/
[root@esup3re7 tomcat6]# cp /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/Tomcat/lib/mysql-connector-java-5.1.6.jar /usr/share/tomcat6/lib/ [root@esup3re7 tomcat6]# ls -l /usr/share/tomcat6/lib/mysql-connector-java-5.1.6.jar -rw-r--r-- 1 root root 703265 Feb 8 11:33 /usr/share/tomcat6/lib/mysql-connector-java-5.1.6.jar
il faut imperativement changer le mot de passe admin, pour cela on va en profiter pour commencer a structurer la personalisation du portail en construsant un arborescence de custom .
video2 esup3.2 5mn
[esup@esup3re7 esup-install]$ mkdir -p custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/admin [esup@esup3re7 esup-install]$ cd custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/admin [esup@esup3re7 admin]$ locate admin.user /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/db/mini/user/admin.user [esup@esup3re7 admin]$ cp /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/db/mini/user/admin.user .
generation d'une chaine md5 sur http://www.md5.net/ par exempl, adaptation du fichier de définition du compte admin
$ cat /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/admin/admin.user <user script="classpath://org/jasig/portal/io/import-user_v3-2.crn" username="admin"> <default-user>defaultTemplateUser</default-user> <person-directory> <encrptd-pswd>(MD5)5ebe2294ecd0e0f08eab7690d2a6ee69</encrptd-pswd> <first-name>Admin</first-name> <last-name>Utilisateur</last-name> <email>admin@int-evry.fr</email> </person-directory> </user>
import
[esup@esup3re7 esup-install]$ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/admin/ Buildfile: build.xml [java] FILE_PATTERN=.* [java] Import User: admin.user [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/admin/ Complete in 670 milliseconds. BUILD SUCCESSFUL Total time: 9 seconds
Si pb de memoire java
java.io.IOException: error=12, Cannot allocate memory
alors on reduit l'empreinte memoire lié au process ant
[esup@esup3re7 esup-install]$ cat ~/.ant/ant.conf ANT_OPTS="-Xms200M -Xmx200M"
http://esup32dev.it-sudparis.eu/uPortal/EsupMonitor?xml
<runtimeinfo> <memory free="339299720" total="500563968" max="954466304"/> <sessions total="1" guest="1" connected="0"/> <users> </users> </runtimeinfo>
et toutes les autres (/services, /private , /manager ) a proteger par des Locations dans le proxy_ajp.conf
[root@esup32dev /] $ cat /etc/httpd/conf.d/proxy_ajp.conf <Location /> Order deny,allow Allow from all </Location> <Location "/uPortal/EsupMonitor"> Order deny,allow Deny from all Allow from 157.159. </Location> <Location "/uPortal/services"> Order deny,allow Deny from all Allow from 157.159.21. 157.159.50. </Location> <Location "/uPortal/private"> Order deny,allow Deny from all Allow from 157.159. #AuthName "Administration ENT" #AuthType CAS #require user ... </Location> <Location "/manager"> Order deny,allow Deny from all Allow from 157.159. </Location> <Proxy *> Order deny,allow Allow from all </Proxy>
Rechercher les attributs utilisateur dans ldap, les attributs qu'on souhaite mapper pour chaque utilisateur dans ldap. video2 3.2 14mn
[esup@esup3re7 esup-install]$ grep ldap.persondirs config.properties esup.ldap.persondirs.use=true [esup@esup3re7 esup-install]$ mkdir -p custom/uPortal/uportal-impl/src/main/resources/properties/contexts
cela active la partie ldap du fichier personDirectoryContext.xml
on copie ce fichier pour éventuellement le customiser:
[esup@esup3re7 esup-install] $ cp /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/contexts/personDirectoryContext.xml custom/uPortal/uportal-impl/src/main/resources/properties/contexts/personDirectoryContext.xml
par exemple à ligne 265 *<bean id=“cachinguPortalLdapUserSource”* partie gauche nom de l'attribut ldap, droite nom de l'attribut uPortal
Par exemple nos groups PAGS (plus bas …) utiliseront un filtre sur des attributs non définis (matchés) par defaut comme eduPersonOrgUnitDN et eduPersonPrimaryOrgUnitDN
<entry key="eduPersonAffiliation"> <value>eduPersonAffiliation</value></entry> <entry key="eduPersonOrgUnitDN"> <value>eduPersonOrgUnitDN</value></entry> <entry key="eduPersonPrimaryOrgUnitDN"> <value>eduPersonPrimaryOrgUnitDN</value></entry> <entry key="supannaffectation"> <value>supannaffectation</value></entry>
les groupes PAGS sont constitués sur des attributs utilisateurs et non sur des groupes ldap.
Apres ce custom de personDirectoryContext.xml, on relance un
ant init ant deploy
Ensuite on peux vérifier la récupération d'attribut ldap pour un utilisateur en se connectant admin au portail puis Accueil → Administration → Echange d'attributs, on recherche un utilisateur “test” par exemple
Informations détaillées sur l'utilisateur : test Attribut Valeur(s) cn compte de test s2ia Nom usuel (displayName) tuti TEST eduPersonAffiliation NONE eduPersonPrimaryAffiliation employee eduPersonOrgUnitDN sn=DISI,sn=SECG,sn=TMSP,ou=structures.... eduPersonPrimaryOrgUnitDN sn=DISI,sn=SECG,sn=TMSP,ou=structures.... ...
on a bien récupéré des attributs ldap qualifiant cet utilisateur tels que definit dans personDirectoryContext.xml
video3 0mn (5mn40s arrivée d'une trottinette )
les groupes locaux sont des groups dans la BD esup . il servent a un usage de petits groupes, par exemple les personnes autorisées a publier dans l'intranet . Pour les autres groupes plus “macro” on utilisera plutot persondDir + groupPags ⇒ groups basés sur des attrribut utilisateur . (rappel, plus besoin de “groupLoader”, maintenant usage de db.import !)
ce qui est deployé a l'initialisation d'esup (jasig)
[esup@esup3re7 esup-install]$ ls Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/db/mini/ channel channel-type fragment-layout layout permission_set structure user channel-esup entity-type group_membership permission profile theme [esup@esup3re7 esup-install]$ ls -l Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/db/mini/group_membership/ total 44 -rw-rw-r-- 1 esup esup 362 Jul 9 19:26 Administrateurs_Portail.group_membership -rw-rw-r-- 1 esup esup 343 Jul 9 19:26 Anonymes.group_membership -rw-rw-r-- 1 esup esup 267 Jul 9 19:26 Applications.group_membership -rw-rw-r-- 1 esup esup 265 Jul 9 19:26 Canaux_eSup.group_membership -rw-rw-r-- 1 esup esup 271 Jul 9 19:26 Canaux_uPortal.group_membership -rw-rw-r-- 1 esup esup 266 Jul 9 19:26 Demonstration.group_membership -rw-rw-r-- 1 esup esup 260 Jul 9 19:26 Information.group_membership -rw-rw-r-- 1 esup esup 378 Jul 9 19:26 Portal System.group_membership -rw-rw-r-- 1 esup esup 454 Jul 9 19:26 Proprietaires_de_fragment.group_membership -rw-rw-r-- 1 esup esup 459 Jul 9 19:26 Toutes_les_categories.group_membership -rw-rw-r-- 1 esup esup 433 Jul 9 19:26 Tout_le_monde.group_membership
suite a db.init initial on a cette arborescence de groupes uportal/esup par defaut
Root Groups Réduire le groupe Toutes les categories Groupe Applications Etendre le groupe Canaux eSup Etendre le groupe Canaux uPortal Groupe Demonstration Etendre le groupe Information Réduire le groupe Tout le monde Etendre le groupe Administrateurs Portail Etendre le groupe Anonymes Etendre le groupe PAGS Root Etendre le groupe Proprietaires de fragment
Ici pour “jouer” avec les groupes locaux, on va creer une arborescence de groupes locaux a la place de “PAGS Root”.
ces groupes “conteneurs” sont issuent du tutoriel, il seront rattachés au parent Mes_groupes_locaux lui meme rataché au macro group Tout_le_monde
[esup@esup3re7 esup-install]$ mkdir -p custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [esup@esup3re7 esup-install]$ cp ~/src-tuto-julien/*group_membership custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [esup@esup3re7 esup-install]$ ls -l custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ total 16 -rw-r--r-- 1 esup esup 371 Jul 10 11:21 Mes_groupes_locaux.group_membership -rw-r--r-- 1 esup esup 485 Jul 10 11:21 Tout_le_monde.group_membership -rw-r--r-- 1 esup esup 323 Jul 10 11:21 Utilisateurs_apogee.group_membership -rw-r--r-- 1 esup esup 323 Jul 10 11:21 Utilisateurs_harpege.group_membership [esup@esup3re7 ~/esup-install] $ cat ../src-tuto-julien/Tout_le_monde.group_membership <group script="classpath://org/jasig/portal/io/import-group_membership_v3-0.crn"> <name>Tout le monde</name> <entity-type>org.jasig.portal.security.IPerson</entity-type> <creator>system</creator> <description>Toutes les personnes</description> <children> <group>Anonymes</group> <group>Proprietaires de fragment</group> <group>Administrateurs Portail</group> <group>Mes groupes locaux</group> <literal>defaultTemplateUser</literal> </children> [esup@esup3re7 esup-install]$ diff Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/db/mini/group_membership/Tout_le_monde.group_membership custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/Tout_le_monde.group_membership 11c11,12 < <group>PAGS Root</group> --- > <group>Mes groupes locaux</group> > <literal>defaultTemplateUser</literal>
on procede a l'import de ces groupes
[esup@esup3re7 esup-install]$ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac db.import: prodPrompt: crn-import: install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1859255917-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@d9b071' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 4096ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [java] FILE_PATTERN=.* [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Complete in 5186 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
une fois réalisé voici la visibilté “graphique” depuis le gestionnaire de groupe
Root Groups Réduire le groupe Toutes les categories Groupe Applications Etendre le groupe Canaux eSup Etendre le groupe Canaux uPortal Groupe Demonstration Etendre le groupe Information Réduire le groupe Tout le monde Etendre le groupe Administrateurs Portail Etendre le groupe Anonymes Réduire le groupe Mes groupes locaux Etendre le groupe Utilisateurs apogée Etendre le groupe Utilisateurs harpege Etendre le groupe Proprietaires de fragment
avec db.import , chaque éléments de la BD uPortal est une “entité”, on peut appercevoir une liste d'entité (layout, channel, user …)
import des groupes definis ci-dessus
[esup@esup32dev ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Buildfile: build.xml [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [java] FILE_PATTERN=.* [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Complete in 20308 milliseconds. BUILD SUCCESSFUL Total time: 37 seconds
Définition dans la tache crn-export du build.xml de uPortal:
[esup@esup3re7 ~/esup-install] $ vim Portail/uPortal_rel-3.2.4/build.xml <target name="crn-export" description="Exports the specified entity or entities to XML on the file system"> <uportal-impl-macro> <!-- Three properties control the export: dir, type, and sysid --> <fail unless="type"> You must specify a "type" parameter (-Dtype={something}) from the following: all, layout, all-layouts, channel, all-channels, all-permissions, all-memberships, group, all-groups, user, all-users. </fail>
on voit donc qu'on peux exporter plein de chose avec le -Dtype .
exemple d'export des groups
[esup@esup3re7 esup-install]$ mkdir -p custom/db-export [esup@esup3re7 esup-install]$ ls custom/db-export [esup@esup3re7 esup-install]$ ant db.export -Ddir=/home/esup/esup-install/custom/db-export/ -Dtype=all-groups Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac db.export: crn-export: install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-169575416-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@b1fea4' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 3782ms [java] Begin uPortal Export 'all-groups': 1341919464612 [java] Export Group: GROUP_NAME=Tout le monde [java] Export Group: GROUP_NAME=Toutes les categories [java] Export Group: GROUP_NAME=Anonymes [java] Export Group: GROUP_NAME=Applications [java] Export Group: GROUP_NAME=Canaux eSup [java] Export Group: GROUP_NAME=Canaux uPortal [java] Export Group: GROUP_NAME=Demonstration [java] Export Group: GROUP_NAME=Information [java] Export Group: GROUP_NAME=Portal System [java] Export Group: GROUP_NAME=Proprietaires de fragment [java] Export Group: GROUP_NAME=Administrateurs Portail [java] Export Group: GROUP_NAME=Mes groupes locaux [java] Export Group: GROUP_NAME=Utilisateurs apogée [java] Export Group: GROUP_NAME=Utilisateurs harpege [java] uPortal Export 'all-groups' Complete in 452 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds [esup@esup3re7 esup-install]$ ls custom/db-export/group/ Administrateurs_Portail-2.group Demonstration-15.group Toutes_les_categories-1.group Anonymes-11.group Information-16.group Tout_le_monde-0.group Applications-12.group Mes_groupes_locaux-21.group Utilisateurs_apogée-22.group Canaux_eSup-13.group Portal_System-17.group Utilisateurs_harpege-23.group Canaux_uPortal-14.group Proprietaires_de_fragment-18.group
Attention, export par défaut en version 2.6 ! c'est évoqué dans video3 ~vers 13mn.
[esup@esup32dev ~/esup-install] $ vim Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/export.properties
mais tout n'est pas là …
De plus certain canaux peuvent enregistrer les ID des groups et pas leur nom, donc lors d'une migration d'une version esup a une autre cela peu poser probleme si les groupes ne sont pas ré-importer dans le meme ordre que lors de la version precedente , (video3 16mn)
cf
[esup@esup32dev ~/esup-install] $ vim Portail/uPortal_rel-3.2.4/uportal-impl/target/classes/org/jasig/portal/io/generate-group-id.crn
dans le portail en tant qu'admin, administration → gestion des groupes , on retrouve la liste initiale des groupes esup
Groupe Root Groups Réduire le groupe Toutes les categories Groupe Applications Etendre le groupe Canaux eSup Etendre le groupe Canaux uPortal Groupe Demonstration Etendre le groupe Information Réduire le groupe Tout le monde Etendre le groupe Administrateurs Portail Etendre le groupe Anonymes Etendre le groupe PAGS Root Etendre le groupe Proprietaires de fragment
video3 7mn30s
pour voir apparaître (rapidement) nos nouveaux groupes, on profite du gestionnaire de cache d'esup, qui va nous permettre de mettre a jour immédiatement l'information en vidant le cache concernant les groups ici.
Statistiques du cache org.jasig.portal.groups.IEntityGroup Propriétés du cache Valeur Nb d'objets 16 Accès au cache réussis 17609 Accès au cache ratés 58 Nb d'objets en mémoire 16 Accès en m00e9moire 17609 Nb d'objets sur disque 0 Accès au disque 0 Nb de suppressions du cache 0 Méthode statistique Best Effort
on retrouve alors les groups locaux qu'on viens d'importer
Groupe Root Groups Réduire le groupe Toutes les categories Groupe Applications Etendre le groupe Canaux eSup Etendre le groupe Canaux uPortal Groupe Demonstration Etendre le groupe Information Réduire le groupe Tout le monde Groupe Administrateurs Portail Groupe Anonymes Réduire le groupe Mes groupes locaux Etendre le groupe Utilisateurs apogée Etendre le groupe Utilisateurs harpege Groupe Proprietaires de fragment
video3 17mn30s
reference http://www.esup-portail.org/display/ESUPMU/Groupes+%28esup-3%29 https://wiki.jasig.org/display/UPM32/Person+Attribute+Group+Store+%28PAGS%29
attention au group “PAGS root” de base qui n'est souvent pas repris dans une implementation locale personalisée de PAGSGroupStoreConfig.xml, cela plante les groupes initiaux de base du db.init cf https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2011-06/msg00034.html
Les groups PAGS se basent sur des attributs utilisateur uPortal ⇒ il faut avoir fait le mapping d'attributs dans le “persondir” au prealable . L'appartenance a un groupe est calculée à la connexion au portail, on recupere ses attributs utilisateur puis on verifie dans le fichier PAGS les groupes auquels il appartient ⇒ performance, mais pas de possibilité de lister les membres d'un groupe PAGS
Activer la fonctionnalité groupePAGS:
s'etait necessaire en 3.1
[esup@esup3dev ~/src/esup-3.1.2-esup-0.5-RC3] $ echo "esup.ldap.groups.use=true" >> custom.properties
maintenant en 3.2 c'est activé par defaut.
configurer les group PAGS, lesquels, sur quels attributs:
[esup@esup3re7 esup-install] $ mkdir -p custom/uPortal/uportal-impl/src/main/resources/properties/groups [esup@esup3re7 esup-install] $ cp Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml custom/uPortal/uportal-impl/src/main/resources/properties/groups
Attention au nom des clés de group, dans une definition de type
<group-key>TousPers</group-key>
le clée sera Pags.TousPers !
et type de filtrage d'attribut: http://www.esup-portail.org/display/ESUPMU/Groupes+(esup-3)
exemple ajout de serv_disi et etab_tmsp:
<group> <group-key>serv_disi</group-key> <group-name>Service DISI (LDAP)</group-name> <group-description>Tous les personnels de la DISI Evry</group-description> <selection-test> <test-group> <test> <attribute-name>supannAffectation</attribute-name> <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class> <test-value>DISI</test-value> </test> </test-group> </selection-test> </group> <group> <group-key>etab_tmsp</group-key> <group-name>Etablissement TMSP (LDAP)</group-name> <group-description>Tous les personnels de TMSP</group-description> <selection-test> <test-group> <test> <attribute-name>eduPersonOrgUnitDN</attribute-name> <tester-class>org.jasig.portal.groups.pags.testers.ValueExistsTester</tester-class> <test-value>TMSP</test-value> </test> </test-group> </selection-test> </group>
on modifie aussi les racines
[esup@esup3re7 esup-install]$ diff Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml custom/uPortal/uportal-impl/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml ... < Group pags_root: "PAGS Root" < IMPORTANT: The PAGS Root group is REQUIRED for uPortal to function. It Must be a member of the Everyone group in the < local group store < --> < <group> < <group-key>pags_root</group-key> < <group-name>PAGS Root</group-name> < <group-description>Root group for all PAGS groups. Convenience for adding PAGS groups to a local group.</group-description> < <members> < <member-key>all_users</member-key> < </members> < </group> ... < 75c38 < <group-name>LDAP Tout le personnel</group-name> --- > <group-name>Tout le personnel</group-name> 80c43 < <attribute-name>eduPersonAffiliation</attribute-name> --- > <attribute-name>eduPersonPrimaryAffiliation</attribute-name> 87c50 ... > <group> 126c104 < <group-name>LDAP Tous les invites</group-name> --- > <group-name>Tous les invites</group-name> 131c109
Deployer ce PAGSGroupStoreConfig.xml via un ant init puis ant deploy, apres un redemarrage du portail on doit retrouver ces definitions de groupes. En tant qu'admin, dans le group Manager → *search group of person contains LDAP* on voit alors apparaitre nos definitions de groupe.
L'etape suivante est de ratacher ces groupes PAGS a des groupes locaux afin qu'ils apparaissent “proprement” dans le group Manager mais aussi qu'il y ait un hierarchie de groupe, donc heritage “deepMemberOf” …
Ici on recopie nos definitions de groups depuis la version 3.1
Adaptation des groupes a l'organisation de noter campus
[esup@esup3re7 group_membership]$ diff Tout_le_monde.group_membership /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/db/itsp/group_membership/Tout_le_monde.group_membership 0a1 > 11d11 < <group>ITSP groupes LDAP</group> 14c14 < </group> --- > </group> \ No newline at end of file
[esup@esup3re7 group_membership]$ ls -l total 24 -rw-r--r-- 1 esup esup 371 Jul 10 11:21 Mes_groupes_locaux.group_membership -rw-r--r-- 1 esup esup 485 Jul 10 11:21 Tout_le_monde.group_membership -rw-r--r-- 1 esup esup 323 Jul 10 11:21 Utilisateurs_apogee.group_membership -rw-r--r-- 1 esup esup 323 Jul 10 11:21 Utilisateurs_harpege.group_membership [esup@esup3re7 group_membership]$ pwd /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership [esup@esup3re7 group_membership]$ cp /home/esup/esup32devdata/*.group_membership . [esup@esup3re7 group_membership]$ ls -l total 48 -rw-r--r-- 1 esup esup 295 Jul 10 11:33 Divers.group_membership -rw-r--r-- 1 esup esup 395 Jul 10 11:33 Etablissements.group_membership -rw-r--r-- 1 esup esup 305 Jul 10 11:33 Information.group_membership -rw-r--r-- 1 esup esup 517 Jul 10 11:33 ITSP_groupes_LDAP.group_membership -rw-r--r-- 1 esup esup 371 Jul 10 11:33 Mes_groupes_locaux.group_membership -rw-r--r-- 1 esup esup 329 Jul 10 11:33 OutilsCom.group_membership -rw-r--r-- 1 esup esup 625 Jul 10 11:33 Proprietaires_de_fragment.group_membership -rw-r--r-- 1 esup esup 389 Jul 10 11:33 Services.group_membership -rw-r--r-- 1 esup esup 479 Jul 10 11:33 Toutes_les_categories.group_membership -rw-r--r-- 1 esup esup 484 Jul 10 11:33 Tout_le_monde.group_membership -rw-r--r-- 1 esup esup 322 Jul 10 11:33 Utilisateurs_apogee.group_membership -rw-r--r-- 1 esup esup 323 Jul 10 11:33 Utilisateurs_harpege.group_membership
Ce sont nos groupes LDAP et leur dependances hierarchiques .
ensuite on lance le db.import en s'assurant que l'on a pas fait d'erreur de syntaxe dans les noms de groupe ⇒ correspondance exacte entre le PAGSGroupStoreConfig.xml et les diffrents groupes attachés dans les fichier *.group_membership ! , autrement on reçoit des erreurs a l'import .
Exemple si dans PAGSGroupStoreConfig.xml on a definit ce nom de groupe <group-name>Stagiaires Apprentis Doctorants</group-name> alors dans ITSP_groupes_LDAP.group_membership on appel le meme nom : <group>Stagiaires Apprentis Doctorants</group>
[esup@esup3re7 esup-install]$ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac db.import: prodPrompt: crn-import: install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-525510887-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@c6b80e' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 3654ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [java] FILE_PATTERN=.* [java] Import Group_Membership: Divers.group_membership [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Etablissements.group_membership [java] Import Group_Membership: ITSP_groupes_LDAP.group_membership [java] Import Group_Membership: Information.group_membership [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] Import Group_Membership: OutilsCom.group_membership [java] Import Group_Membership: Proprietaires_de_fragment.group_membership [java] Import Group_Membership: Services.group_membership [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Toutes_les_categories.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import Group_Membership: Divers.group_membership [java] Import Group_Membership: Etablissements.group_membership [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: ITSP_groupes_LDAP.group_membership [java] Import Group_Membership: Information.group_membership [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] Import Group_Membership: OutilsCom.group_membership [java] Import Group_Membership: Proprietaires_de_fragment.group_membership [java] Import Group_Membership: Services.group_membership [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Toutes_les_categories.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Complete in 1185 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
On a ainsi rattaché dans la BD uPortal les “enfants” du groupe local “Etablissements” qui comprendra (clés de groups) “pags.etab_tsp”, “pags.etab_tem” … dont les filtres ldap sont definis dans PAGSgroupStoreConfig.xml . Ce fichier étant chargé au démarrage du portail, il faut le redémarrer pour toutes modifications
une fois redemarré ,en tant qu'admin on peut controler la présence et la hiérarchie des groupes
Root Groups Réduire le groupe Toutes les categories Groupe Applications Etendre le groupe Canaux eSup Etendre le groupe Canaux uPortal Réduire le groupe Tout le monde Etendre le groupe Administrateurs Portail Etendre le groupe Anonymes Réduire le groupe ITSP groupes LDAP Réduire le groupe Etablissements Groupe Etablissement TEM Groupe Etablissement TMSP Groupe Etablissement TSP Réduire le groupe Services Groupe CRMP Groupe Departement INF Groupe Departement RST Réduire le groupe DISI Groupe DISI_ISR Groupe DISI_SI Groupe Stagiaires Apprentis Doctorants Groupe Tous les enseignants Groupe Tous les etudiants Groupe Tout le personnel Réduire le groupe Mes groupes locaux Etendre le groupe Utilisateurs apogée Etendre le groupe Utilisateurs harpege Etendre le groupe Proprietaires de fragment
et on peu verifier l'appartenance a des groupe d'un utilisateur en le recherchant
⇒ rechercer → person contenant → procacci → info
cn Jehan PROCACCIA Containing Groups DISI_ISR, DISI, Etablissement TMSP, Tout le monde, Tout le personnel displayName Jehan PROCACCIA eduPersonAffiliation employee ...
cf Vidéo3 27mn question sur le rattachement de groupes locaux vs gestion integrale depuis groupPags avec des members …
compositeGroupServices.xml definit le mecanisme de branchement des types de groupes. on constate qu'il y a a coté du PAGSGroupstore un LDAPGroupStoreConfig.xml qui fait des filtre ldap mais avec des performances tres mediocres !. smartldap autre gestionnaire qui se base sur le portail, pas les attributs ldap !.
doc/reference: http://www.esup-portail.org/display/ESUPMU/Publication+de+canaux+%28esup-3%29
Pb de listing de channels (finalement lié au une mauvaise gestion de groupes, cf chapitres precedents sur les PAGS)
https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2011-06/msg00028.html
Inline Frame revue par une portlet qui les “emules” maintenant (video3 38mn) Alternate Apparence, possibilité d'affiché un css pour ce canal en fonction du skin choisit ! vide3 40mn), masquet pour les mobiles etc …
Sidebar (de droite) possibilkité de la retirer dans custom.properties (video3 45mn)
On positione les sources dans un arborescence dediée au canaux
[esup@esup3re7 esup-install]$ mkdir -p src/canaux $ cd src/canaux/ [esup@esup32dev ~/esup-install] $ mkdir -p src/canaux $ cd src/canaux/ [esup@esup3re7 canaux] $ cp /home/esup/INSTALLATION/partage/portail/canaux/esup-canal-hello-1.00.zip . [esup@esup3re7 ~/esup-install/src/canaux] $ unzip esup-canal-hello-1.00.zip Archive: /home/esup/esup-canal-hello-1.00.zip creating: CHelloWorld-1.00/ creating: CHelloWorld-1.00/build/ creating: CHelloWorld-1.00/build/WEB-INF/ ...
recuperation du build.properties et adaptation des chemins a notre installation de package systemes a base de RPM (tomcat.home,
[esup@esup3re7 CHelloWorld-1.00]$ diff build.properties.orig build.properties 11c11 < tomcat.home = D:/uPortal_rel-2-4-3-quick-start/Tomcat_5-0-28 --- > tomcat.home = /usr/share/tomcat6 14c14 < uportal.home = D:/uPortal_rel-2-4-3-quick-start/uPortal_rel-2-4-3 --- > uportal.home = /home/esup/esup-install/Portail/uPortal_rel-3.2.4 17c17 < deploy.home = D:/uPortal_rel-2-4-3-quick-start/Tomcat_5-0-28/webapps/uPortal --- > deploy.home = /usr/share/tomcat6/webapps/uPortal
Pour la partie tomcat , dans les build.xml des canaux il y a une reference au common/lib de tomcat, d'où l'astuce de créer un lien de common/lib vers lib de tomcat , autrement le canal plante lors du deploiement (ne trouve pas servlet.jar, xmlapi …)
[esup@esup3re7 CHelloWorld-1.00]$ ant deploy Buildfile: build.xml prepare: [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CHelloWorld-1.00/docs/api [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CHelloWorld-1.00/tests [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CHelloWorld-1.00/properties [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CHelloWorld-1.00/lib [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CHelloWorld-1.00/webpages/media/org/esupportail/portal/channels/CHelloWorld [mkdir] Created dir: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CHelloWorld-1.00/db prepareINSTALL: prepareUPGRADE: prepareREADME: prepareLICENCE: prepareCHANGELOG: compile: deploy: [copy] Copying 5 files to /usr/share/tomcat6/webapps/uPortal BUILD SUCCESSFUL Total time: 0 seconds
il faut faire connetre ce cannal au portail .
Répertoire custom pour heberger les fichier xml de publication systeme des canaux (equivalent de pubchan en 2.5)
[esup@esup3re7 esup-install] $ mkdir custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel
Copie du fichier de publication
[esup@esup3re7 esup-install]$ cp src/canaux/CHelloWorld-1.00/CHello.channel custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel/
publication
[esup@esup3re7 esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel -Dpattern="CHello.channel" Buildfile: build.xml [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel [java] FILE_PATTERN=CHello.channel [java] Import Channel: CHello.channel [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel Complete in 1484 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
avec l'expression reguliere -Dpattern=“.*\.channel” on import tous le fichiers de definition de canal
[esup@esup3dev ~/src/esup-install] $ ant db.import -Ddir=/home/esup/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel -Dpattern=".*\.channel" .... [java] Base Import Directory=/home/esup/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel [java] FILE_PATTERN=.*\.channel [java] Import Channel: Administration.channel [java] INFO Looking up bean 'channelRegistryStore' in ApplicationContext due to context not yet being initialized [java] INFO Join test failed: org.jasig.portal.rdbm.DatabaseMetaDataImpl$OracleDb on statement: 'SELECT COUNT(UP_USER.USER_ID) FROM UP_USER, UP_USER_LAYOUT WHERE UP_USER.USER_ID = UP_USER_LAYOUT.USER_ID(+) AND UP_USER.USER_ID=0': [java] StatementCallback; bad SQL grammar [SELECT COUNT(UP_USER.USER_ID) FROM UP_USER, UP_USER_LAYOUT WHERE UP_USER.USER_ID = UP_USER_LAYOUT.USER_ID(+) AND UP_USER.USER_ID=0]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND UP_USER.USER_ID=0' at line 1 [java] INFO Using join test: org.jasig.portal.rdbm.DatabaseMetaDataImpl$PostgreSQLDb [java] INFO MySQL (5.0.77) / MySQL-AB JDBC Driver (mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )) database/driver [java] Connected To: jdbc:mysql://bd3.it-sudparis.eu/uportal3dev [java] Supports: [java] Outer Joins: true [java] {ts metasyntax: true [java] TO_DATE(): false [java] INFO Creating singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Adding destruction callback singleton for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Using existing singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Using existing singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Using existing singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'jpaInterceptor' in ApplicationContext due to context not yet being initialized [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] Import Channel: AssosAnciens.channel [java] Import Channel: AssosEtudiants.channel [java] Import Channel: CAnnuaire.channel [java] WARN Unable to load class 'org.esupportail.portal.channels.CAnnuaire.CAnnuaire' for channel id=44, fname='null' [java] WARN Unable to load class 'org.esupportail.portal.channels.CAnnuaire.CAnnuaire' for channel id=44, fname='CAnnuaire' [java] Import Channel: CHello.channel [java] WARN Unable to load class 'org.esupportail.portal.channels.CHelloWorld.CHelloWorld' for channel id=36, fname='null' [java] WARN Unable to load class 'org.esupportail.portal.channels.CHelloWorld.CHelloWorld' for channel id=36, fname='canal-hello' [java] Import Channel: CImap.channel [java] WARN Unable to load class 'org.esupportail.portal.channels.CImap.CImap' for channel id=45, fname='null' [java] WARN Unable to load class 'org.esupportail.portal.channels.CImap.CImap' for channel id=45, fname='Cimap' [java] Import Channel: CStockage.channel [java] WARN Unable to load class 'org.esupportail.portal.channels.CStockage.CStockage' for channel id=46, fname='null' [java] WARN Unable to load class 'org.esupportail.portal.channels.CStockage.CStockage' for channel id=46, fname='CStockage' [java] Import Channel: CanalU.channel [java] Import Channel: Catalogues.channel [java] Import Channel: EvryPratique.channel [java] Import Channel: Gaspar.channel [java] Import Channel: Handicap.channel [java] Import Channel: Infopedia.channel [java] Import Channel: MaisonEleves.channel [java] Import Channel: MotPasse.channel [java] Import Channel: Nuxeo.channel [java] Import Channel: OpenPortal.channel [java] Import Channel: Presentation.channel [java] Import Channel: ReglementScola.channel [java] Import Channel: Signets.channel [java] WARN Unable to load class 'org.esupportail.portal.channels.CSignet2.CSignet2' for channel id=59, fname='null' [java] WARN Unable to load class 'org.esupportail.portal.channels.CSignet2.CSignet2' for channel id=59, fname='CSignet2' [java] Import Channel: Sympa.channel [java] WARN Unable to load class 'org.esupportail.portal.channels.CSympaMultiServeur.CSympaMultiServeur' for channel id=60, fname='null' [java] WARN Unable to load class 'org.esupportail.portal.channels.CSympaMultiServeur.CSympaMultiServeur' for channel id=60, fname='Sympa' [java] Import Channel: Webmail.channel [java] Import Channel: Wifi.channel [java] INFO Property [org.jasig.portal.MediaManager.HTMLPublicId] was requested but not found. [java] INFO Property [org.jasig.portal.MediaManager.HTMLSystemId] was requested but not found. [java] INFO Property [org.jasig.portal.MediaManager.XHTMLPublicId] was requested but not found. [java] INFO Property [org.jasig.portal.MediaManager.XHTMLSystemId] was requested but not found. [java] INFO Property [org.jasig.portal.MediaManager.WMLPublicId] was requested but not found. [java] INFO Property [org.jasig.portal.MediaManager.WMLSystemId] was requested but not found. [java] Import Channel: inlineMeteo.channel [java] Import of /home/esup/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel Complete: 4456 BUILD SUCCESSFUL Total time: 8 seconds
video3 51mn 30s
ils permettent d'affecter automatiquement un ensemble de contenu a une population. il faut preparer des contenus ciblés, onglet, colonne , canaux pour qu'une population ait ce pre-remplissage à la connexion .
Deux composantes:
un fragment ce n'est pas necessairement un seul onglet.
ownerID pour trouver le contenu de ce fragment, on crée un utilisateur pour lequel on crée un environement onglets/canaux/colones et on definit le fragment X comme etant l'environement de l'utilisateur X-lo (LayOut) .
bonne pratique creer un fragment par onglet afin de pouvoir intercaler de nouveaux onglets en cours d'année, idem pour les precedences (10-20-30 …), se garder du mou …
audiance ⇒ deepMemberOf de “tout le monde” (heritage), mais memberOf “eteblissement X” = attachement direct a ce group (feuille).
l'utilisateur se connecte au portail, on verifie son appartenance a des groupes (pags et locaux), puis on parcourt un a un les fragments et ainsi on construit ce qui va s'afficher pour son profile .
l'option d'import/création d'un utilisateur pour gérer les fragments façon 2.6 n'est plus recommandée: *ant useradd + mot de passe*
en Esup3 la simple déclaration du user-lo dans le fichier dlm.xml créé automatiquement l'utilisateur . comme il n'a pas de mot de passe, on peut se connecter en tant qu'admin puis graphiquement → fragment Administrator → guest → on est connecté en tant que guest-lo et ainsi on peux manipuler graphiquement son environnement (memorisé en BD) puis fait un BD.export du layout .
Principes d'usage, la partie anonyme du portail sur le compte guest-lo, puis personnel-lo et etudiants-lo.
le contenu du fragment est associé a un utilisateur “modele” video3 58mn
[esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp] $ mkdir user/ [esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/user] $ ls -l total 32 -rw-r--r-- 1 esup esup 157 Aug 16 17:54 accueil-guest-lo.user -rw-r--r-- 1 esup esup 151 Aug 16 17:54 accueil-lo.user -rw-r--r-- 1 esup esup 153 Aug 16 17:54 aide-auth-lo.user -rw-r--r-- 1 esup esup 154 Aug 16 17:54 aide-guest-lo.user -rw-r--r-- 1 esup esup 150 Aug 16 17:54 campus-lo.user -rw-r--r-- 1 esup esup 148 Aug 16 17:54 disi-lo.user -rw-r--r-- 1 esup esup 147 Aug 16 17:54 tem-lo.user -rw-r--r-- 1 esup esup 147 Aug 16 17:54 tsp-lo.user [esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/user] $ cat tsp-lo.user <user script="classpath://org/jasig/portal/io/import-user_v3-0.crn" username="tsp-lo"> <default-user>defaultTemplateUser</default-user> </user>
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/user/ ... [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/user/ [java] FILE_PATTERN=.* [java] Import User: accueil-guest-lo.user [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import User: accueil-lo.user [java] Import User: aide-auth-lo.user [java] Import User: aide-guest-lo.user [java] Import User: campus-lo.user [java] Import User: disi-lo.user [java] Import User: tem-lo.user [java] Import User: tsp-lo.user [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/user/ Complete in 653 milliseconds. BUILD SUCCESSFUL Total time: 9 seconds
il est de bon usage d'ajouter ces utilisateurs au groupe “proprietaire de fragment” pour faciliter la gestion graphique de ces comptes
[esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership] $ cat Proprietaires_de_fragment.group_membership <group script="classpath://org/jasig/portal/io/import-group_membership_v3-0.crn"> <name>Proprietaires de fragment</name> <entity-type>org.jasig.portal.security.IPerson</entity-type> <creator>system</creator> <description>These are fragment layout owner accounts</description> <children> <literal>admin-lo</literal> <literal>all-lo</literal> <literal>fragmentTemplate</literal> <literal>campus-lo</literal> <literal>disi-lo</literal> <literal>accueil-guest-lo</literal> <literal>accueil-lo</literal> <literal>aide-auth-lo</literal> <literal>aide-guest-lo</literal> <literal>tem-lo</literal> <literal>tsp-lo</literal> </children> </group>
db import
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ -Dpattern="Proprietaires_de_fragment.*\.group_membership" [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [java] FILE_PATTERN=Proprietaires_de_fragment.*\.group_membership [java] Import Group_Membership: Proprietaires_de_fragment.group_membership [java] Import Group_Membership: Proprietaires_de_fragment.group_membership [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Complete in 607 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
a des fin de test des fragments / profiles, il peut-etre utile d'effacer un utilisateur de la BD uPortal afin de verifier le layout (profil dlm) qu'il reçoit initialement.
Litse de tache ant et description: http://www.esup-portail.org/pages/viewpage.action?pageId=84213994
ici c'est “ant user.del -Dusername=test” qui va etre utiliser
[esup@esup3dev ~/src/esup-install] $ ant user.del -Dusername=test [echo] Invoking DeleteUser ... [java] DeleteUser.main(): Got portal UID for test: 271 .... [java] DeleteUser.main(): Removed 271 from portal db. BUILD SUCCESSFUL
pour constater pleinement le changement, il est preferable de refaire un ant init, ant deploy et tomcat restart apres ce delete.
on prepare nos fragments par type de population (associées aux utilisateurs modeles)
[esup@esup3re7 ~/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/] [esup@esup3re7 itsp]$ mkdir fragment-layout [esup@esup3re7 itsp]$ ll fragment-layout/ total 40 -rw-r--r-- 1 root root 1973 Aug 16 00:08 crmp-lo.fragment-layout -rw-r--r-- 1 root root 2108 Aug 16 00:08 disi-lo.fragment-layout -rw-r--r-- 1 root root 9494 Aug 16 00:08 enseignant-lo.fragment-layout -rw-r--r-- 1 root root 3916 Aug 16 00:08 etudiant-lo.fragment-layout -rw-r--r-- 1 root root 1538 Aug 16 00:08 guest-lo.fragment-layout -rw-r--r-- 1 root root 9668 Aug 16 00:08 personnel-lo.fragment-layout
on peux aussi les administrer via l'interface web du portail, via le Canal “Fragment Administration”
import des modele xml de la formation esup, fragment layouts au format 3.2
[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/fragments] $ ll total 12 -rw-r--r-- 1 root root 2665 Jul 2 16:12 enseignant-lo.fragment-layout -rw-r--r-- 1 root root 3873 Jul 2 16:12 etudiant-lo.fragment-layout -rw-r--r-- 1 root root 2742 Jul 2 16:12 personnel-lo.fragment-layout [esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/fragments] $ cat enseignant-lo.fragment-layout <layout xmlns:dlm="http://www.uportal.org/layout/dlm" script="classpath://org/jasig/portal/io/import-layout_v3-2.crn" username="enseignant-lo"> <folder hidden="false" immutable="false" name="Root folder" type="root" unremovable="true"> <folder hidden="false" immutable="true" name="Header folder" type="header" unremovable="true"> <channel fname="header" unremovable="false" hidden="false" immutable="false"/> <channel fname="portal_login_general" unremovable="false" hidden="false" immutable="false"/> <channel fname="user-locales-selector" unremovable="false" hidden="false" immutable="false"/> <channel fname="fragment-admin" unremovable="false" hidden="false" immutable="false"/> </folder> <folder name="Enseignant" dlm:deleteAllowed="true" dlm:editAllowed="true" dlm:moveAllowed="true" dlm:addChildAllowed="true" type="regular"> <structure-attribute> <name>externalId</name> <value>enseignant</value> </structure-attribute> <folder hidden="false" name="Column 1" type="regular"> <structure-attribute> <name>width</name> <value>50%</value> </structure-attribute> <channel fname="canal-hello" dlm:deleteAllowed="true" dlm:moveAllowed="true"/> </folder> <folder hidden="false" name="Column 2" type="regular"> <structure-attribute> <name>width</name> <value>50%</value> </structure-attribute> <channel fname="canal-hello" dlm:deleteAllowed="true" dlm:moveAllowed="true"/> </folder> </folder> ... <folder hidden="false" immutable="false" name="Footer folder" type="footer" unremovable="false"> <channel fname="footer" unremovable="false" hidden="false" immutable="false"/> </folder> </folder> </layout>
db import des fragments
[esup@esup32dev ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/fragments/ Buildfile: build.xml ... [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/fragments/ [java] FILE_PATTERN=.* [java] Import DLM Fragment Layout: enseignant-lo.fragment-layout ... [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] Import DLM Fragment Layout: etudiant-lo.fragment-layout [java] Import DLM Fragment Layout: personnel-lo.fragment-layout [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/fragments/ Complete in 19997 milliseconds. BUILD SUCCESSFUL Total time: 49 seconds
Questions fragment video3 1H10mn
il s'agit juste de la definition des fragment, pas les contenus …(layouts)
on reprend le dlm.xml dans notre arborescence de custom
[esup@esup3re7 esup-install]$ cp /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/dlm.xml custom/uPortal/uportal-impl/src/main/resources/properties/
et on adapte a notre besoin
[esup@esup3re7 esup-install]$ diff /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/dlm.xml custom/uPortal/uportal-impl/src/main/resources/properties/dlm.xml 47,48c47,80 < < <dlm:fragment name='All' ownerID='all-lo' precedence='2'> --- > > <dlm:fragment name='Personnel' ownerID='personnel-lo' precedence='30'> > <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> > <paren mode="AND"> > <attribute mode='deepMemberOf' name='Tout le personnel'/> > </paren> > </dlm:audience> > </dlm:fragment> > > <dlm:fragment name='Enseignant' ownerID='enseignant-lo' precedence='30'> ...
Admin c'est un PersonEvaluatorFactory .
si une personne est personel et etudiant, il recupere les 2 fragment si un fragment pour ces 2 population . video3 55mn
un fragment ce n'est pas necessairement un seul onglet. il peu y en avoir +sieurs
si +sieurs, si etudiant à 3 frag, 3 frag aussi pour le personnel, et un onglet commun entre personnel et etudiants, si un personne est personnel et etudiants, si 2 fragments de 3 onglets il va avoir les 6 onglets dont 2 doubles
alors que si on gere 6 fregments de un onglet avec pour celui qui est en commun aux 2 populations, alors celui ci ne s'affichera qu'une fois .
On peu avoir le meme fragment pour les 2 populations et gerer des droits d'acces a un canal en particulier pour telle population . il ne vera que les cannuax auquels il a droit .
[esup@esup3re7 esup-install]$ ll /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/dlm.xml -rw-r--r-- 1 esup esup 2705 Feb 14 2011 dlm.xml [esup@esup3re7 esup-install]$ ll /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/custom/uPortal/uportal-impl/src/main/resources/properties/dlm.xml -rw-r--r-- 1 esup esup 4078 Jul 10 18:31 /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/custom/uPortal/uportal-impl/src/main/resources/properties/dlm.xml [esup@esup3re7 esup-install]$ diff /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/dlm.xml /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/custom/uPortal/uportal-impl/src/main/resources/properties/dlm.xml 47,48c47,80 < < <dlm:fragment name='All' ownerID='all-lo' precedence='2'> --- > > <dlm:fragment name='Personnel' ownerID='personnel-lo' precedence='30'> > <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> > <paren mode="AND"> > <attribute mode='deepMemberOf' name='Tout le personnel'/> > </paren> > </dlm:audience> > </dlm:fragment> > > <dlm:fragment name='Enseignant' ownerID='enseignant-lo' precedence='30'> > <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> > <paren mode="AND"> > <attribute mode='deepMemberOf' name='Tous les enseignants'/> > </paren> > </dlm:audience> > </dlm:fragment> > > <dlm:fragment name='Etudiant' ownerID='etudiant-lo' precedence='30'> > <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> > <paren mode="AND"> > <attribute mode='deepMemberOf' name='Tous les etudiants'/> > </paren> > </dlm:audience> > </dlm:fragment> > > <dlm:fragment name='SAD' ownerID='sad-lo' precedence='30'> > <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'> > <paren mode="AND"> > <attribute mode='deepMemberOf' name='Stagiaires Apprentis Doctorants'/> > </paren> > </dlm:audience> > </dlm:fragment> > > <!-- <dlm:fragment name='All' ownerID='all-lo' precedence='2'> 64c96 < </dlm:fragment> --- > </dlm:fragment> -->
Ant init et ant deploy pour deplacer ce nouveau dlm.xml aux bons endrois
ant init deplace notre dlm.xml custom dans l'espace de compilation du portail
[esup@esup3re7 ~/esup-install] $ ant init [esup@esup3re7 esup-install]$ ll /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/dlm.xml -rw-rw-r-- 1 esup esup 4078 Jul 11 09:30 /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/dlm.xml
ant deploy le deplace dans le webapps de l'arborescence du serveur d'application
[esup@esup3re7 esup-install]$ ll /var/lib/tomcat6/webapps/uPortal/WEB-INF/classes/properties/dlm.xml -rw-rw-r-- 1 esup esup 4078 Jul 11 09:30 /var/lib/tomcat6/webapps/uPortal/WEB-INF/classes/properties/dlm.xml
video3 1H13mn30s
principe de separation entre le html et la css, distinction fond / forme. cinematique: recup de l'environement user dans la BD , le portail en fait du XML qui passe au travers de XSLT, pour finalement aboutir a du Xhtml et enfin application de CSS sur ce html ⇒ cela permet de faire a partir du meme xml de le passer au travers de 2 xsl differents xsl universality et xsl m-universality pour avoir 2 rendu differents .
en phase developpement on commente le cache des css pour diposer immediatement de nos modif, cf themes/web.xml comment de pageCachingFilter et CacheExpiresFilter , video3 1H16
on peux avoir plusieurs css et l'utilisateur passe de l'une a l'autre. Quand on desactive la css on a un portail “serialisé” voire “accessible” …
2 Fichiers skinList.xml de base avec 4 skin
uportal-war/src/main/webapp/media/skins/universality/skinList.xml uportal-war/src/main/webapp/media/skins/muniversality/skinList.xml
pour nos skin on reprend le fichier dans custom
[esup@esup3re7 custom]$ mkdir -p uPortal/uportal-war/src/main/webapp/media/skins/universality/ [esup@esup3re7 custom]$ mkdir -p uPortal/uportal-war/src/main/webapp/media/skins/muniversality/ [esup@esup3re7 esup-uPortal-3.2.4-esup-1.0.0-RC3]$ cp Portail/uPortal_rel-3.2.4/uportal-war/src/main/webapp/media/skins/universality/skinList.xml custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/ [esup@esup3re7 esup-uPortal-3.2.4-esup-1.0.0-RC3]$ cp Portail/uPortal_rel-3.2.4/uportal-war/src/main/webapp/media/skins/muniversality/skinList.xml custom/uPortal/uportal-war/src/main/webapp/media/skins/muniversality/
et on l'edite pour ajouter les notres (formation et itsp)
[esup@esup3re7 esup-uPortal-3.2.4-esup-1.0.0-RC3]$ vim custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/skinList.xml [esup@esup3re7 esup-install]$ diff Portail/uPortal_rel-3.2.4/uportal-war/src/main/webapp/media/skins/universality/skinList.xml custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/skinList.xml 31a32,48 > > <skin> > <skin-key>formation</skin-key> > <skin-name>Theme de formation</skin-name> > <skin-description> > Theme de formation. > </skin-description> > </skin> > > <skin> > <skin-key>itsp</skin-key> > <skin-name>Campus ITSP</skin-name> > <skin-description> > Skin de Telecom SudParis et Telecom Ecole de Management. > </skin-description> > </skin> >
En 3.2 il y a des changement, video3 1H19 skin.xml pour le definition du skin dedans on y retrouve le chargement des css de base (fluid ⇒ carcan pour faire de la css, normaliser les class et nom de fichiers …) import des css uportal3, les javascripts + surchage des css
Creation d'une skin itsp a partir de celui de “formation”, preparation de l'arborescence custom et definition des css etc … (ici reprise de la formation esup3.2)
recup des skin depuis une VM esup32dev
[esup@esup32dev ~/esup-install/custom/uPortal/uportal-war/src/main/webapp/media/skins/universality] $ scp -r formation itsp tem tsp root@cnossos:/vz/private/10234/home/esup/esup-install/custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/
recopie du skin 3.2 “formation” en itsp
[esup@esup32dev ~/esup-install/custom/uPortal/uportal-war/src/main/webapp/media/skins/universality] $ cp -a formation itsp
le point d'entrée est formation.css qui fait des import des autres.
ensuite pour mettre en ligne on init et deploy
le changement du theme par defaut se via le fichier qui gere le profile DLM XML DLM_XHTML.theme a recopier dans notre custom .
[esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp] $ ls admin channel fragment-layout group_membership user [esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp] $ mkdir theme [esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp] $ cp /home/esup/INSTALLATION/partage/portail/theme/DLM_XHTML.theme ./theme/
modification
[esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp] $ diff /home/esup/INSTALLATION/partage/portail/theme/DLM_XHTML.theme theme/DLM_XHTML.theme 23,24c23,24 < <value>formation</value> < <description>Design skin name</description> --- > <value>itsp</value> > <description>campus ITSP</description> 28c28 < </theme> \ No newline at end of file --- > </theme>
importation de cette nouvelle xsl
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/theme/ Buildfile: build.xml [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@1e6743e' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 4162ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/theme/ [java] FILE_PATTERN=.* [java] Import Theme: DLM_XHTML.theme [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/theme/ Complete in 541 milliseconds. BUILD SUCCESSFUL Total time: 12 seconds
Tout utilisateur ayant deja personnelement changer son skin, le gardera , donc si on le fait trop tard il faut modifier dans le BD le choix du skin pour chaque users !
retirer la sidebar de droite sur la page par defaut.
[esup@esup3re7 ~/esup-install] $ grep use.sidebar config.properties esup.xsl.use.sidebar=true esup.xsl.use.sidebar.focused=true #esup.xsl.use.sidebar.guest=true esup.xsl.use.sidebar.guest=false
il est possible d'affecter une theme (skin) par type de population video4 0mn
il faut mapper un attribut sur le uPortalTemplateUserName
[esup@esup3re7 ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/contexts] $ diff -ur personDirectoryContext.xml personDirectoryContext.xml.new --- personDirectoryContext.xml 2012-08-25 21:29:30.000000000 +0200 +++ personDirectoryContext.xml.new 2012-08-25 21:28:58.000000000 +0200 @@ -305,6 +305,13 @@ <entry key="employeeType"> <value>employeeType</value></entry> <entry key="title"> <value>title</value></entry> <entry key="supannaffectation"> <value>supannaffectation</value></entry> + <entry key="supannentiteaffectationprincipale"> + <set> + <value>uPortalTemplateUserName</value> + <value>supannentiteaffectationprincipale</value> + </set> + </entry> + <entry key="objectclass"> <value>objectclass</value></entry> <entry key="supannorganisme"> <value>supannorganisme</value></entry> </map>
definir un utilisateur modele / template associé a cette population
un layout “creux/vide” (header + footer) pour cette population, juste pour que l'utilisateur herite de la partie skin de ce layout .
definition du skin pour le user template de la population en question
video4 4mn recapitulatif; mappage d'un attribut caracterisant notre population sur uPortalTemplateUserNamer, Le portail va aller chercher l'utilisateur qui porte le nom de la valeur associée a l'utilisateur connecté→ il herite alors de l'environement utilisateur template, puis herite du profile où on change la partie skin. Cela n'a d'effet que si l'utilisateur de c'est jamais connecté, il faudra detruite l'utilisateur pour que cela s'applique .
[esup@esup3re7 ~/esup-install] $ mkdir custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account [esup@esup3re7 ~/esup-install] $ ll /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ total 36 -rw-r--r-- 1 esup esup 410 Aug 26 14:40 tem-default.profile -rw-r--r-- 1 esup esup 481 Aug 26 14:40 tem.layout -rw-r--r-- 1 esup esup 86 Aug 26 14:41 tem.template-user -rw-r--r-- 1 esup esup 411 Aug 26 14:41 tmsp-default.profile -rw-r--r-- 1 esup esup 481 Aug 26 14:41 tmsp.layout -rw-r--r-- 1 esup esup 86 Aug 26 14:42 tmsp.template-user -rw-r--r-- 1 esup esup 410 Aug 26 14:42 tsp-default.profile -rw-r--r-- 1 esup esup 481 Aug 26 14:42 tsp.layout -rw-r--r-- 1 esup esup 86 Aug 26 14:43 tsp.template-user $ cat tmsp.template-user <user script="classpath://org/jasig/portal/io/import-user_v3-2.crn" username="241"/> $ cat tmsp-default.profile <profile script="classpath://org/jasig/portal/io/import-profile_v3-2.crn" username="241"> <name>HTML browser profile</name> <fname>default</fname> <description>A sample profile for common web browsers</description> <structure name="DLM Tabs and columns"/> <theme name="DLM XHTML"> <parameter> <name>skin</name> <value>formation</value> </parameter> </theme> </profile> $ cat tmsp.layout <?xml version="1.0"?> <layout xmlns:dlm="http://www.uportal.org/layout/dlm" script="classpath://org/jasig/portal/io/import-layout_v3-2.crn" username="241"> <folder hidden="false" immutable="false" name="Root folder" type="root" unremovable="true"> <folder hidden="false" immutable="true" name="Header folder" type="header" unremovable="true"/> <folder hidden="false" immutable="false" name="Footer folder" type="footer" unremovable="false"/> </folder> </layout>
import template-user
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ -Dpattern=".*\.template-user" Buildfile: build.xml ... install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1153366062-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@8c39d7' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 3624ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ [java] FILE_PATTERN=.*\.template-user [java] Import Template User: tem.template-user [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Template User: tmsp.template-user [java] Import Template User: tsp.template-user [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ Complete in 824 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
import profile
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ -Dpattern=".*\.profile" Buildfile: build.xml ... install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1700626302-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@1a3f178' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 3677ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ [java] FILE_PATTERN=.*\.profile [java] Import Profile: tem-default.profile [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Profile: tmsp-default.profile [java] Import Profile: tsp-default.profile [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ Complete in 806 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
import layout
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ -Dpattern=".*\.layout" Buildfile: build.xml ... install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1829337587-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@3f58bb' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 3396ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ [java] FILE_PATTERN=.*\.layout [java] Import Layout: tem.layout [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDB.metadata' in ApplicationContext due to context not yet being initialized [java] INFO Join test failed: org.jasig.portal.rdbm.DatabaseMetaDataImpl$OracleDb on statement: 'SELECT COUNT(UP_USER.USER_ID) FROM UP_USER, UP_USER_LAYOUT WHERE UP_USER.USER_ID = UP_USER_LAYOUT.USER_ID(+) AND UP_USER.USER_ID=0': [java] StatementCallback; bad SQL grammar [SELECT COUNT(UP_USER.USER_ID) FROM UP_USER, UP_USER_LAYOUT WHERE UP_USER.USER_ID = UP_USER_LAYOUT.USER_ID(+) AND UP_USER.USER_ID=0]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND UP_USER.USER_ID=0' at line 1 [java] INFO Using join test: org.jasig.portal.rdbm.DatabaseMetaDataImpl$PostgreSQLDb [java] INFO MySQL (5.0.95) / MySQL-AB JDBC Driver (mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )) database/driver [java] Connected To: jdbc:mysql://bd3.it-sudparis.eu/uportal32re7 [java] Supports: [java] Outer Joins: true [java] {ts metasyntax: true [java] TO_DATE(): false [java] INFO Looking up bean 'channelRegistryStore' in ApplicationContext due to context not yet being initialized [java] INFO Creating singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Adding destruction callback singleton for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'personManager' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'dlmConfigurationLoader' in ApplicationContext due to context not yet being initialized [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] Import Layout: tmsp.layout [java] Import Layout: tsp.layout [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account/ Complete in 4518 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
Tous les fichiers d'un coup
[esup@esup3re7 ~/esup-install] $ ll /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template-account/ total 36 -rw-r--r-- 1 esup esup 410 Jan 16 12:33 tem-default.profile -rw-r--r-- 1 esup esup 1998 Jan 16 12:31 tem.layout -rw-r--r-- 1 esup esup 86 Jan 16 12:02 tem.template-user -rw-r--r-- 1 esup esup 411 Jan 16 12:34 tmsp-default.profile -rw-r--r-- 1 esup esup 1889 Jan 16 12:32 tmsp.layout -rw-r--r-- 1 esup esup 86 Jan 16 12:02 tmsp.template-user -rw-r--r-- 1 esup esup 410 Jan 16 12:33 tsp-default.profile -rw-r--r-- 1 esup esup 1900 Jan 16 12:30 tsp.layout -rw-r--r-- 1 esup esup 86 Jan 16 12:02 tsp.template-user [esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template-account/ Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac db.import: prodPrompt: crn-import: install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1673432325-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@5dc268' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 3555ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template-account/ [java] FILE_PATTERN=.* [java] Import Template User: tem.template-user [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Template User: tmsp.template-user [java] Import Template User: tsp.template-user [java] Import Profile: tem-default.profile [java] Import Profile: tmsp-default.profile [java] Import Profile: tsp-default.profile [java] Import Layout: tem.layout [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDB.metadata' in ApplicationContext due to context not yet being initialized [java] INFO Join test failed: org.jasig.portal.rdbm.DatabaseMetaDataImpl$OracleDb on statement: 'SELECT COUNT(UP_USER.USER_ID) FROM UP_USER, UP_USER_LAYOUT WHERE UP_USER.USER_ID = UP_USER_LAYOUT.USER_ID(+) AND UP_USER.USER_ID=0': [java] StatementCallback; bad SQL grammar [SELECT COUNT(UP_USER.USER_ID) FROM UP_USER, UP_USER_LAYOUT WHERE UP_USER.USER_ID = UP_USER_LAYOUT.USER_ID(+) AND UP_USER.USER_ID=0]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND UP_USER.USER_ID=0' at line 1 [java] INFO Using join test: org.jasig.portal.rdbm.DatabaseMetaDataImpl$PostgreSQLDb [java] INFO MySQL (5.0.95) / MySQL-AB JDBC Driver (mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )) database/driver [java] Connected To: jdbc:mysql://bd3.it-sudparis.eu/uportal32re7 [java] Supports: [java] Outer Joins: true [java] {ts metasyntax: true [java] TO_DATE(): false [java] INFO Looking up bean 'channelRegistryStore' in ApplicationContext due to context not yet being initialized [java] INFO Creating singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Adding destruction callback singleton for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Looking up bean 'personManager' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'dlmConfigurationLoader' in ApplicationContext due to context not yet being initialized [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] Import Layout: tmsp.layout [java] Import Layout: tsp.layout [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template-account/ Complete in 2281 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
video4 15mn12s
Maintenant les traductions se font dans un fichier XML à part : uportal-war/src/main/resources/layout/theme/universality/messages.xml
video4 18mn
la XSL principal est decomposé en 6 fichiers par “fonctionnalité” ⇒ structure page, navigation, blocs login, search etc … structure des colonnes, des contenus et preferences
uportal-war/src/main/resources/layout/theme/universality/universality.xsl
Pour travailler a chaud sur les xls directement dans le repertoire webapps (comme pour CSS et javascritps) Lors du travail sur les xsl il vous est possible de désactiver le cache (dans le custom.properties : esup.xsl.cache=false) il faut que l'URL change pour que la XSL change (changer d'onglet )
Eviter d'en modifier trop car a chaque changement de version c'est bcp de travail. Nancy a modifié essentiellement le fait d'afficher un seul canal quand on clique sur un onglet plutot que tous .
exemple de retrait du lien “Plan du site”
[esup@esup32dev ~/esup-install] $ mkdir -p custom/uPortal/uportal-war/src/main/resources/layout/theme/universality/ [esup@esup32dev ~/esup-install] $ cp update/uPortal/uportal-war/src/main/resources/layout/theme/universality/components.xsl custom/uPortal/uportal-war/src/main/resources/layout/theme/universality/ $ vim components.xsl [esup@esup32dev ~/esup-install/custom/uPortal/uportal-war/src/main/resources/layout/theme/universality] $ diff components.xsl /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-war/src/main/resources/layout/theme/universality/components.xsl 187d186 < <!-- Retrait du plan du site JP 196d194 < -->
video 4 21mn40s
24mn30 Portlet Path est recherché dans le portlet.xml la servlet “pluto invoquer” doit demarrer dès le démarrage du tomcat (web.xml : <load-on-startup>1) pour que le context soit deja pret et que le portail puisse la lister ⇒ du coup le portail met plus de tps a demarrer car demarrage du portail + les contexts des portlets + servlets des points d'entrée qui les demarrent .
[esup@esup3re7 canaux]$ wget https://sourcesup.renater.fr/frs/download.php/2983/esup-canal-annuaire-3.2.1.zip --2012-07-10 17:39:58-- https://sourcesup.renater.fr/frs/download.php/2983/esup-canal-annuaire-3.2.1.zip [esup@esup3re7 CAnnuaire-3.2.1]$ diff build.exemple.properties build.properties 11c11 < tomcat.home = E:/esupdev/esupdev-x.x/uPortal_rel-x-x-x-quick-start/Tomcat_x-x-x --- > tomcat.home = /usr/share/tomcat6 14c14 < uportal.home = E:/esupdev/esupdev-x.x/uPortal_rel-x-x-x-quick-start/uPortal_rel-x-x-x --- > uportal.home = /home/esup/esup-install/Portail/uPortal_rel-3.2.4 17c17 < deploy.home = E:/esupdev/esupdev-x.x/uPortal_rel-x-x-x-quick-start/webapps/uPortal --- > deploy.home = /usr/share/tomcat6/webapps/uPortal
adapter un properties/CAnnuaire.xml selon les exemples fournis dans le repertoire properties .
[esup@esup3re7 CAnnuaire-3.2.1]$ ant deploy ... [copy] Copying 5 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CAnnuaire-3.2.1/build/WEB-INF/classes/properties/channels/org_esup/CAnnuaire [copy] Copying 8 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CAnnuaire-3.2.1/build/WEB-INF/classes/org/esupportail/portal/channels/CAnnuaire [copy] Copying 5 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CAnnuaire-3.2.1/build/media/org/esupportail/portal/channels/CAnnuaire [copy] Copying 2 files to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/src/canaux/CAnnuaire-3.2.1/build/WEB-INF/classes/org/esupportail/portal/channels/CAnnuaire/languages deploy: [copy] Copying 59 files to /usr/share/tomcat6/webapps/uPortal BUILD SUCCESSFUL Total time: 2 seconds
si pb au ant deploy sur le repartoire $tomcat_home/common/lib ⇒ le creer avec droits d'acces a l'utilisateur esup.
on creer un fichier de deinition/publication du canal selon les exemple fournis: http://www.esup-portail.org/display/ESUPMU/Publication+de+canaux+%28esup-3%29
[esup@esup3re7 CAnnuaire-3.2.1]$ cat /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel/esup-annuaire.channel <channel-definition script="classpath://org/jasig/portal/io/import-channel_v3-1.crn"> <title>Annuaires</title> <name>Annuaires</name> <fname>esup-annuaire</fname> <desc>Annuaires</desc> <type>Custom</type> <class>org.esupportail.portal.channels.CAnnuaire.CAnnuaire</class> <timeout>30000</timeout> <hasedit>N</hasedit> <hashelp>N</hashelp> <hasabout>N</hasabout> <secure>N</secure> <locale>en_US</locale> <categories> <category>Canaux eSup</category> </categories> <groups> <group>Tout le monde</group> </groups> <parameters/> </channel-definition>
en mode “cli” avec un fichier de definition .channel suivit d'un db.import
[esup@esup3re7 esup-install]$ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel -Dpattern="esup-annuaire.*\.channel" ... [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel [java] FILE_PATTERN=esup-annuaire.*\.channel [java] Import Channel: esup-annuaire.channel [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel Complete in 1171 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
apres s'etre assurer d'avoir integrer tous les groups membership correspondants (categoris de cannaux)
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Buildfile: build.xml ... [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ [java] FILE_PATTERN=.* [java] Import Group_Membership: Administration.group_membership [java] Import Group_Membership: Assistance.group_membership [java] Import Group_Membership: Divers.group_membership [java] Import Group_Membership: Etablissements.group_membership [java] Import Group_Membership: Etudiants.group_membership [java] Import Group_Membership: Google.group_membership [java] Import Group_Membership: ITSP_groupes_LDAP.group_membership [java] Import Group_Membership: Information.group_membership [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] Import Group_Membership: Offres.group_membership [java] Import Group_Membership: OutilsCom.group_membership [java] Import Group_Membership: OutilsComm.group_membership [java] INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Pratique.group_membership [java] Import Group_Membership: Proprietaires_de_fragment.group_membership [java] Import Group_Membership: Services.group_membership [java] Import Group_Membership: Tests.group_membership [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Toutes_les_categories.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import Group_Membership: Administration.group_membership [java] Import Group_Membership: Assistance.group_membership [java] Import Group_Membership: Divers.group_membership [java] Import Group_Membership: Etablissements.group_membership [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] Import Group_Membership: Etudiants.group_membership [java] Import Group_Membership: Google.group_membership [java] Import Group_Membership: ITSP_groupes_LDAP.group_membership [java] Import Group_Membership: Information.group_membership [java] Import Group_Membership: Mes_groupes_locaux.group_membership [java] Import Group_Membership: Offres.group_membership [java] Import Group_Membership: OutilsCom.group_membership [java] Import Group_Membership: OutilsComm.group_membership [java] Import Group_Membership: Pratique.group_membership [java] Import Group_Membership: Proprietaires_de_fragment.group_membership [java] Import Group_Membership: Services.group_membership [java] Import Group_Membership: Tests.group_membership [java] Import Group_Membership: Tout_le_monde.group_membership [java] Import Group_Membership: Toutes_les_categories.group_membership [java] Import Group_Membership: Utilisateurs_apogee.group_membership [java] Import Group_Membership: Utilisateurs_harpege.group_membership [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/ Complete in 4907 milliseconds. BUILD SUCCESSFUL Total time: 10 seconds
on peux integrer tous les canaux
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel -Dpattern=".*\.channel" Buildfile: build.xml [java] FILE_PATTERN=.*\.channel [java] Import Channel: AccesECampus.channel [java] INFO Looking up bean 'channelRegistryStore' in ApplicationContext due to context not yet being initialized [java] INFO Creating singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Adding destruction callback singleton for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Looking up bean 'jpaInterceptor' in ApplicationContext due to context not yet being initialized [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'portletDefinitionRegistry' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'channelPublishingService' in ApplicationContext due to context not yet being initialized [java] Import Channel: Actualites.channel [java] Import Channel: Administration.channel [java] Import Channel: Apple.channel [java] Import Channel: Arcentel.channel [java] Import Channel: AssosAnciens.channel [java] Import Channel: AssosEtudiants.channel [java] Import Channel: Bookmark.channel [java] Import Channel: Brochure.channel [java] Import Channel: CAnnuaire.channel [java] Import Channel: CE.channel [java] Import Channel: CHello.channel [java] Import Channel: CInfos.channel [java] Import Channel: CSuggestion.channel [java] Import Channel: CanalU.channel [java] Import Channel: Carrefourinternational.channel [java] Import Channel: Catalogues.channel [java] Import Channel: EvryPratique.channel [java] Import Channel: Filez.channel [java] Import Channel: Graife.channel [java] Import Channel: Handicap.channel [java] Import Channel: Helpdesk.channel [java] Import Channel: Infopedia.channel [java] Import Channel: Intro.channel [java] Import Channel: LienUtilesPerm.channel [java] Import Channel: MSDNAA.channel [java] Import Channel: MaisonEleves.channel [java] Import Channel: Mediatheque.channel [java] Import Channel: Moodle.channel [java] Import Channel: MotPasse.channel [java] Import Channel: Nuxeo.channel [java] Import Channel: OpenPortal.channel [java] Import Channel: Parrains.channel [java] Import Channel: ProgTV.channel [java] Import Channel: Rapport_fin_de_sejour.channel [java] Import Channel: Rdvz.channel [java] Import Channel: ReglementScola.channel [java] Import Channel: Relations_entreprises.channel [java] Import Channel: STP.channel [java] Import Channel: Signets.channel [java] Import Channel: Specificite_europe_bourse_erasmus.channel [java] Import Channel: Stats.channel [java] Import Channel: Supervis.channel [java] Import Channel: Sympa.channel [java] Import Channel: Titresejour.channel [java] Import Channel: Trombi.channel [java] Import Channel: Ubicast.channel [java] Import Channel: Voila.channel [java] Import Channel: Webmail.channel [java] Import Channel: Wifi.channel [java] Import Channel: Wikiadmin.channel [java] Import Channel: Wikipedia.channel [java] Import Channel: calendar.channel [java] Import Channel: cms.channel [java] Import Channel: dictionnaire-portlet.channel [java] Import Channel: esup-annuaire.channel [java] Import Channel: google-maps-portlet.channel [java] Import Channel: google-portlet.channel [java] Import Channel: google-translate-portlet.channel [java] Import Channel: inlineMeteo.channel [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel Complete in 7763 milliseconds. BUILD SUCCESSFUL Total time: 12 seconds
On peux aussi commencer sur ce premier canal par le publier via l'interface web esup.
Connexion Admin au portail ⇒ clique sur Gestionnaire de Cannaux (uPortal/render.userLayoutRootNode.uP?uP_fname=portlet-admin) → referencer une nouvelle portlet → type obsolete Custom → suivre les menus (Suivant), categorie, groupes … on fini par la gestion du cycle de vie ⇒ publié ! helas cela plante …
ERROR [org.jasig.portal.ChannelManager#55] Sep/22 15:34:56,115 portlet.DispatcherPortlet.[] - Could not complete request org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [AnnotatedAction@57f36c targetAction = [EvaluateAction@2e68de expression = portletAdministrationHelper.savePortletRegistration(channel, person), resultExposer = [null]], attributes = map[[empty]]] in state 'reviewPortlet' of flow 'edit-portlet' -- action execution attributes were 'map[[empty]]' at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:60) ... Caused by: org.springframework.binding.expression.EvaluationException: An OgnlException occurred getting the value for expression 'portletAdministrationHelper.savePortletRegistration(channel, person)' on context [class org.springframework.webflow.engine.impl.RequestControlContextImpl] ... Caused by: ognl.MethodFailedException: Method "savePortletRegistration" failed for object org.jasig.portal.portlets.portletadmin.PortletAdministrationHelper@99a52c [org.springframework.dao.InvalidDataAccessApiUsageException: clazz can not be null; nested exception is java.lang.IllegalArgumentException: clazz can not be null] ... Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: clazz can not be null; nested exception is java.lang.IllegalArgumentException: clazz can not be null ... Caused by: java.lang.IllegalArgumentException: clazz can not be null
[esup@esup32dev ~/esup-install/src/canaux/CAnnuaire-3.2.1] $ ls -ald /usr/share/tomcat6/common/lib/ drwxrwxr-x 2 root esup 4096 Sep 22 11:42 /usr/share/tomcat6/common/lib/
Exporter le contenu de la base de données:
[esup@esup32dev ~/esup-install] $ mkdir db-exports [esup@esup32dev ~/esup-install] $ ant db.export -Dtype=all -Ddir=/home/esup/esup-install/db-exports [esup@esup32dev ~/esup-install] $ ls -l db-exports/ total 44 drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 channel drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 channel-type drwxrwxr-x 2 esup esup 4096 Sep 22 15:32 entity-type drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 fragment-layout drwxrwxr-x 2 esup esup 4096 Sep 22 15:32 group_membership drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 layout drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 permission_set drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 profile drwxrwxr-x 2 esup esup 4096 Sep 22 15:32 structure drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 theme drwxrwxr-x 2 esup esup 4096 Sep 22 15:31 user
[esup@esup3re7 ~/esup-install/canaux] $ wget https://sourcesup.renater.fr/frs/download.php/4021/esup-filemanager-2.2.0.tgz $ tar tvfz esup-filemanager-2.2.0.tgz $ ln -s esup-filemanager-2.2.0 esup-filemanager $ cd esup-filemanager
[esup@esup3re7 ~/esup-install/canaux/esup-filemanager/src/main/webapp/WEB-INF] $ cp web.xml web.xml.orig $ cp context/drives.xml context/drives.xml.orig $ cp log4j.properties log4j.properties.orig
[esup@esup3re7 ~/esup-install/canaux/esup-filemanager/src/main/webapp/WEB-INF] $ diff web.xml.orig web.xml 115c115 < <param-value>https://cas.mon-univ.fr/proxy</param-value> --- > <param-value>https://cas.tem-tsp.eu/cas/proxy</param-value>
[esup@esup3re7 ~/esup-install/canaux/esup-filemanager/src/main/webapp/WEB-INF] $ diff context/drives.xml.orig context/drives.xml | more 36c36 < <util:constant id="isPortlet" static-field="java.lang.Boolean.FALSE"/> --- > <util:constant id="isPortlet" static-field="java.lang.Boolean.TRUE"/> 42,52c42,52 < <util:map id="drivesCategories"> < <entry key="Shared"> < <bean class="org.esupportail.portlet.filemanager.beans.DrivesCategory"> < <property name="icon" value="/esup-filemanager/img/drives/house.png" /> < <property name="drives"> < <list> < <value>Toto</value> < <value>bob</value> < </list> < </property> < </bean> --- > <util:map id="drivesCategories"> > <entry key="Mes fichiers"> > <bean class="org.esupportail.portlet.filemanager.beans.DrivesCategory"> > <property name="icon" value="/esup-filemanager/img/drives/house.png" /> > <property name="drives"> > <list> > <value>Espace personnel</value> > <value>Web spaces</value> ....
export JAVA_HOME=/usr/lib/jvm/java-1.6.0 [esup@esup3re7 ~/esup-install/canaux/esup-filemanager] $ /usr/local/apache-maven-2.2.1/bin/mvn clean package .... Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.jar 138K downloaded (plexus-archiver-1.0-alpha-7.jar) [INFO] [war:war {execution: default-war}] [INFO] Exploding webapp... [INFO] Assembling webapp esup-filemanager in /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/canaux/esup-filemanager-2.2.0/target/esup-filemanager [INFO] Copy webapp webResources to /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/canaux/esup-filemanager-2.2.0/target/esup-filemanager [INFO] Generating war /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/canaux/esup-filemanager-2.2.0/target/esup-filemanager.war [INFO] Building war: /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/canaux/esup-filemanager-2.2.0/target/esup-filemanager.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 minute 24 seconds [INFO] Finished at: Thu Aug 30 15:42:11 CEST 2012 [INFO] Final Memory: 27M/91M [INFO] ------------------------------------------------------------------------ <code> === deploy === <code> [esup@esup3re7 ~/esup-install/canaux/esup-filemanager] $ ant -f /home/esup/esup-install/build.xml portlet.deploy -DportletApp=/home/esup/esup-install/canaux/esup-filemanager/target/esup-filemanager.war Buildfile: /home/esup/esup-install/build.xml Trying to override old definition of task java Trying to override old definition of task javac portlet.deploy: checkForTomcat: deployPortletApp: install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-install/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1990999528-marker [artifact:dependencies] Downloading: org/apache/pluto/pluto-ant-tasks/1.1.7/pluto-ant-tasks-1.1.7.pom from central [artifact:dependencies] Transferring 2K from central [artifact:dependencies] Downloading: org/apache/pluto/pluto-ant-tasks/1.1.7/pluto-ant-tasks-1.1.7.jar from central [artifact:dependencies] Transferring 11K from central [assemblePortlet] Assembling '/home/esup/esup-install/canaux/esup-filemanager/target/esup-filemanager.war' to '/tmp/jasig' [assemblePortlet] Aug 30, 2012 3:46:07 PM org.exolab.castor.mapping.Mapping loadMapping [assemblePortlet] INFO: Loading mapping descriptors from jar:file:/home/esup/.m2/repository/org/apache/pluto/pluto-descriptor-impl/1.1.7/pluto-descriptor-impl-1.1.7.jar!/org/apache/pluto/descriptors/services/castor/castor-web-xml-mapping.xml [assemblePortlet] Aug 30, 2012 3:46:07 PM org.exolab.castor.mapping.Mapping loadMapping [assemblePortlet] INFO: Loading mapping descriptors from jar:file:/home/esup/.m2/repository/org/apache/pluto/pluto-descriptor-impl/1.1.7/pluto-descriptor-impl-1.1.7.jar!/org/apache/pluto/descriptors/services/castor/castor-portlet-xml-mapping.xml [assemblePortlet] Aug 30, 2012 3:46:08 PM org.exolab.castor.mapping.Mapping loadMapping [assemblePortlet] INFO: Loading mapping descriptors from jar:file:/home/esup/.m2/repository/org/apache/pluto/pluto-descriptor-impl/1.1.7/pluto-descriptor-impl-1.1.7.jar!/org/apache/pluto/descriptors/services/castor/castor-web-xml-mapping.xml fastWarDeploy: [echo] extractWars=true [echo] removeExisting=false [mkdir] Created dir: /tmp/jasig/esup-filemanager [unwar] Expanding: /tmp/jasig/esup-filemanager.war into /tmp/jasig/esup-filemanager [echo] Moving /tmp/jasig/esup-filemanager to /usr/share/tomcat6/webapps [delete] Deleting: /tmp/jasig/esup-filemanager.war BUILD SUCCESSFUL Total time: 7 seconds [esup@esup3re7 ~/esup-install/canaux/esup-filemanager] $ ll /usr/share/tomcat6/webapps/esup-filemanager/ total 20 drwxrwsr-x 3 esup esup 4096 Aug 30 15:46 css drwxrwsr-x 7 esup esup 4096 Aug 30 15:46 img drwxrwsr-x 3 esup esup 4096 Aug 30 15:46 js drwxrwsr-x 3 esup esup 4096 Aug 30 15:46 META-INF drwxrwsr-x 6 esup esup 4096 Aug 30 15:46 WEB-INF
dans /etc/tomcat6/server.xml
<Context path="/esup-filemanager" docBase="/usr/share/tomcat6/webapps/esup-filemanager" reloadable="true"> <Manager pathname=""/> </Context>
[esup@esup3re7 ~/esup-install] $ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel -Dpattern="esup-filemanager\.channel" Buildfile: build.xml Trying to override old definition of task java Trying to override old definition of task javac db.import: prodPrompt: crn-import: install-parent-pom: [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/pom.xml to /home/esup/.m2/repository/org/jasig/portal/uportal-parent/3.2.4/uportal-parent-3.2.4.pom [touch] Creating /tmp/jasig/uportal-parent.pom-1944894708-marker [echo] Artifact '/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar' is up-to-date [artifact:install] [INFO] Installing /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/uportal-impl/target/uportal-impl-3.2.4.jar to /home/esup/.m2/repository/org/jasig/portal/uportal-impl/3.2.4/uportal-impl-3.2.4.jar [java] [java] INFO Creating new lazily initialized GenericApplicationContext for the portal [java] INFO Created new MemoryContext with environment '{java.naming.factory.url.pkgs=tyrex.naming, java.naming.provider.url=, java.naming.factory.initial=org.jasig.portal.jndi.DisposableMemoryContextFactory}' [java] INFO Initialized portal JNDI context [java] INFO Failed to load bean 'PortalDb.JNDI' from ApplicationContext expecting type: interface javax.sql.DataSource. Will try to load the next bean in the list instead. Error message from the attempt to load this bean ('PortalDb.JNDI'): Error creating bean with name 'PortalDb.JNDI' defined in class path resource [properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is javax.naming.NotContextException: comp is not a subcontext (enable debug for stack trace) [java] INFO Loaded bean for name PortalDb.direct [java] INFO Setting CacheProvider 'org.jasig.portal.utils.cache.hibernate.EhCacheProvider@1843ca4' on ThreadLocal [java] INFO Created new lazily initialized GenericApplicationContext for the portal in 4186ms [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel [java] FILE_PATTERN=esup-filemanager\.channel [java] Import Channel: esup-filemanager.channel [java] INFO Looking up bean 'channelRegistryStore' in ApplicationContext due to context not yet being initialized [java] INFO Creating singleton instance for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Adding destruction callback singleton for bean 'scopedTarget.sessionAttributesOverridesMap' [java] INFO Looking up bean 'jpaInterceptor' in ApplicationContext due to context not yet being initialized [java] INFO Parsing group service configuration. [java] INFO RDBMEntityGroupStore.initialize(): Node separator set to . [java] INFO Looking up bean 'cacheFactory' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'PortalDb' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'entityCachingService' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'portletDefinitionRegistry' in ApplicationContext due to context not yet being initialized [java] INFO Looking up bean 'channelPublishingService' in ApplicationContext due to context not yet being initialized [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel Complete in 5874 milliseconds. BUILD SUCCESSFUL Total time: 12 seconds
reference: http://www.esup-portail.org/display/PROJCANSTOCK/Canal+stockage
[esup@esup3dev ~/src/canaux] $ wget https://sourcesup.cru.fr/frs/download.php/2900/esup-canal-stockage-4.7-RC-2.zip [esup@esup3dev ~/src/canaux] $ unzip esup-canal-stockage-4.7-RC-2.zip
http://www.esup-portail.org/pages/viewpage.action?pageId=5865511
[esup@esup3dev ~/src/canaux] $ wget http://www.esup-portail.org/download/attachments/5865511/esup-utils-mag-2.5.zip [esup@esup3dev ~/src/canaux] $ unzip esup-utils-mag-2.5.zip [esup@esup3dev ~/src/canaux/esup-utils-mag-2.5] $ diff -ur build.properties.orig build.properties --- build.properties.orig 2010-08-25 16:38:19.000000000 +0200 +++ build.properties 2010-08-25 16:39:33.000000000 +0200 @@ -8,14 +8,13 @@ #R�pertoire d'installation de Tomcat -tomcat.home = /home/uportal/PROD/Tomcat +tomcat.home = /usr/share/tomcat6 -#R�pertoire d'installation d'uPortal -uportal.home = /home/uportal/BUILD/uPortal-sources - -#R�pertoire de d�ploiement -deploy.home = /home/uportal/PROD/webapps/uPortal +#Repertoire d'installation d'uPortal +uportal.home = /home/esup/src/esup-install/Portail/uPortal_rel-3.1.2 +#Repertoire de deploiement +deploy.home = /usr/share/tomcat6/webapps/uPortal
[esup@esup3dev ~/src/canaux/esup-utils-mag-2.5] $ ant all BUILD FAILED /home/esup/src/canaux/esup-utils-mag-2.5/build.xml:155: /home/esup/src/esup-install/Portail/uPortal_rel-3.1.2/lib not found.
alors
[esup@esup3dev ~/src/canaux/esup-utils-mag-2.5] $ mkdir /home/esup/src/esup-install/Portail/uPortal_rel-3.1.2/lib
puis erreur
compile: [javac] Compiling 25 source files to /home/esup/src/canaux/esup-utils-mag-2.5/build/WEB-INF/classes [javac] /home/esup/src/canaux/esup-utils-mag-2.5/source/org/esupportail/portal/utils/channels/ConfigChannel.java:7: package javax.servlet.jsp does not exist
alors
$ diff -ur build.xml.orig build.xml --- build.xml.orig 2010-08-25 17:15:38.000000000 +0200 +++ build.xml 2010-08-25 17:17:05.000000000 +0200 @@ -62,6 +62,9 @@ <!-- Les lib de Tomcat --> <fileset dir="${tomcat.home}/common/lib" includes="**/*.jar" /> + <!-- https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2010-02/msg00099.html --> + <fileset dir="${tomcat.home}/lib" includes="**/*.jar" /> +
[esup@esup3dev ~/src/canaux/esup-utils-mag-2.5] $ ant all Buildfile: build.xml clean: [delete] Deleting directory /home/esup/src/canaux/esup-utils-mag-2.5/build undeploy: prepare: [mkdir] Created dir: /home/esup/src/canaux/esup-utils-mag-2.5/build [mkdir] Created dir: /home/esup/src/canaux/esup-utils-mag-2.5/build/WEB-INF/classes prepareINSTALL: prepareUPGRADE: prepareREADME: prepareLICENCE: prepareCHANGELOG: compile: [javac] Compiling 25 source files to /home/esup/src/canaux/esup-utils-mag-2.5/build/WEB-INF/classes [javac] /home/esup/src/canaux/esup-utils-mag-2.5/source/org/esupportail/portal/utils/channels/ConfigChannel.java:59: warning: [deprecation] DEBUG in org.apache.log4j.Priority has been deprecated [javac] logLevel = Priority.DEBUG; [javac] ^ [javac] /home/esup/src/canaux/esup-utils-mag-2.5/source/org/esupportail/portal/utils/channels/SubChannel.java:201: warning: [deprecation] getBaseWorkerURL(java.lang.String,boolean) in org.jasig.portal.ChannelRuntimeData has been deprecated [javac] xslParameters.put("baseDownloadURL",runtimeData.getBaseWorkerURL(UPFileSpec.FILE_DOWNLOAD_WORKER, true).replaceAll("%2F", "/")); [javac] ^ [javac] /home/esup/src/canaux/esup-utils-mag-2.5/source/org/esupportail/portal/utils/channels/SubChannelAjax.java:116: warning: [deprecation] getBaseActionURL(boolean) in org.jasig.portal.ChannelRuntimeData has been deprecated [javac] getXSLParameter().put("baseActionURL",runtimeData.getBaseActionURL(true)); [javac] ^ [javac] /home/esup/src/canaux/esup-utils-mag-2.5/source/org/esupportail/portal/utils/channels/SubChannelAjax.java:211: warning: [deprecation] getBaseActionURL(boolean) in org.jasig.portal.ChannelRuntimeData has been deprecated [javac] String redirect = runtimeData.getBaseActionURL(true) + "?"; [javac] ^ [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 4 warnings [copy] Copying 2 files to /home/esup/src/canaux/esup-utils-mag-2.5/build/WEB-INF/classes/properties/channels/org_esup/esup-utils-mag [copy] Copying 5 files to /home/esup/src/canaux/esup-utils-mag-2.5/build/WEB-INF/classes [copy] Copying 10 files to /home/esup/src/canaux/esup-utils-mag-2.5/build/media deploy: [copy] Copying 42 files to /usr/share/tomcat6/webapps/uPortal all: BUILD SUCCESSFUL Total time: 1 second
Retour au deployement de CStockage maintenant que MAG est disponible:
[esup@esup3dev ~/src/canaux/CStockage-4.7-RC-2] $ ant all Buildfile: build.xml clean: [delete] Deleting directory /home/esup/src/canaux/CStockage-4.7-RC-2/build undeploy: prepareBuild: [mkdir] Created dir: /home/esup/src/canaux/CStockage-4.7-RC-2/build [mkdir] Created dir: /home/esup/src/canaux/CStockage-4.7-RC-2/build/WEB-INF/classes compile: [javac] Compiling 123 source files to /home/esup/src/canaux/CStockage-4.7-RC-2/build/WEB-INF/classes [javac] /home/esup/src/canaux/CStockage-4.7-RC-2/source/org/esupportail/portal/channels/CStockage/CStockage.java:1036: warning: [deprecation] getBaseWorkerURL(java.lang.String,boolean) in org.jasig.portal.ChannelRuntimeData has been deprecated [javac] String downloadUrl = runtimeData.getBaseWorkerURL(UPFileSpec.FILE_DOWNLOAD_WORKER,true).replaceAll("%2F","/"); [javac] ^ [javac] /home/esup/src/canaux/CStockage-4.7-RC-2/source/org/esupportail/portal/channels/CStockage/provider/access/WebdavAccessImpl.java:336: warning: [deprecation] getReasonCode() in org.apache.commons.httpclient.HttpException has been deprecated [javac] int reasonCode = ex.getReasonCode(); [javac] ^ [javac] /home/esup/src/canaux/CStockage-4.7-RC-2/source/org/esupportail/portal/channels/CStockage/provider/access/WebdavAccessImpl.java:2580: warning: [deprecation] setReasonCode(int) in org.apache.commons.httpclient.HttpException has been deprecated [javac] ex.setReasonCode(status); [javac] ^ [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 3 warnings [copy] Copying 8 files to /home/esup/src/canaux/CStockage-4.7-RC-2/build/WEB-INF/classes/properties/channels/org_esup/CStockage [copy] Copying 47 files to /home/esup/src/canaux/CStockage-4.7-RC-2/build/WEB-INF/classes/org/esupportail/portal/channels/CStockage [copy] Copying 109 files to /home/esup/src/canaux/CStockage-4.7-RC-2/build/media/org/esupportail/portal/channels/CStockage deploy: [copy] Copying 288 files to /usr/share/tomcat6/webapps/uPortal all: BUILD SUCCESSFUL Total time: 2 seconds
fichier de publication du canal
[esup@esup3dev ~/src/esup-install] $ cat custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel/CStockage.channel <channel-definition script="classpath://org/jasig/portal/io/import-channel_v3-1.crn"> <title>Mes fichiers</title> <name>Mes fichiers</name> <fname>CStockage</fname> <desc>Canal de stockage - Acces fichiers</desc> <type>Custom</type> <class>org.esupportail.portal.channels.CStockage.CStockage</class> <timeout>5000</timeout> <hasedit>N</hasedit> <hashelp>N</hashelp> <hasabout>N</hasabout> <secure>N</secure> <locale>en_US</locale> <categories> <category>Applications</category> </categories> <groups> <group>Tout le monde</group> </groups> <users/> <portletPreferences/> </channel-definition>
publication
[esup@esup3dev ~/src/esup-install] $ ant db.import -Ddir=/home/esup/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel -Dpattern="CStockage.channel" ... [java] Base Import Directory=/home/esup/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel [java] FILE_PATTERN=CStockage.channel [java] Import Channel: CStockage.channel
video4 39mn30s
Par defaut le portail agrège un fichier de stats definis dns le config.propoerties
# STATS Options esup.stats.file=${esup.log.dir}/stats.log
video4 43mn
Par defaut le portail dispose de deux themes mobiles, iphone et android detectés sur le user-agent. pour les canaux portlet … c'est a eux de le gerer. Mais la navigation générale du portail est gérée .
UNR IDF ⇒ esup-mobile .
video 4 46mn30s
javascript jquery … exemple redimensionner dynamiquement une iframe et afficher aussi un bouton pour sortir l'Iframe du portail (nouvelle fenetre 52mn)
Penser a desagreger les CSS afin de rendre les codes source CSS de la page lisibles
Vidéo tutoriel eSup V3
http://mediatheque.parisdescartes.fr/rubrique.php3?id_rubrique=706&tri=titre
http://www.esup-portail.org/pages/viewpage.action?pageId=88244244
9mn tomcat5 → tomcat6 /lib (vs common - shared)
34mn context /cas et serialisation de sessions au demarrage/arret
39mn installation du portail
41,30 java_home build.properties
42 tomcat.update mettre les jar dont esup a besoin dans tomcat, lors du deployement il les met là où il faut . true une fois, puis a false , sauf si necessité d'une MAJ
47 real.host quand load balancing
/guest acces a un canal en mode non authentifié
48 context uportal et contexServingWebapps
54 sidebar de gauche uportalv3 desactivé
60 ant get-components (chercher le uportal du jasig)
61 ant unzip decompacte les zip des package exterieurs esup* ant init prend les update esup les copie dans uportal et customisation dans uportal * ant deploy compile les class (1 milliers !) et les deploient dans webapps/esup-portail * ant db_init cree les tables
handler file webapps/cas/WEB-INF/usersFile login::md5password