Socle Esup 3.2

Installation d'un socle esup-portail 3.2.4 sous centos 5

System

cette installation de socle se fait sur un serveur virtuel openvz - centos 5.6

[root@esup32dev ~]# cat /etc/redhat-release
CentOS release 5.6 (Final)

[root@esup32dev ~]# free
             total       used       free     shared    buffers     cached
Mem:       1807872      53432    1754440          0          0          0
-/+ buffers/cache:      53432    1754440
Swap:            0          0          0

[root@esup32dev ~]# df -H
Filesystem             Size   Used  Avail Use% Mounted on
/dev/simfs             5.9G   577M   5.3G  10% /

# arch 
i686

pre-requis mysql

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

Creation de la BD pour uportal

mysql> CREATE DATABASE `uportal32dev`;
mysql> GRANT ALL PRIVILEGES ON `uportal32dev` .* TO 'uportal'@'%.it-sudparis.eu' WITH GRANT OPTION ;
Query OK, 0 rows affected (0.10 sec)
mysql> GRANT ALL PRIVILEGES ON `uportal32dev` .* TO 'uportal'@'localhost' WITH GRANT OPTION ;
Query OK, 0 rows affected (0.14 sec)

Verification

[root@bd3 /]# mysql -u uportal -p -e "SHOW DATABASES"
Enter password:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| uportal32dev       |
+--------------------+

Pre-requis Java

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 . Apparement pas entierement compatible avec esup-uPortal

nous allons alors installer un repository suplementaire afin de disposer d'un environement java Sun, mais aussi pour disposer d'un tomcat v6.

[root@esup32dev yum.repos.d]# wget http://www.jpackage.org/jpackage50.repo

probleme de dependances

si probleme de dependance du genre:

Missing Dependency: /usr/bin/rebuild-security-providers is needed by package java-1.4.2-gcj-compat-1.4.2.0-40jpp.115.i386 (core-0)

cf http://www.centos.org/modules/newbb/viewtopic.php?topic_id=14911

http://www.redhat.com/archives/rhl-devel-list/2006-March/msg00723.html

Apparently Redhat released a version of jpackage-utils that includes the dependency, and the problem comes in when the Redhat version of jpackage-utils is replaced by the JPackage version of jpackage-utils.

I switched off the jpackage17-generic repository temporarily, and forced an erase of jpackage-utils, then told yum to install jpackage-utils.

CE que j'ai fais sur ecm3:

disable (enable=0) sur le repo jpackage-generic

[root@ecm3 yum.repos.d]# vim jpackage50.repo
[jpackage-generic]
name=JPackage (free), generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=0

retrait sauvage (–nodeps) de jpackage-utils

[root@ecm3 yum.repos.d]# rpm -e jpackage-utils --nodeps

installation (depuis centos repo !)

[root@ecm3 yum.repos.d]# yum install jpackage-utils

cela passe alors avec celui ci

$ rpm -q jpackage-utils
jpackage-utils-1.7.3-1jpp.2.el5

ou bien mieux

http://plone.lucidsolutions.co.nz/linux/centos/jpackage-jpackage-utils-compatibility-for-centos-5.x

[root@esup32dev /etc/tomcat6/rpmbuild/SPECS]
$ vim jpackage-utils-compat-el5.spec
[root@esup32dev /etc/tomcat6/rpmbuild/SPECS]
$  rpmbuild -ba jpackage-utils-compat-el5.spec

Wrote: /usr/src/redhat/RPMS/noarch/jpackage-utils-compat-el5-0.0.1-1.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.96362
+ umask 022
+ cd /usr/src/redhat/BUILD
+ rm -rf /var/tmp/jpackage-utils-compat-el5-0.0.1-1-Sv9541
+ exit 0
[root@esup32dev /etc/tomcat6/rpmbuild/SPECS]
$ rpm -Uvh /usr/src/redhat/RPMS/noarch/jpackage-utils-compat-el5-0.0.1-1.noarch.rpm
Preparing...                ########################################### [100%]
   1:jpackage-utils-compat-e########################################### [100%]

alors on dispose enfin d'un package jpackage-utils qui “provides / annonce” la presence du fameux fichier

%files
%defattr(-,root,root,-)
%{_bindir}/rebuild-security-providers

maintenant on a ces deux packages, le deuxiemme completant simplement le premier pour annoncer à la base rpm la presence sur disk de /usr/bin/rebuild-security-providers

[root@esup32dev /etc/tomcat6/rpmbuild/SPECS]
$ rpm -qa | grep jpackage
jpackage-utils-1.7.3-1jpp.2.el5
jpackage-utils-compat-el5-0.0.1-1

Tomcat

l'installation de tomcat6 entraine l'installation du JRE (ici java-1.6.0-sun.x86_64) sous forme de dependance :

$ yum install tomcat6
Transaction Summary
=============================================================================================================================
Install     48 Package(s)
Update       1 Package(s)
Remove       0 Package(s)

Total download size: 51 M
Installed:
  tomcat6.noarch 0:6.0.26-1.jpp5

Dependency Installed:
  at.x86_64 0:3.1.8-82.fc6                                avahi.x86_64 0:0.6.16-6.el5
  avahi-compat-libdns_sd.x86_64 0:0.6.16-6.el5            bc.x86_64 0:1.06-21
  bitstream-vera-fonts.noarch 0:1.10-7                    cairo.x86_64 0:1.2.4-5.el5
  cups.x86_64 1:1.3.7-11.el5_4.6                          dbus-glib.x86_64 0:0.73-8.el5
  dbus-python.x86_64 0:0.70-9.el5_4                       ecj.noarch 1:3.3.1.1-3.jpp5
  fontconfig.x86_64 0:2.4.1-7.el5                         freetype.x86_64 0:2.2.1-21.el5_3
  gettext.x86_64 0:0.14.6-4.el5                           jakarta-commons-collections-tomcat5.noarch 0:3.1-9.jpp5
  jakarta-commons-daemon.noarch 1:1.0.1-7.jpp5            jakarta-commons-dbcp-tomcat5.noarch 0:1.2.2-2.jpp5
  jakarta-commons-logging.noarch 0:1.1-8.jpp5             jakarta-commons-pool-tomcat5.noarch 0:1.3-11.jpp5
  java-1.6.0-sun.x86_64 0:1.6.0.6-1jpp                    jpackage-utils.noarch 0:5.0.0-2.jpp5
  libICE.x86_64 0:1.0.1-2.1                               libSM.x86_64 0:1.0.1-3.1
  libX11.x86_64 0:1.0.3-11.el5                            libXau.x86_64 0:1.0.1-3.1
  libXdmcp.x86_64 0:1.0.1-2.1                             libXext.x86_64 0:1.0.1-2.1
  libXft.x86_64 0:2.1.10-1.1                              libXi.x86_64 0:1.0.1-4.el5_4
  libXp.x86_64 0:1.0.0-8.1.el5                            libXrender.x86_64 0:0.9.1-3.1
  libXt.x86_64 0:1.0.2-3.1.fc6                            libXtst.x86_64 0:1.0.1-3.1
  libXxf86vm.x86_64 0:1.0.1-3.1                           libdaemon.x86_64 0:0.10-5.el5
  libdrm.x86_64 0:2.0.2-1.1                               libxml2-python.x86_64 0:2.6.26-2.1.2.8
  mesa-libGL.x86_64 0:6.5.1-7.7.el5                       pango.x86_64 0:1.14.9-8.el5.centos
  paps.x86_64 0:0.6.6-18.el5                              patch.x86_64 0:2.5.4-29.2.3.el5
  pax.x86_64 0:3.4-1.2.2                                  redhat-lsb.x86_64 0:3.1-12.3.EL.el5.centos
  tomcat6-el-1.0-api.noarch 0:6.0.26-1.jpp5               tomcat6-jsp-2.1-api.noarch 0:6.0.26-1.jpp5
  tomcat6-lib.noarch 0:6.0.26-1.jpp5                      tomcat6-servlet-2.5-api.noarch 0:6.0.26-1.jpp5
  xorg-x11-filesystem.noarch 0:7.1-2.fc6

Dependency Updated:
  cups-libs.x86_64 1:1.3.7-11.el5_4.6

Si on souhaite disposer de l'interface d'aministration de tomcat

$ yum install tomcat6-webapps tomcat6-admin-webapps
Installed:
  tomcat6-webapps.noarch 0:6.0.26-1.jpp5  tomcat6-admin-webapps.noarch 0:6.0.26-1.jpp5

Dependency Installed:
  jakarta-taglibs-standard.noarch 0:1.1.2-7.jpp5                 tomcat5-jsp-2.0-api.noarch 0:5.5.27-7.jpp5
  tomcat5-servlet-2.4-api.noarch 0:5.5.27-7.jpp5                 xalan-j2.noarch 0:2.7.0-10.jpp5
  xerces-j2.noarch 0:2.7.1-12.jpp5                               xml-commons.noarch 0:1.3.04-5.jpp5
  xml-commons-jaxp-1.3-apis.noarch 0:1.3.04-5.jpp5               xml-commons-resolver12.noarch 0:1.3.04-5.jpp5

repertoire lib 5->6

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@esup3dev /usr/share/tomcat6]
$ ls -l
total 4
drwxr-xr-x 2 root root 4096 Apr 24 17:01 bin
lrwxrwxrwx 1 root root   12 Apr 24 17:01 conf -> /etc/tomcat6
lrwxrwxrwx 1 root root   23 Apr 24 17:01 lib -> /usr/share/java/tomcat6
lrwxrwxrwx 1 root root   16 Apr 24 17:01 logs -> /var/log/tomcat6
lrwxrwxrwx 1 root root   23 Apr 24 17:01 temp -> /var/cache/tomcat6/temp
lrwxrwxrwx 1 root root   24 Apr 24 17:01 webapps -> /var/lib/tomcat6/webapps
lrwxrwxrwx 1 root root   23 Apr 24 17:01 work -> /var/cache/tomcat6/work

adaptation

[root@esup3dev /usr/share/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@esup3dev /usr/share/tomcat6]
$ ln -s /var/lib/tomcat6/common common ; ln -s /var/lib/tomcat6/shared shared
[root@esup3dev /usr/share/tomcat6]
$ ls -l common shared
lrwxrwxrwx 1 root root 23 Apr 24 17:50 common -> /var/lib/tomcat6/common
lrwxrwxrwx 1 root root 23 Apr 24 17:50 shared -> /var/lib/tomcat6/shared

modification de catalina.properties

$ 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

Java JDK

depuis les package *non-free* de jpackage, nous avons recompilé sur un repository maison un package binaire de java-sun

[root@esupdev2 /]# yum install java-1.6.0-sun-devel
============================================================================================================================================================
 Package                                   Arch                        Version                                  Repository                             Size
============================================================================================================================================================
Installing:
 java-1.6.0-sun-devel                      i586                        1.6.0.21-1jpp                            el5-i386-perso                         23 M
Installing for dependencies:
 freetype                                  i386                        2.2.1-28.el5_5.1                         Ce5-i386-updates                      312 k
 java-1.6.0-sun                            i586                        1.6.0.21-1jpp                            el5-i386-perso                         43 M
 jpackage-utils                            noarch                      1.7.3-1jpp.2.el5                         core-0                                 61 k
 libX11                                    i386                        1.0.3-11.el5                             core-0                                796 k
 libXau                                    i386                        1.0.1-3.1                                core-0                                 18 k
 libXdmcp                                  i386                        1.0.1-2.1                                core-0                                 19 k
 libXext                                   i386                        1.0.1-2.1                                core-0                                 35 k
 libXfont                                  i386                        1.2.2-1.0.3.el5_1                        core-0                                241 k
 libXi                                     i386                        1.0.1-4.el5_4                            core-0                                 25 k
 libXtst                                   i386                        1.0.1-3.1                                core-0                                 15 k
 libfontenc                                i386                        1.0.2-2.2.el5                            core-0                                 19 k
 xorg-x11-filesystem                       noarch                      7.1-2.fc6                                core-0                                5.4 k
 xorg-x11-font-utils                       i386                        1:7.1-2                                  core-0                                 75 k

Transaction Summary
============================================================================================================================================================
Install      14 Package(s)
Upgrade       0 Package(s)

Total download size: 68 M
Is this ok [y/N]: y

au final entre le jdk et le jre java-sun nous avons

[root@esupdev2 /]# ls -l /usr/lib/jvm/
total 4
lrwxrwxrwx 1 root root   26 Mar 23 18:16 java -> /etc/alternatives/java_sdk
lrwxrwxrwx 1 root root   32 Mar 23 18:16 java-1.6.0 -> /etc/alternatives/java_sdk_1.6.0
lrwxrwxrwx 1 root root   23 Mar 23 18:16 java-1.6.0-sun -> java-1.6.0-sun-1.6.0.21
drwxr-xr-x 6 root root 4096 Mar 23 18:16 java-1.6.0-sun-1.6.0.21
lrwxrwxrwx 1 root root   30 Mar 23 18:16 java-sun -> /etc/alternatives/java_sdk_sun
lrwxrwxrwx 1 root root   21 Mar 23 18:16 jre -> /etc/alternatives/jre
lrwxrwxrwx 1 root root   27 Mar 23 18:16 jre-1.6.0 -> /etc/alternatives/jre_1.6.0
lrwxrwxrwx 1 root root   27 Mar 23 18:16 jre-1.6.0-sun -> java-1.6.0-sun-1.6.0.21/jre
lrwxrwxrwx 1 root root   25 Mar 23 18:16 jre-sun -> /etc/alternatives/jre_sun

Soit, en suivant les liens, le java_home est :

root@esupdev2 /]# ls -l /usr/lib/jvm/java-1.6.0-sun-1.6.0.21/
total 16
drwxr-xr-x 2 root root 4096 Mar 23 18:16 bin
drwxr-xr-x 3 root root 4096 Mar 23 18:16 include
drwxr-xr-x 5 root root 4096 Mar 23 18:16 jre
drwxr-xr-x 3 root root 4096 Mar 23 18:16 lib
[root@esupdev2 /]# /usr/sbin/alternatives --config java

There is 1 program that provides 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.6.0-sun/bin/java

Enter to keep the current selection[+], or type selection number: 1

Ant

il y a un problem entre centos et jpackage sur une depandance pour ant

$ yum install ant
--> Processing Dependency: /usr/bin/rebuild-security-providers for package: java-1.4.2-gcj-compat
https://bugzilla.redhat.com/show_bug.cgi?id=260161
  --> Missing Dependency: /usr/bin/rebuild-security-providers is needed by package java-1.4.2-gcj-compat-1.4.2.0-40jpp.115.x86_64 (ce5-x86_64-Everything)

retrait de jpckage-utils (from jpackage 5.0)

Removing:
 jpackage-utils                          noarch               5.0.0-2.jpp5                   installed               172 k
[root@esup3dev ~]
$ rpm -e jpackage-utils --nodeps

reinstallation depuis le repo centos en version 1.7 incluant le fameux rebuild-security-providers

[root@esup3dev ~]
$ yum install jpackage-utils
Installing:
 jpackage-utils              noarch              1.7.3-1jpp.2.el5                 ce5-x86_64-Everything               61 k

[root@esup3dev ~]
$ rpm -qli jpackage-utils | grep rebuild-security
/usr/bin/rebuild-security-providers

ainsi le yum install ant fonctionne correctement maintenant avec toutefois un desable temporaire de jpackage-generic

$ yum --disablerepo=jpackage-generic install ant ant-apache-regexp ant-contrib
===========================================================================================================================
 Package                          Arch              Version                         Repository                        Size
===========================================================================================================================
Installing:
 ant                              x86_64            1.6.5-2jpp.2                    ce5-x86_64-Everything            2.3 M
 ant-apache-regexp                x86_64            1.6.5-2jpp.2                    ce5-x86_64-Everything             28 k
 ant-contrib                      noarch            1.0-0.10.b2.el5                 el5-x86_64-epel                  221 k
Installing for dependencies:
 alsa-lib                         x86_64            1.0.17-1.el5                    core-0                           414 k
 antlr                            x86_64            2.7.6-4jpp.2                    core-0                           1.1 M
 atk                              x86_64            1.12.2-1.fc6                    core-0                           224 k
 gjdoc                            x86_64            0.7.7-12.el5                    core-0                           886 k
 gtk2                             x86_64            2.10.4-20.el5                   core-0                           6.5 M
 hicolor-icon-theme               noarch            0.9-2.1                         core-0                            25 k
 java-1.4.2-gcj-compat            x86_64            1.4.2.0-40jpp.115               core-0                            29 k
 junit                            x86_64            3.8.2-3jpp.1                    core-0                           337 k
 libXcursor                       x86_64            1.1.7-1.1                       core-0                            32 k
 libXfixes                        x86_64            4.0.1-2.1                       core-0                            15 k
 libXinerama                      x86_64            1.0.1-2.1                       core-0                           9.8 k
 libXrandr                        x86_64            1.1.1-3.1                       core-0                            15 k
 libart_lgpl                      x86_64            2.3.17-4                        core-0                            75 k
 libgcj                           x86_64            4.1.2-46.el5_4.2                Ce5-x86_64-updates                18 M
 regexp                           x86_64            1.4-2jpp.2                      core-0                           102 k
 zip                              x86_64            2.31-2.el5                      core-0                           136 k

Transaction Summary
===========================================================================================================================
Install     19 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 30 M
Is this ok [y/N]: y

Ant nodeps

si au premier lancement de ant sur le package esup il plante sur :

[esup@esup32dev ~/esup-install]
$ ant usage
Buildfile: build.xml

BUILD FAILED
/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/build.xml:14: Could not create task or type of type: replaceregexp.
...

il manque alors le package ant-nodeps

[root@esup32dev /etc/tomcat6]
$ yum --disablerepo=jpackage-generic install ant-nodeps

=================================================================================================================================
 Package                         Arch                      Version                             Repository                   Size
=================================================================================================================================
Installing:
 ant-nodeps                      i386                      1.6.5-2jpp.2                        core-0                      794 k

Transaction Summary
=================================================================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 794 k
Is this ok [y/N]: y

ant update

apres mis en place de du package maison jpackage-utils-compat-el5-0.0.1-1.noarch.rpm on peux lancer proprement un update de ant pour passer d'une 1.6 (centos) a 1.7 (jpackage)

[root@esup32dev /etc/tomcat6/rpmbuild/SPECS]
$ yum update ant


=================================================================================================================================
 Package                                 Arch                 Version                       Repository                      Size
=================================================================================================================================
Installing:
 xml-commons-jaxp-1.3-apis               noarch               1.3.04-5.jpp5                 jpackage-generic               224 k
     replacing  xml-commons-apis.i386 1.3.02-0.b2.7jpp.10

Updating:
 ant                                     noarch               1.7.1-7.jpp5                  jpackage-generic               1.3 M
Updating for dependencies:
 ant-apache-regexp                       noarch               1.7.1-7.jpp5                  jpackage-generic                19 k
 ant-nodeps                              noarch               1.7.1-7.jpp5                  jpackage-generic               400 k
 jpackage-utils                          noarch               5.0.0-2.jpp5                  jpackage-generic                72 k
 xml-commons                             noarch               1.3.04-5.jpp5                 jpackage-generic               9.0 k

Transaction Summary
=================================================================================================================================
Install       1 Package(s)
Upgrade       5 Package(s)

Total download size: 2.0 M
Is this ok [y/N]: y

user esup

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

Package Esup

archive

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@esup32dev ~]
$ 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@esup32dev ~]
$ ln -s esup-uPortal-3.2.4-esup-1.0.0-RC3 esup-install
[esup@esup32dev ~]
$ ll
total 2136
lrwxrwxrwx 1 esup esup      33 May 20 17:39 esup-install -> esup-uPortal-3.2.4-esup-1.0.0-RC3
drwxr-xr-x 6 esup esup    4096 Feb 14 09:09 esup-uPortal-3.2.4-esup-1.0.0-RC3
-rw-rw-r-- 1 esup esup 2178865 May 20 17:24 esup-uPortal-3.2.4-esup-1.0.0-RC3.tar.gz

Taches ant

Voici les taches ant disponiblent dans le build.xml:

[esup@esup32dev ~/esup-install]
$ ant usage
Buildfile: build.xml
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

_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@esup32dev ~/esup-install]
$ ant -p
Buildfile: build.xml
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

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

Annecdote memoire openvz

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

Ant getcomponents

recuperation online de uPortal 3.2.4

[esup@esup32dev ~/esup-install]
$ ant getcomponents
Buildfile: build.xml
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

_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
Trying to override old definition of task for
Trying to override old definition of task for

_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
Trying to override old definition of task for
Trying to override old definition of task for

_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@esup32dev ~/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

ant unzip

desarchivage de uPortal

[esup@esup32dev ~/esup-install]
$ ant unzip
Buildfile: build.xml
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

unzip:
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for
Trying to override old definition of task for

_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

build.properties

adaptation du build.properties a partir du sample

[esup@esup32dev ~/esup-install]
$ diff build.sample.properties build.properties
2c2
< java_home=/usr/java/jdk1.6.0_16
---
> java_home=/usr/lib/jvm/java-1.6.0-sun
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,18
< server.home=${esup.base}/apache-tomcat-${tomcat.ver}
---
> ##### Replace server.home with the location of Tomcat 6 on your machine #####
> # path to tomcat binaries
> #server.home=${esup.base}/apache-tomcat-${tomcat.ver}
> server.home=/usr/share/tomcat6
30c33
< mvn_home=${esup.base}/${mvn.package.final}
---
> mvn_home=/usr/local/maven2/
34c37,38
< mvn_repo=${esup.base}/maven-repo
---
> #mvn_repo=${esup.base}/maven-repo
> mvn_repo=/usr/local/maven2

config.properties

[esup@esup32dev ~/esup-install]
$ diff config.sample.properties config.properties
14c14
< esup.public.host=localhost
---
> esup.public.host=esup32dev.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=cas.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=uportal
> 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/uportal32dev
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
110c110
< esup.host.logicalName=esup1
---
> esup.host.logicalName=esup32dev

ant init

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

:!: historique 3.1.2 … il se peut que la tache init est un probleme avec la boucle for

BUILD FAILED
/home/esup/src/esup-3.1.2-esup-0.5-RC3/resources/ant-files/uportal-init.xml:4: The following error occurred while executing this line:
/home/esup/src/esup-3.1.2-esup-0.5-RC3/resources/ant-files/uportal-init.xml:294: Could not create task or type of type: for.

j'avais sur la machine une version de ant-contrib (cf http://standartux.fr/index.php?post/2010/03/08/ant-Could-not-create-task-or-type-of-type%3A-for) qui posait probleme, un update avec la version ant-contrib de jpackage ressoud le problem.

ant-contrib-1.0-0.10.b2.el5 vs ant-contrib-1.0-1.b3.1.jpp5

$ yum install ant-contrib
===========================================================================================================================
 Package                              Arch             Version                    Repository                          Size
===========================================================================================================================
Updating:
 ant-contrib                          noarch           1.0-1.b3.1.jpp5            jpackage-generic                   209 k
Installing for dependencies:
 bcel                                 noarch           5.1-16.jpp5                jpackage-generic                   459 k
 ivy                                  noarch           1.3.1-3.jpp5               jpackage-generic                   336 k
 jakarta-commons-cli                  noarch           1.1-1.jpp5                 jpackage-generic                    36 k
 jakarta-commons-codec                noarch           1.3-9.jpp5                 jpackage-generic                   179 k
 jakarta-commons-httpclient           noarch           1:3.0.1-3.jpp5             jpackage-generic                   200 k
 jakarta-oro                          noarch           2.0.8-4.jpp5               jpackage-generic-updates            72 k

Transaction Summary
===========================================================================================================================
Install      6 Package(s)
Update       1 Package(s)
Remove       0 Package(s)

Total download size: 1.5 M
Is this ok [y/N]: y

Apres ceci, la tache s'execute bien fin historique 3.1.2 … :!:

[esup@esup32dev ~/esup-install]
$ ant init
Buildfile: build.xml
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

_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
Trying to override old definition of task for
Trying to override old definition of task for

_script.init:

init:
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for
Trying to override old definition of task for

_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

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

$ ant deploy
...
[artifact:dependencies] Downloading: org/easymock/easymock/2.4/easymock-2.4.jar from central
[artifact:dependencies] Downloading: org/springframework/spring-test/2.5.6/spring-test-2.5.6.jar from central
     [echo] Artifact '/home/esup/src/esup-3.1.2-esup-0.5-RC3/Portail/uPortal_rel-3.1.2/uportal-impl/target/uportal-impl-3.1.2.jar' is not available or out-of-date, calling 'mvn install'

mvn:

BUILD FAILED

/home/esup/src/esup-3.1.2-esup-0.5-RC3/Portail/uPortal_rel-3.1.2/build.xml:1052: Execute failed: java.io.IOException: Cannot run program "/home/esup/src/esup-3.1.2-esup-0.5-RC3/Portail/apache-maven-2.2.1/bin/mvn" (in directory "/home/esup/src/esup-3.1.2-esup-0.5-RC3/Portail/uPortal_rel-3.1.2/uportal-impl"): java.io.IOException: error=2, No such file or directory

Total time: 6 minutes 0 seconds

Maven2

=================================================================================================================================
 Package                                    Arch          Version                          Repository                       Size
=================================================================================================================================
Installing:
 maven2                                     noarch        2.0.7-9.jpp5                     jpackage-generic                711 k
Installing for dependencies:
 asm                                        noarch        1.5.3-7.jpp5                     jpackage-generic                217 k
 aspectj                                    noarch        1.5.3-2jpp                       jpackage-generic                8.1 M
 axis                                       noarch        1.4-4.jpp5                       jpackage-generic                9.9 M
 bcel                                       noarch        5.1-16.jpp5                      jpackage-generic                459 k
 bea-stax                                   i386          1.2.0-0.4.rc1.el5                el5-i386-epel                   380 k
 bea-stax-api                               i386          1.2.0-0.4.rc1.el5                el5-i386-epel                    55 k
 bsf                                        noarch        2.3.0-13.jpp5                    jpackage-generic                1.2 M
 bsh                                        noarch        1.3.0-13.jpp5                    jpackage-generic                448 k
 cglib                                      noarch        2.1.3-4.jpp5                     jpackage-generic                540 k
 classworlds                                noarch        1.1-2.jpp5                       jpackage-generic                 39 k
 cssparser                                  noarch        0.9.5-1.jpp5                     jpackage-generic                246 k
 dom4j                                      noarch        1.6.1-10.jpp5                    jpackage-generic                300 k
 easymock2                                  noarch        2.3-1.jpp5                       jpackage-generic                 78 k
 excalibur                                  noarch        1:1.0-0.r508111.13.jpp5          jpackage-generic                 26 k
 excalibur-avalon-framework                 noarch        1:4.3.1-0.r508111.13.jpp5        jpackage-generic                 79 k
 excalibur-avalon-logkit                    noarch        1:2.2.1-0.r508111.13.jpp5        jpackage-generic                 79 k
 ganymed-ssh2                               noarch        210-5.jpp5                       jpackage-generic                241 k
 geronimo-j2ee-1.4-apis                     noarch        1.2-13.jpp5                      jpackage-generic                948 k
 geronimo-specs-poms                        noarch        1.2-13.jpp5                      jpackage-generic                 21 k
 geronimo-stax-1.0-api                      noarch        1.2-13.jpp5                      jpackage-generic                 31 k
 glassfish-jaxb                             noarch        2.1.4-7.jpp5                     jpackage-generic                3.5 M
 hamcrest                                   noarch        1.1-8.jpp5                       jpackage-generic                361 k
 icu4j                                      noarch        3.8.1-5.jpp5                     jpackage-generic                4.0 M
 isorelax                                   noarch        0.1-0.20041111.6.jpp5            jpackage-generic                 71 k
 itext                                      noarch        1.4-3.jpp5                       jpackage-generic                1.2 M
 jakarta-commons-beanutils                  noarch        1.7.0-10.jpp5                    jpackage-generic                342 k
 jakarta-commons-cli                        noarch        1.1-1.jpp5                       jpackage-generic                 36 k
 jakarta-commons-cli10                      noarch        1.0-9.jpp5                       jpackage-generic                 33 k
 jakarta-commons-codec                      noarch        1.3-9.jpp5                       jpackage-generic                179 k
 jakarta-commons-collections                i386          3.2-2jpp.3                       core-0                          1.0 M
 jakarta-commons-digester                   noarch        1.8-1jpp                         jpackage-generic                152 k
 jakarta-commons-discovery                  noarch        1:0.4-6.jpp5                     jpackage-generic                 70 k
 jakarta-commons-httpclient                 noarch        1:3.0.1-3.jpp5                   jpackage-generic                200 k
 jakarta-commons-lang                       noarch        2.1-7.jpp5                       jpackage-generic                941 k
 jakarta-commons-net                        noarch        1.4.1-4.jpp5                     jpackage-generic                166 k
 jakarta-commons-transaction                noarch        1.1-9.jpp5                       jpackage-generic                 81 k
 jakarta-oro                                noarch        2.0.8-4.jpp5                     jpackage-generic-updates         72 k
 jakarta-slide-webdavclient                 noarch        2.1-8.jpp5                       jpackage-generic                215 k
 jaxen                                      noarch        1.1-3.jpp5                       jpackage-generic                671 k
 jdom                                       noarch        1.0-5.jpp5                       jpackage-generic                166 k
 jline                                      noarch        0.9.94-1.jpp5                    jpackage-generic                 89 k
 jmock                                      noarch        1.2.0-2.jpp5                     jpackage-generic                280 k
 jsch                                       noarch        0.1.40-1.jpp5                    jpackage-generic                192 k
 jtidy                                      noarch        1:8.0-0.813.1.jpp5               jpackage-generic                234 k
 junit4                                     noarch        4.5-4.jpp5                       jpackage-generic                193 k
 jzlib                                      noarch        1.0.7-4.jpp5                     jpackage-generic                 37 k
 log4j                                      noarch        1.2.14-15.jpp5                   jpackage-generic                352 k
 maven-doxia                                noarch        1.0-0.a10.4.jpp5                 jpackage-generic                486 k
 maven-shared                               noarch        8-0.p8.5.jpp5                    jpackage-generic                6.3 k
 maven-shared-monitor                       noarch        1.0-0.p8.5.jpp5                  jpackage-generic                9.3 k
 maven-surefire                             noarch        2.3.1-3.jpp5                     jpackage-generic                 52 k
 maven-surefire-booter                      noarch        2.3.1-3.jpp5                     jpackage-generic                 28 k
 maven-wagon                                noarch        1.0-0.b2.3jpp                    jpackage-generic                144 k
 maven2-common-poms                         noarch        1.0-6.jpp5                       jpackage-generic                 47 k
 msv                                        noarch        1.2-0.20050722.6.jpp5            jpackage-generic                585 k
 msv-xsdlib                                 noarch        1.2-0.20050722.6.jpp5            jpackage-generic                135 k
 mx4j                                       i386          1:3.0.1-6jpp.4                   core-0                          2.5 M
 ognl                                       noarch        2.6.9-3.jpp5                     jpackage-generic                176 k
 plexus-ant-factory                         noarch        1.0-0.a1.4.jpp5                  jpackage-generic                 12 k
 plexus-archiver                            noarch        1.0-0.a8.1jpp                    jpackage-generic                139 k
 plexus-bsh-factory                         noarch        1.0-0.a7s.4.jpp5                 jpackage-generic                 11 k
 plexus-classworlds                         noarch        1.2-0.a9.2.jpp5                  jpackage-generic                 41 k
 plexus-cli                                 noarch        1.2-2.jpp5                       jpackage-generic                 11 k
 plexus-compiler                            noarch        1.5.3-3.jpp5                     jpackage-generic                 64 k
 plexus-container-default                   noarch        1.0-0.a9s1.1jpp                  jpackage-generic                162 k
 plexus-containers                          noarch        1.0-0.a32.3.jpp5                 jpackage-generic                5.8 k
 plexus-containers-component-api            noarch        1.0-0.a32.3.jpp5                 jpackage-generic                 29 k
 plexus-containers-container-default        noarch        1.0-0.a32.3.jpp5                 jpackage-generic                200 k
 plexus-i18n                                noarch        1.0-0.b6.5.jpp5                  jpackage-generic                 13 k
 plexus-interactivity                       noarch        1.0-0.a5.6.jpp5                  jpackage-generic                 15 k
 plexus-io                                  noarch        1.0-0.a1.1jpp                    jpackage-generic                 13 k
 plexus-utils                               noarch        1.4.8-2.jpp5                     jpackage-generic                194 k
 plexus-velocity                            noarch        1.1.7-1jpp                       jpackage-generic                 11 k
 qdox                                       noarch        1.6.1-5.jpp5                     jpackage-generic                 89 k
 relaxngDatatype                            noarch        1.0-3.jpp5                       jpackage-generic                8.7 k
 sac                                        noarch        1.3-4.jpp5                       jpackage-generic                 15 k
 saxon                                      noarch        6.5.5-1.jpp5                     jpackage-generic                415 k
 saxpath                                    noarch        1.0-3.jpp5                       jpackage-generic                 34 k
 servletapi4                                noarch        4.0.4-6.jpp5                     jpackage-generic                 76 k
 velocity                                   noarch        1.5-4.jpp5                       jpackage-generic                363 k
 werken-xpath                               noarch        0.9.4-0.beta.13.jpp5             jpackage-generic                 74 k
 ws-jaxme                                   noarch        0.5.1-10.jpp5                    jpackage-generic                1.2 M
 wsdl4j                                     noarch        1.6.2-6.jpp5                     jpackage-generic                177 k
 xml-commons-jaxp-1.2-apis                  noarch        1.3.04-5.jpp5                    jpackage-generic                112 k
 xml-im-exporter                            noarch        1.1-4.jpp5                       jpackage-generic                 42 k
 xom                                        noarch        1.2.1-1.jpp5                     jpackage-generic                267 k
 xpp2                                       noarch        2.1.10-6.jpp5                    jpackage-generic                239 k
 xpp3                                       noarch        1.1.3.8-1.jpp5                   jpackage-generic                289 k

Transaction Summary
=================================================================================================================================
Install      89 Package(s)
Upgrade       0 Package(s)

Total download size: 47 M

historique 3.1 (2010)… si cela plante sur

[ERROR] BUILD ERROR
     [exec] [INFO] ------------------------------------------------------------------------
     [exec] [INFO] Internal error in the plugin manager executing goal 'org.apache.maven.plugins:maven-war-plugin:2.1-alpha-2:war': Unable to find the mojo 'org.apache.maven.plugins:maven-war-plugin:2.1-alpha-2:war' in the plugin 'org.apache.maven.plugins:maven-war-plugin'

il faut installer le plugin war de maven

En 3.2 2011

=================================================================================================================================
 Package                            Arch                Version                              Repository                     Size
=================================================================================================================================
Installing:
 maven2-plugin-war                  noarch              2.0.7-9.jpp5                         jpackage-generic               53 k
Installing for dependencies:
 giflib                             i386                4.1.3-7.3.3.el5                      Ce5-i386-updates               39 k
 java-1.6.0-openjdk                 i386                1:1.6.0.0-1.21.b17.el5               Ce5-i386-updates               37 M
 jettison                           noarch              1.2-1.el5                            el5-i386-epel                  59 k
 joda-time                          noarch              1.5.2-7.tzdata2008d.el5              el5-i386-epel                 450 k
 maven-shared-archiver              noarch              2.3-0.p8.5.jpp5                      jpackage-generic               14 k
 tzdata-java                        i386                2011g-1.el5                          Ce5-i386-updates              180 k
 wstx                               noarch              3.1.1-3.jpp5                         jpackage-generic              928 k
 xstream                            noarch              1.3.1-1.jpp5                         jpackage-generic              391 k

Transaction Summary
=================================================================================================================================
Install       9 Package(s)
Upgrade       0 Package(s)

Total download size: 39 M

Maven 2.0.9

au momment du premier ant deploy on constate que me maven2 de la centos/jpp ne suffit pas:

[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 remove maven2 rpm et on met un tar.gz en 2.0.9

===========================================================================================================================
 Package                              Arch                  Version                         Repository                Size
===========================================================================================================================
Removing:
 maven2                               noarch                2.0.7-9.jpp5                    installed                1.0 M
Removing for dependencies:
 maven-shared                         noarch                8-0.p8.5.jpp5                   installed                 16 k
 maven-shared-archiver                noarch                2.3-0.p8.5.jpp5                 installed                 12 k
 maven-shared-monitor                 noarch                1.0-0.p8.5.jpp5                 installed                7.7 k
 maven2-plugin-war                    noarch                2.0.7-9.jpp5                    installed                 53 k

Transaction Summary
===========================================================================================================================
Remove        5 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y

donc exeptionnelement dans la philosophie de cet installation (rpm based !) on va utiliser un tar.gz pour disposer de maven >= 2.0.9 !

$ wget ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz
[root@esup32dev /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@esup32dev /usr/local]
$ ln -s apache-maven-2.2.1 maven2

alors le ant deploy aboutit

[esup@esup32dev ~/esup-install]
$ ant deploy


[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: 2 minutes 11 seconds
[artifact:mvn] [INFO] Finished at: Sat May 21 09:02:06 CEST 2011
[artifact:mvn] [INFO] Final Memory: 58M/140M
[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: 4 minutes 10 seconds

on trouve alors deployer

[esup@esup32dev ~/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 May 21 09:02 media
drwxrwxr-x  3 esup esup   4096 May 21 10:40 META-INF
drwxrwxr-x  2 esup esup   4096 May 21 10:40 monitor
drwxrwxr-x  2 esup esup   4096 May 21 10:40 private
drwxrwxr-x 10 esup esup   4096 May 21 10:40 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-ear librarie

deploy des librairies necessaire au portail

[esup@esup32dev ~/esup-install]
$ ant deploy-ear

[artifact:mvn] [INFO] [ear:ear {execution: default-ear}]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal:uportal-war:3.2.4] to[uPortal.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:BookmarksPortlet:3.2.4] to[BookmarksPortlet.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:cas-proxy-test-portlet:3.2.4] to[cas-proxy-test-portlet.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:FunctionalTestsPortlet:3.2.4] to[FunctionalTestsPortlet.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:jasig-widget-portlets:3.2.4] to[jasig-widget-portlets.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:pluto-testsuite:3.2.4] to[pluto-testsuite.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.resourceserver:resource-server-webapp:1.0.12] to[ResourceServingWebapp.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:RssPortlet:3.2.4] to[RssPortlet.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:WeatherPortlet:3.2.4] to[WeatherPortlet.war]
[artifact:mvn] [INFO] Copying artifact[war:org.jasig.portal.portlets-overlay:WebProxyPortlet:3.2.4] to[WebProxyPortlet.war]
[artifact:mvn] [INFO] Copying artifact[jar:javax.portlet:portlet-api:1.0] to[portlet-api-1.0.jar]
[artifact:mvn] [INFO] Copying artifact[jar:org.apache.pluto:pluto-container:1.1.7] to[pluto-container-1.1.7.jar]
[artifact:mvn] [INFO] Copying artifact[jar:org.apache.pluto:pluto-descriptor-api:1.1.7] to[pluto-descriptor-api-1.1.7.jar]
[artifact:mvn] [INFO] Copying artifact[jar:org.apache.pluto:pluto-descriptor-impl:1.1.7] to[pluto-descriptor-impl-1.1.7.jar]
[artifact:mvn] [INFO] Copying artifact[jar:org.codehaus.castor:castor:1.1.1] to[castor-1.1.1.jar]
[artifact:mvn] [INFO] Copying artifact[jar:commons-logging:commons-logging-api:1.1] to[commons-logging-api-1.1.jar]
[artifact:mvn] [INFO] Copying artifact[jar:org.apache.pluto:pluto-taglib:1.1.7] to[pluto-taglib-1.1.7.jar]
[artifact:mvn] [INFO] Copying artifact[jar:org.jasig.service:person-directory-api:1.5.0-RC6] to[person-directory-api-1.5.0-RC6.jar]

BUILD SUCCESSFUL
Total time: 37 seconds

Possible probleme de permission d'ecriture dans /usr/share/tomcat6/shared

/home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/Portail/uPortal_rel-3.2.4/build.xml:392: java.io.FileNotFoundException: /usr/share/tomcat6/shared/lib/pluto-taglib-1.1.7.jar (Permission denied)

alors on met esup dans le groupe tomcat et

$ chmod 775 /usr/share/tomcat6/shared
$ chmod 775 /usr/share/tomcat6/shared/lib/

maintenantt apres le ant deploy on retrouve plusieurs librairies à ce niveau

[root@esup32dev /etc/tomcat6]
$ ls -l /usr/share/tomcat6/shared/lib/
total 2028
-rw-rw-r-- 1 esup esup 1736099 May 22 12:01 castor-1.1.1.jar
-rw-rw-r-- 1 esup esup   44598 May 22 12:01 commons-logging-api-1.1.jar
-rw-rw-r-- 1 esup esup    3463 May 22 12:01 person-directory-api-1.5.0-RC6.jar
-rw-rw-r-- 1 esup esup  142812 May 22 12:01 pluto-container-1.1.7.jar
-rw-rw-r-- 1 esup esup   39406 May 22 12:01 pluto-descriptor-api-1.1.7.jar
-rw-rw-r-- 1 esup esup   46472 May 22 12:01 pluto-descriptor-impl-1.1.7.jar
-rw-rw-r-- 1 esup esup   25969 May 22 12:01 pluto-taglib-1.1.7.jar
-rw-rw-r-- 1 esup esup   17090 May 22 12:01 portlet-api-1.0.jar

DB init

initialisation ed 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 uportal32dev;
Database changed
mysql> show tables;
Empty set (0.00 sec)

DB test

[esup@esup32dev ~/esup-install]
$ ant db.test
    [echo] Invoking DbTest
    [java]     Connected To: jdbc:mysql://bd.it-sudparis.eu/uportal32dev
     [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/uportal32dev'
     [java] User:             'uportal@157.159.10.94'

BUILD SUCCESSFUL
Total time: 10 seconds

DB init

[esup@esup32dev ~/esup-install]
$ ant db.init

    [java]  INFO drop table if exists UP_VERSIONS
     [java]  INFO drop table if exists UP_USER
....
   [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 Structure:  structure/DLM_mobile_columns-2.structure
     [java] Import Theme:  theme/DLM_Universality_Mobile_2.theme
     [java] Import Theme:  theme/DLM_mUniversality_android.theme
     [java] Import Template User:  user/defaultTemplateUser.template-user
     [java] Import User:  user/admin-lo.user
     [java] Import User:  user/admin.user
     [java] Import User:  user/all-lo.user
     [java] Import User:  user/fragmentTemplate.user
     [java] Import User:  user/guest-lo.user
     [java] Import User:  user/guest.user
     [java] Import User:  user/headerfooter-lo.user
     [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 Channel Type:  channel-type/Bookmarks_Portlet.channel-type
     [java] Import Channel Type:  channel-type/Custom.channel-type
     [java] Import Channel Type:  channel-type/Image.channel-type
     [java] Import Channel Type:  channel-type/Inline_Frame.channel-type
...
     [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-esup/https-test.channel
     [java] Import Channel:  channel-esup/param-test.channel
     [java] Import Channel:  channel-esup/ws-test.channel
     [java] Import Channel:  channel/AttributeSwapper.channel
     [java] Import Channel:  channel/IdentitySwapper.channel
     ...
    [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 135457 milliseconds.

BUILD SUCCESSFUL
Total time: 3 minutes 28 seconds

Au final, on a une base de donnée remplie de plusieurs tables:


mysql> show tables;
+------------------------------+
| Tables_in_uportal32dev       |
+------------------------------+
| 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.10 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.03 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               |
| 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               |
+----------+----------------+------------------+-----------------+
66 rows in set (0.04 sec)

Lien apache

proxy AJP

On met apache en frontal avec le proxy-ajp

https://listes.esup-portail.org/sympa/arc/esup-utilisateurs/2010-04/msg00003.html

[root@esup32dev /]
$ tail -8 /etc/httpd/conf.d/proxy_ajp.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

contexts tomcat

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="uportal" password="secret"
                          driverClassName="com.mysql.jdbc.Driver"
                          url="jdbc:mysql://bd.it-sudparis.eu/uportal32dev?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://esup32dev.it-sudparis.eu/uPortal/render.userLayoutRootNode.uP

SSL

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 !!

package ssl apache

sur le serveur uPortal on met en place un frontend apache pour recptionner les requetes https (443) du serveur CAS

[root@esup3dev ~]
$ yum install mod_ssl

certificat TCS

signature d'un request de certificat par TCS, puis paramtrage apache mod_ssl

SSLCertificateFile /etc/pki/tls/certs/cert-1073-esup3dev.it-sudparis.eu.pem
SSLCertificateKeyFile /etc/pki/tls/private/esup3dev-1073.key
SSLCertificateChainFile /etc/pki/tls/certs/chain-1073-esup3dev.it-sudparis.eu.pem

Ordre de la CA-chain

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 .

test de validation ssl

[root@arvouin certs]# wget http://www.cru.fr/_media/services/tcs/add_trust_external_ca_root.pem

[root@arvouin ~]#  openssl s_client -connect esup3dev.it-sudparis.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/L=Evry/O=T\xC3\xA9l\xC3\xA9com & Management SudParis/OU=DISI/CN=esup3dev.it-sudparis.eu
verify return:1
---
Certificate chain
 0 s:/C=FR/L=Evry/O=T\xC3\xA9l\xC3\xA9com & Management SudParis/OU=DISI/CN=esup3dev.it-sudparis.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

Tomcat serveur en https

:!: Methode ancienne , normalement pas necessaire :!: pour que le serveur tomcat soit reconnu par CAS en https, donc le serveur tomcat doit etre signé en tant que client CAS.

Racines de certification

ici nous cumulons plusieurs PKI, une ancienne PKI Institut Telecom v1 (pkiit1), une pkiit2 et maintenant la chaine de certification Addtrust (TCS / Renater). Ayant des serveurs (cas et autres) sur les 3 pki on prend de la marge en itegrant dans le keystore pour tomcat toute ces pki .

[root@esup3dev /etc/pki/tls/certs]
$ ( cat itrootca.crt.1 ; cat itca.crt.1 ; cat tmspca.crt.1 ) > ca-chain-itrootca1-itca1-tmspca1.crt
$ ( cat itrootca2.crt ; cat itca2.crt ; cat tmspca2.crt ) > ca-chain-itrootca2-itca2-tmspca2.crt
$ ( cat cachain-tcs-addtrust.pem ; cat ca-chain-itrootca2-itca2-tmspca2.crt ; cat ca-chain-itrootca1-itca1-tmspca1.crt ) > ca-chain-tcs-addtrust-pkiit2-pkiit1-bundle.crt

generation du keystore

[root@esup3dev /etc/pki/tls/certs]
$ openssl pkcs12 -export -in cert-1073-esup3dev.it-sudparis.eu.pem -inkey ../private/esup3dev-1073.key -out esup3dev_ca-chain-tcs-addtrust-pkiit2-pkiit1-bundle.p12 -name tomcat -CAfile ca-chain-tcs-addtrust-pkiit2-pkiit1-bundle.crt -caname root -chain
Enter Export Password:
Verifying - Enter Export Password:

verification

[root@esup3dev /etc/pki/tls/certs]
$ keytool -keystore esup3dev_ca-chain-tcs-addtrust-pkiit2-pkiit1-bundle.p12 -list -storetype pkcs12 -v 
Keystore type: PKCS12
Keystore provider: SunJSSE

Your keystore contains 1 entry

Alias name: tomcat
Creation date: Jun 9, 2010
Entry type: PrivateKeyEntry
Certificate chain length: 4

Certificate[1]:
Owner: CN=esup3dev.it-sudparis.eu, OU=DISI, O=Télécom & Management SudParis, L=Evry, C=FR
Issuer: CN=TERENA SSL CA, O=TERENA, C=NL

...

Certificate[4]:
Owner: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE
Issuer: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE
Serial number: 1

driver Mysql

il faut rendre accessible a tomcat le driver mysql autrement au demarrage du serveur on a ce type d'erreur:

ERROR [main] May/22 12:04:10,211 context.ContextLoader.[] - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PortalDB.metadata' defined in file [/var/lib/tomcat6/webapps/uPortal/WEB-INF/classes/properties/contexts/datasourceContext.xml]: Invocation of init method failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Error during database initialization. ; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'

copie du jar mysql

[root@esup32dev /etc/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@esup32dev /etc/tomcat6]
$ ls -l /var/lib/tomcat6/shared/lib/
total 2720
-rw-rw-r-- 1 esup esup 1736099 May 22 12:01 castor-1.1.1.jar
-rw-rw-r-- 1 esup esup   44598 May 22 12:01 commons-logging-api-1.1.jar
-rw-r--r-- 1 root root  703265 May 22 12:05 mysql-connector-java-5.1.6.jar
-rw-rw-r-- 1 esup esup    3463 May 22 12:01 person-directory-api-1.5.0-RC6.jar
-rw-rw-r-- 1 esup esup  142812 May 22 12:01 pluto-container-1.1.7.jar
-rw-rw-r-- 1 esup esup   39406 May 22 12:01 pluto-descriptor-api-1.1.7.jar
-rw-rw-r-- 1 esup esup   46472 May 22 12:01 pluto-descriptor-impl-1.1.7.jar
-rw-rw-r-- 1 esup esup   25969 May 22 12:01 pluto-taglib-1.1.7.jar
-rw-rw-r-- 1 esup esup   17090 May 22 12:01 portlet-api-1.0.jar

finalement dans /usr/share/tomcat6/lib/ semble mieux que /usr/share/tomcat6/shared/lib/

[root@esup32dev /]
$ ls -l /usr/share/tomcat6/lib/mysql-connector-java-5.1.6.jar
-rw-r--r-- 1 root root 703265 May 22 12:10 /usr/share/tomcat6/lib/mysql-connector-java-5.1.6.jar

custom admin

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@esup32dev ~]
$ mkdir -p esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/admin

generation d'une chaine md5 sur http://www.md5.net/ par exempl, adaptation du fichier de définition du compte admin

[esup@esup32dev ~/esup-install]
$ 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@esup32dev ~/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 13579 milliseconds.

BUILD SUCCESSFUL
Total time: 31 seconds

URL a proteger

EsupMonitor

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>

Ldap users

groups sur attributs utilisateur

Rechercher les attributs utilisateur dans ldap, les attributs qu'on souhaite mapper pour chaque utilisateur dans ldap. video2 3.2 14mn

[esup@esup32dev ~/esup-install]
$ echo "esup.ldap.persondirs.use=true" >> ~/esup-install/custom.properties
[esup@esup32dev ~/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@esup32dev ~/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
employee
eduPersonPrimaryAffiliation	employee
...

on a bien récupéré des attributs ldap qualifiant cet utilisateur tels que definit dans personDirectoryContext.xml

Group Ldap

group locaux

video3 0mn (5mn40s arrivée d'une trottinette ;-) )

groups dans la BD esup . A usage de petit groupe, 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@esup32dev ~/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@esup32dev ~/esup-install]
$ ls Portail/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/db/mini/group_membership/
Administrateurs_Portail.group_membership  Canaux_uPortal.group_membership  Proprietaires_de_fragment.group_membership
Anonymes.group_membership                 Demonstration.group_membership   Toutes_les_categories.group_membership
Applications.group_membership             Information.group_membership     Tout_le_monde.group_membership
Canaux_eSup.group_membership              Portal System.group_membership

Groupes “conteneurs” issuent du tuto afin de rattacher le parent Mes_groupes_locaux au macro group Tout_le_monde

[esup@esup32dev ~/esup-install]
$ cp ~/src-tuto-julien/*group_membership custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/
[esup@esup32dev ~/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 May 25 09:18 Mes_groupes_locaux.group_membership
-rw-r--r-- 1 esup esup 485 May 25 09:18 Tout_le_monde.group_membership
-rw-r--r-- 1 esup esup 323 May 25 09:18 Utilisateurs_apogee.group_membership
-rw-r--r-- 1 esup esup 323 May 25 09:18 Utilisateurs_harpege.group_membership

[esup@esup32dev ~/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>

import DB

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

DB export

Définition dans la tache crn-export du build.xml de uPortal:

[esup@esup32dev ~/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 &quot;type&quot; 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@esup32dev ~/esup-install]
$ mkdir -p custom/db-export

$ ant db.export -Ddir=/home/esup/esup-install/custom/db-export/ -Dtype=all-groups
Buildfile: build.xml
...
     [java] Begin uPortal Export 'all-groups': 1306308954625
     [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] uPortal Export 'all-groups' Complete in 6028 milliseconds.

BUILD SUCCESSFUL
Total time: 52 seconds

[esup@esup32dev ~/esup-install]
$ ls custom/db-export/group/
Administrateurs_Portail-2.group  Applications-12.group  Canaux_uPortal-14.group  Information-16.group    Proprietaires_de_fragment-18.group  Tout_le_monde-0.group
Anonymes-11.group                Canaux_eSup-13.group   Demonstration-15.group   Portal_System-17.group  Toutes_les_categories-1.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

groupes initiaux

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

gestion du cache

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

Group PAGS

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@esup32dev ~/esup-install]
$ mkdir -p custom/uPortal/uportal-impl/src/main/resources/properties/groups

[esup@esup32dev ~/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 !

personnaliser PAGSGroupStoreConfig.xml

exemple: http://sourcesup.cru.fr/scm/viewvc.php/trunk/esup-smsu/properties/groups/PAGSGroupStoreConfig.xml?root=esup-smsu&view=markup

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>

  

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.

Attachement des PAGS

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

[root@esup3prod /home/esup/esup-3.1.2-esup-0.5-RC5]
$ scp  ./custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/*.group_membership root@bosra:/vz/private/10094/home/esup/esup-install//custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/

Divers.group_membership                                                                                                                             
Etablissements.group_membership                                                                                                                     
Information.group_membership                                                                                                                        
ITSP_groupes_LDAP.group_membership                                                                                                                  
OutilsCom.group_membership                                                                                                                          
Proprietaires_de_fragment.group_membership                                                                                                          
Services.group_membership                                                                                                                           
Toutes_les_categories.group_membership                                                                                                              
Tout_le_monde.group_membership       


 [esup@esup32dev ~/esup-install]
$ ll ./custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/group_membership/
total 48
-rw-r--r-- 1 root root 295 May 25 22:49 Divers.group_membership
-rw-r--r-- 1 root root 395 May 25 22:49 Etablissements.group_membership
-rw-r--r-- 1 root root 305 May 25 22:49 Information.group_membership
-rw-r--r-- 1 root root 517 May 25 22:49 ITSP_groupes_LDAP.group_membership
-rw-r--r-- 1 esup esup 371 May 25 09:18 Mes_groupes_locaux.group_membership
-rw-r--r-- 1 root root 329 May 25 22:49 OutilsCom.group_membership
-rw-r--r-- 1 root root 625 May 25 22:49 Proprietaires_de_fragment.group_membership
-rw-r--r-- 1 root root 354 May 25 22:49 Services.group_membership
-rw-r--r-- 1 root root 496 May 25 22:49 Toutes_les_categories.group_membership
-rw-r--r-- 1 esup esup 484 May 25 22:49 Tout_le_monde.group_membership
-rw-r--r-- 1 esup esup 323 May 25 09:18 Utilisateurs_apogee.group_membership
-rw-r--r-- 1 esup esup 323 May 25 09:18 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@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
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

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-451434488-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@260d8d' on ThreadLocal
     [java]  INFO Created new lazily initialized GenericApplicationContext for the portal in 17766ms
     [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 38629 milliseconds.

BUILD SUCCESSFUL
Total time: 1 minute 0 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.tab_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

Groupe	Root Groups
	
Réduire le groupe	Toutes les categories
	
Groupe	Applications
Etendre le groupe	Canaux eSup
Etendre le groupe	Canaux uPortal
Etendre le groupe	Divers
Etendre le groupe	Information
Etendre le groupe	Outils de communication
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	DISI
Groupe	Stagiaires Apprentis Doctorants
Groupe	Tous les enseignants
Groupe	Tous les etudiants
Groupe	Tout le personnel
Etendre le groupe	Proprietaires de fragment

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 !.

Canaux

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)

Initialement

Apres un db.init on a sur un portail fraichement installé ces canaux de base

Exemple canal-hello

On positione les sources dans un arborescence dediée au canaux

[esup@esup32dev ~/esup-install]
$ mkdir -p src/canaux
$ cd src/canaux/
[esup@esup32dev ~/esup-install/src/canaux]
$ mv /home/esup/esup-canal-hello-1.00.zip .

[esup@esup32dev ~/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@esup32dev ~/esup-install/src/canaux/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 …)

deploy

[esup@esup32dev ~/esup-install/src/canaux/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: 2 seconds

publication

Répertoire custom pour heberger les fichier xml de publication systeme des canaux (equivalent de pubchan en 2.5)

[esup@esup32dev ~/esup-install]
$ mkdir custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel

Copie du fichier de publication

[esup@esup32dev ~/esup-install]
$ cp src/canaux/CHelloWorld-1.00/CHello.channel custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/channel/

publication

[esup@esup32dev ~/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
Trying to override old definition of task java
Trying to override old definition of task javac
Trying to override old definition of task for

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-881175900-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@657c7b' on ThreadLocal
     [java]  INFO Created new lazily initialized GenericApplicationContext for the portal in 19165ms
     [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]  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 28284 milliseconds.

BUILD SUCCESSFUL
Total time: 1 minute 0 seconds

publication de tous les canaux

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

Canal Stockage

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

Dependance MAG

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

fragments

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:

  • definition du fragment (nom, destination ⇒ vers qui …) properties/dlm.xml,
  • puis réalisation du contenu du fragment

definition

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).

users-lo

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.

définition des utilisateurs

le contenu du fragment est associé a un utilisateur “modele” video3 58mn

[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp]
$ mkdir utilisateurs/

[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp]
$ ll utilisateurs/
total 12
-rw-r--r-- 1 esup esup 154 Jul  1 22:48 enseignant-lo.user
-rw-r--r-- 1 esup esup 152 Jul  1 22:48 etudiant-lo.user
-rw-r--r-- 1 esup esup 153 Jul  1 22:48 personnel-lo.user
-rw-r--r-- 1 root root 147 Jul  1 23:04 sad-lo.user
-rw-r--r-- 1 root root 148 Jul  1 23:04 disi-lo.user

[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/utilisateurs]
$ cat etudiant-lo.user 

<user script="classpath://org/jasig/portal/io/import-user_v3-0.crn" username="etudiant-lo">
  <default-user>defaultTemplateUser</default-user>
</user>

import des utilisateurs

[esup@esup32dev ~/esup-install]
$ ant db.import -Ddir=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/utilisateurs/
Buildfile: build.xml
...
  [java] Base Import Directory=/home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/utilisateurs/
    [java] FILE_PATTERN=.*
     [java] Import User:  disi-lo.user
     [java]  INFO Looking up bean 'counterStore' in ApplicationContext due to context not yet being initialized
     [java] Import User:  enseignant-lo.user
     [java] Import User:  etudiant-lo.user
     [java] Import User:  personnel-lo.user
     [java] Import User:  sad-lo.user
     [java] Import of /home/esup/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/utilisateurs/ Complete in 23444 milliseconds.

BUILD SUCCESSFUL
Total time: 42 seconds

il est de bon usage d'ajouter ces utilisateurs au groupe “proprietaire de fragment” pour faciliter la gestion graphique de ces comptes

[esup@esup32dev ~/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>guest-lo</literal>
    <literal>personnel-lo</literal>
    <literal>enseignant-lo</literal>
    <literal>etudiant-lo</literal>
    <literal>sad-lo</literal>
    <literal>disi-lo</literal>
  </children>
</group>

db import

[esup@esup32dev ~/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"
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=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 5228 milliseconds.

BUILD SUCCESSFUL
Total time: 32 seconds

delete d'utilisateur

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.

[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp] $ mkdir fragments

$ ll fragments/ total 28 -rw-r–r– 1 esup esup 2926 Jul 1 22:50 admin-lo.fragment-layout -rw-r–r– 1 esup esup 1801 Jul 1 22:50 all-lo.fragment-layout -rw-r–r– 1 esup esup 1650 Jul 1 22:50 enseignant-lo.fragment-layout -rw-r–r– 1 esup esup 1944 Jul 1 22:50 etudiant-lo.fragment-layout -rw-r–r– 1 esup esup 2997 Jul 1 22:50 guest-lo.fragment-layout -rw-r–r– 1 esup esup 5161 Jul 1 22:50 personnel-lo.fragment-layout

Fragments Import XML

on prepare nos fragments par type de population (associées aux utilisateurs modeles)

[esup@esup3dev ~/src/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/fragments]
$ ls
admin-lo.fragment-layout  enseignant-lo.fragment-layout  guest-lo.fragment-layout
all-lo.fragment-layout    etudiant-lo.fragment-layout    personnel-lo.fragment-layout

Fragments par GUI

on peux aussi les administrer via l'interface web du portail, via le Canal “Fragment Administration”

import des xml

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

DLM

on reprend le dlm.xml dans notre arborescence de custom

[esup@esup32dev ~/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/

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 alternative a 3 frag etudiantr, 3 frag personnels, 6 fragments individuels avec pour le fragment commun un acces aux deux populations, plus souple pour le deplacement également . On peu avoir le meme fragment pour les 2 populations et gerer des droits d'acces a un canal en particulier pour telle population .

esup@esup32dev ~/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 09:09 /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/update/uPortal/uportal-impl/src/main/resources/properties/dlm.xml
[esup@esup32dev ~/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 Jun 19 22:32 /home/esup/esup-uPortal-3.2.4-esup-1.0.0-RC3/custom/uPortal/uportal-impl/src/main/resources/properties/dlm.xml
[esup@esup32dev ~/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@esup32dev ~/esup-install]
$ ant init

[esup@esup32dev ~/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 Jun 19 22:34 /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@esup32dev ~/esup-install]
$ ll /var/lib/tomcat6/webapps/uPortal/WEB-INF/classes/properties/dlm.xml
-rw-rw-r-- 1 esup esup 4078 Jun 19 22:37 /var/lib/tomcat6/webapps/uPortal/WEB-INF/classes/properties/dlm.xml

Skin

skinList

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@esup32dev ~/esup-install/custom]
$ mkdir -p uPortal/uportal-war/src/main/webapp/media/skins/universality/
$ mkdir -p uPortal/uportal-war/src/main/webapp/media/skins/muniversality/



[esup@esup32dev ~/esup-install]
$ 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@esup32dev ~/esup-install]
$ 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@esup32dev ~/esup-install]
$ vim custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/skinList.xml 


[esup@esup32dev ~/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
55a56,71
> 
>        <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>

Skin maison

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)

[esup@esup32dev ~/esup-install]
$ mkdir custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/formation


$ scp -r formation/* root@esup32dev.it-sudparis.eu:/home/esup/esup-install/custom/uPortal/uportal-war/src/main/webapp/media/skins/universality/formation
formation.css                                                                                                    100% 5903     5.8KB/s   00:00    
portal_logo.png                                                                                                  100%   16KB  16.2KB/s   00:00    
portal_logo_slim.png                                                                                             100%   16KB  16.2KB/s   00:00    
skin.xml                                                                                                         100% 2581     2.5KB/s   00:00    
thumb.gif                                                                                                        100% 3904     3.8KB/s   00:00    

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

skin par defaut

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@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp]
$ mkdir theme
[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp]
$ cp /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/theme/DLM_XHTML.theme ./theme/

modification

[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp]
$ diff theme/DLM_XHTML.theme /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/theme/DLM_XHTML.theme
23,24c23,24
<       <value>itsp</value>  
<       <description>Campus itsp</description>  
---
>       <value>formation</value>  
>       <description>Design skin name</description>  
28c28
< </theme>
---
> </theme>

importation de cette nouvelle xsl

[esup@esup32dev ~/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] 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 2142 milliseconds.

BUILD SUCCESSFUL
Total time: 32 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 !

Theme par population

il est possible d'affecter une theme (skin) par type de population video4 0mn

map attribut

il faut mapper un attribut sur le uPortalTemplateUserName

custom/uPortal/uportal-impl/src/main/resources/properties/contexts/personDirectoryContext.xml

<entry key="supannentiteaffectationprincipale>
<set>                                                             <value>uPortalTemplateUserName</value>                                              <value>supannentiteaffectationprincipale</value>
</set>
</entry>

user template

definir un utilisateur modele / template associé a cette population

layout

un layout “creux/vide” (header + footer) pour cette population, juste pour que l'utilisateur herite de la partie skin de ce layout .

profile

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@esup32dev ~/esup-install]
$ mkdir custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account


[esup@esup32dev ~/esup-install/custom/uPortal/uportal-impl/src/main/resources/properties/db/itsp/template_account]
$ ll
total 36
-rw-r--r-- 1 esup esup 409 Jul  3 23:31 tem-default.profile
-rw-r--r-- 1 esup root 481 Jul  3 23:33 tem.layout
-rw-r--r-- 1 esup root  86 Jul  3 23:34 tem.template-user
-rw-r--r-- 1 esup root 416 Jul  3 23:37 tmsp-default.profile
-rw-r--r-- 1 esup root 481 Jul  3 23:36 tmsp.layout
-rw-r--r-- 1 esup root  86 Jul  3 23:36 tmsp.template-user
-rw-r--r-- 1 esup root 415 Jul  3 23:37 tsp-default.profile
-rw-r--r-- 1 esup root 481 Jul  3 23:37 tsp.layout
-rw-r--r-- 1 esup root  86 Jul  3 23:38 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

[esup@esup32dev ~/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
    [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] 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 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 19203 milliseconds.

BUILD SUCCESSFUL
Total time: 51 seconds

Langues, traduction XSL

video4 15mn12s

Maintenant les traductions se font dans un fichier XML à part : uportal-war/src/main/resources/layout/theme/universality/messages.xml

XSL et composants du portails

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
< -->

Canaux, Canal Annuaire

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 .

Canal Annuaire

http://www.esup-portail.org/display/PROJCANANN/Recherche+dans+un+annuaire+%27pages+blanches%27 http://www.esup-portail.org/display/PROJCANANN/Installation+canal+Annuaire

[esup@esup32dev ~/esup-install/src/canaux]
$ wget https://sourcesup.cru.fr/frs/download.php/2983/esup-canal-annuaire-3.2.1.zip

[esup@esup32dev ~/esup-install/src/canaux/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

si pb au ant deploy sur le repartoire $tomcat_home/common/lib ⇒ le creer avec droits d'acces a l'utilisateur esup.

Publication

http://www.esup-portail.org/display/ESUPMU/Publication+de+canaux+%28esup-3%29

en mode “cli” avec un fichier de definition .channel suivit d'un db.import

[esup@esup32dev ~/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"
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=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 9835 milliseconds.

BUILD SUCCESSFUL
Total time: 18 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

stats

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

Mobiles

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 .

JavaScripts

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

Tutoriel esup3 en video

sujets video1

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 

video2

  • 20mn le compte admin:

handler file webapps/cas/WEB-INF/usersFile login::md5password

  • 27mn ldap persondir
  • 38mn ldap groups, smartGroupstore
  • 46mn group locaux
  • 52mn db.import

video3

  • 0,30mn rappel group PAGS
  • 10mn rattachement des groupe PAGS ldap au groupe locaux en db.import
  • 15mn discussion sur les types de groups (pags, ldap, smart …)
  • 26mn publication d'un canal
  • 38mn les fragments
  • 48mn users-lo; utilisateurs modeles de layout
  • 51mn DLM

video4

  • 0mn contenu des fragments
  • 14mn fragment cache: fragment_cache_refresh 5mn par defaut
  • 25mn allow disallow move colonne, canal etc …
  • 26mn un fragment commun webmail mais avec cannal iframe masqué par type de population, droits des canaux
  • 28,5mn Skin
  • 35mn skin par defaut , 35,5 principe de generation xsl structure → xsl theme
  • 41,20 choix du theme par population; uPortalTemplateUserName