Projet Socle ENT
Pages enfant
  • Workshop esup4 16/05/2013

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Compte Rendu d'exploitation du workshop

 

vous Vous retrouverez sur cette page un compte rendu d'exploitation du workshop / tutoriel d'installation d'esup-uportal V4 qui a eu lieu le 16 Mai 2013 à Paris 5

(avertissement)il s'agit de mon interprétation du déroulement du tutoriel, sujet a à modifications car encore en cours de finalisation sur ma VM ...

il est aussi largement verbeux, pour des raisons d’ignorances sur certaines taches, notamment le detail du deploiement du portail (avertissement)portail

enfin certaines parties, notamment sur la fin, restent approximatives et non encore validées (avertissement) 

Références

 

ci dessous les elements necessaires à la réalisation de ce TP 

[Attention : la machine virtuelle et la présentation ont depuis été stockées sur le stockage pérenne d'esup-portail.org, voir la page "Machine virtuelle et supports - Esup V4.0" accessible aux adhérents]

Le 14 mai 2013 à 16:34, Vincent Bonamy<Vincent.Bonamy@univ-rouen.fr>  a écrit :

...

dans ce TP nous allons dérouler le tuto pas a à pas tel qu'il a été jouer joué le jour de la formation, en suivant globalement ce qui est décrit dans le readme:

https://github.com/EsupPortail/esup-uportal/blob/master/README

 

Ldap

le la VM contient un annuaire ldap , et l'utilitaire graphique qui va bien pour visulaiser les entrée entrées de l'annuaire: jxplorer 

esup@esup4:~$ ls
Bureau Documents Downloads Images jxplorer Modèles Musique Public Téléchargements Vidéos
esup@esup4:~$ cd jxplorer/
esup@esup4:~/jxplorer$ ./jxplorer.sh

...

Serveur HTTP apache

 

Module apache


modules

...

apache

...

ajouté

...

(proxy-ajp

...

...)


root@esup4:/etc/apache2# ls mods-enabled/
alias.conf cgid.conf mime.load rewrite.load
alias.load cgid.load negotiation.conf setenvif.conf
auth_basic.load deflate.conf negotiation.load setenvif.load
authn_file.load deflate.load proxy_ajp.load ssl.conf
authz_default.load dir.conf proxy_balancer.conf ssl.load
authz_groupfile.load dir.load proxy_balancer.load status.conf
authz_host.load env.load proxy.conf status.load
authz_user.load expires.load proxy.load
autoindex.conf headers.load reqtimeout.conf
autoindex.load mime.conf reqtimeout.load

...

un vhost pour cas et 2 ent pour simuler une un load balancer

root@esup4:/etc/apache2/sites-enabled# ls
cas.univ.fr ent1.univ.fr ent2.univ.fr ent.univ.fr

Ports apache

il faut jouer avec les numeros de port (ici cas à un ajp en 9009) car tout ce passe sur le meme et unique host, encore une fois c'est propre a la VM et a ce TP .

cas.univ.fr: ProxyPass / ajp://localhost:9009/ retry=1

Balancer apache


visualisation des vhost configuré dans apache et verification syntatxe des fichiers de conf

 

root@esup4:/etc/apache2/sites-enabled# export APACHE_RUN_USER=www-data
root@esup4:/etc/apache2/sites-enabled# export APACHE_RUN_GROUP=www-data
root@esup4root@esup4:/etc/apache2/sites-enabled# grep BalancerMem *
entapache2 -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server cas.univ.fr: BalancerMember ajp://ent1-app:8009 retry=1 
ent (/etc/apache2/sites-enabled/cas.univ.fr:18)
         port 443 namevhost cas.univ.fr: BalancerMember ajp://ent2-app:8009 retry=1 (/etc/apache2/sites-enabled/cas.univ.fr:18)
         port 443 namevhost ent.univ.fr (/etc/apache2/sites-enabled/ent.univ.fr:15)
         port 443 namevhost ent1.univ.fr (/etc/apache2/sites-enabled/ent1.univ.fr:1)
         port 443 namevhost ent2.univ.fr (/etc/apache2/sites-enabled/ent2.univ.fr:1)
*:80                   is a NameVirtualHost
         default server cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr:1)
         port 80 namevhost cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr:1)
         port 80 namevhost ent.univ.fr (/etc/apache2/sites-enabled/ent.univ.fr:1)
Syntax OK

 

2014

root@esup4:~# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr.conf:1)
         port 80 namevhost cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr.conf:1)
                 alias cas
         port 80 namevhost ent.univ.fr (/etc/apache2/sites-enabled/ent.univ.fr.conf:1)
                 alias ent
*:443                  is a NameVirtualHost
         default server cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr.conf:15)
         port 443 namevhost cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr.conf:15)
                 alias cas
         port 443 namevhost ent.univ.fr (/etc/apache2/sites-enabled/ent.univ.fr.conf:15)
                 alias ent
         port 443 namevhost ent1.univ.fr (/etc/apache2/sites-enabled/ent1.univ.fr.conf:1)
                 alias ent1
         port 443 namevhost ent2.univ.fr (/etc/apache2/sites-enabled/ent2.univ.fr.conf:1)
                 alias ent2

 

Ports apache

il faut jouer avec les numeros de ports (ici cas à un ajp en 9009) car tout se passe sur le meme et unique host, encore une fois c'est propre à la VM et à ce TP .

cas.univ.fr: ProxyPass / ajp://localhost:9009/ retry=1

Balancer apache

root@esup4:/etc/apache2/sites-enabled# grep BalancerMem *
ent.univ.fr: BalancerMember ajp://ent1-app:8009 route=ent1 retry=1
ent.univ.fr: BalancerMember ajp://ent2-app:8009 route=ent2 retry=1

Note : dans la VM fournie, et c'est un oubli, il manque les route=ent1 et route=ent2

Réécriture cookies apache

il est important quand on gere plusieurs instances de l'ENT pour des raison raisons de load balancing, que quand la route change (on passe de ent1 a ent2 par exemple) de reécrire le cookie

...

les cookies seront alors nommés du type "sticky.1ent1" ou "sticky.2ent2" en fonction de l'ent ciblé par le client,  qu'on  on peut aussi s'en servir pour modifier a à la main l'affectation d'un ent si necessaire (debug par exemple)

...

comme la VM du TP contient déjà un esup4 operationnele operationnel (deja configuré et deployé) , il faut pour le rejouer, repartir de zero, donc ici exeptionnellement on commence a par un drop de la database. par un drop de la database.

postgres=# drop DATABASE esup4;
DROP DATABASE
postgres=# create DATABASE esup4;
CREATE DATABASE
postgres=# \c esup4
psql (8.4.17)
Vous êtes maintenant connecté à la base de données « esup4 ».
postgres=# create USER esup4 with password 'esup';
ERREUR: le rôle « esup4 » existe déjà
postgres=# grant all on database esup4 to esup4;
GRANT

 

2014

# su - postgres
postgres@esup4:~$ psql
postgres=# \?
postgres=# \l
                                  Liste des bases de données
    Nom    | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d'accès    
-----------+--------------+----------+-----------------+--------------+-----------------------
 esup4     | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  |
 postgres  | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  |
 template0 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
           |              |          |                 |              | postgres=CTc/postgres
 template1 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
           |              |          |                 |              | postgres=CTc/postgres
(4 lignes)postgres=# drop DATABASE esup4;
DROP DATABASE
postgres=# create DATABASE esup4;
CREATE DATABASE
postgres=# \c esup4
psql (8.4.17)
Vous êtes maintenant connecté à la base de données « esup4 ».
postgres=# create USER esup4 with password 'esup';
ERREUR: le rôle « esup4 » existe déjà
postgres=# grant all on database esup4 to esup4;
GRANT

Arborescence de travail /opt

...

RAZ TP

on va rejouer le TP a à zero donc on efface tout ce qui a deja été fait vis a vis de  tomcat et esup-uportal

...

si cette commande echoue sur un connection timeout ou fatal ... c'est qu'il faut y aller plutot en https qu'en git (cas lors du TP en wifi derriere eduspot )qu'en git (cas lors du TP en wifi derriere eduspot )

esup@esup4:/opt$ git clone https://github.com/EsupPortail/esup-uportal.git
Cloning into esup-uportal...
remote: Counting objects: 161312, done.
remote: Compressing objects: 100% (45456/45456), done.
remote: Total 161312 (delta 92606), reused 158205 (delta 89900)
Receiving objects: 100% (161312/161312), 131.12 MiB | 1.96 MiB/s, done.
Resolving deltas: 100% (92606/92606), done.

2014 

$ git clone gitesup@esup4:/opt$ git clone https://github.com/EsupPortail/esup-uportal.git
CloningClonage intodans 'esup-uportal'...
remote: Counting objects: 161312167658, done.
remote: Compressing objects: 100% (4545645830/4545645830), done.
remote: Total 161312167658 (delta 9260695561), reused 158205167658 (delta 8990095561)
ReceivingRéception objectsd'objets: 100% (161312167658/161312167658), 131133.1286 MiB | 1210.9600 MiBKiB/s, done.
ResolvingRésolution des deltas: 100% (9260695561/9260695561), done.
Vérification de la connectivité... fait.

cela prend un certains temps ! (+sieurs minutes)

 

cela clone localement de depot github d'esup-portal et forck la branche master

...

diff --git a/filters/esup.properties b/filters/esup.properties
index 7c6b3d6..0f13984 100644
--- a/filters/esup.properties
+++ b/filters/esup.properties
@@ -38,8 +38,8 @@
environment.build.hsql.port=8887

## Server Path configuration
-environment.build.server.webapps=/home/esup4/webapps
-environment.build.server.home=/home/esup4/apache-tomcat-6.0.35
+environment.build.server.webapps=/opt/tomcat-esup/webapps
+environment.build.server.home=/opt/tomcat-esup

################################################################################
## Database configuration section ##
@@ -54,32 +54,32 @@ environment.build.server.home=/home/esup4/apache-tomcat-6.0.35
#environment.build.hibernate.connection.password=esup4

# PostGreSQL properties to uncomment :
-#environment.build.hibernate.connection.driver_class=org.postgresql.Driver
-#environment.build.hibernate.connection.url=jdbc:postgresql://sql.univ.fr:5432/esup4
-#environment.build.hibernate.connection.username=esup4
-#environment.build.hibernate.connection.password=esup4
+environment.build.hibernate.connection.driver_class=org.postgresql.Driver
+environment.build.hibernate.connection.url=jdbc:postgresql://sql.univ.fr:5432/esup4
+environment.build.hibernate.connection.username=esup4
+environment.build.hibernate.connection.password=esup

-environment.build.hibernate.dialect=org.hibernate.dialect.HSQLDialect
+environment.build.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

# JNDI property to uncomment :
#environment.build.hibernate.connection.jndiname=jdbc/uPortalDB

# uPortal server configuration properties
-environment.build.uportal.server=esup4.univ.fr
-environment.build.real.uportal.server=esup4.univ.fr
+environment.build.uportal.server=${univEntServerHost}
+environment.build.real.uportal.server=${univEntServerHostNum}
environment.build.uportal.protocol=https
environment.build.uportal.context=/uPortal
environment.build.real.uportal.context=/uPortal
environment.build.uportal.email.fromAddress=portal4@univ.fr

# CAS server configuration properties
-environment.build.cas.server=auth.univ.fr
+environment.build.cas.server=cas.univ.fr
environment.build.cas.protocol=https
-environment.build.cas.context=/cas
+environment.build.cas.context=

# LDAP
-environment.build.ldap.url=ldaps://ldap1.univ.fr:636 ldaps://ldap2.univ.fr:636
-environment.build.ldap.baseDn=dc=univ,dc=fr
+environment.build.ldap.url=ldap://ldap.univ.fr:389
+environment.build.ldap.baseDn=dc=esup-portail,dc=org
environment.build.ldap.userName=
environment.build.ldap.password=
environment.build.ldap.pooled=false
@@ -87,7 +87,7 @@ environment.build.ldap.uidAttr=uid


# Logs
-environment.build.log.logfileDirectory=/home/esup4/logs
+environment.build.log.logfileDirectory=/opt/tomcat-esup/logs
environment.build.log.logfileName=uPortal.log
environment.build.log.size=1024
environment.build.log.rootLevel=INFO

uportal-portlets-overlay/pom.xml et uportal-ear/pom.xml


dans le pom.xml de uportal-portlets-overlay on retire les portlet inutiles (le CAS interne et pluto-testsuite)

diff --git a/uportal-portlets-overlay/pom.xml b/uportal-portlets-overlay/pom.xml
index 20c11e5..18c9f53 100644
--- a/uportal-portlets-overlay/pom.xml
+++ b/uportal-portlets-overlay/pom.xml
@@ -18,12 +18,10 @@
<modules>
<module>BookmarksPortlet</module>
<module>CalendarPortlet</module>
- <module>cas</module>
<module>cas-proxy-test-portlet</module>
<module>email-preview</module>
<module>FunctionalTestsPortlet</module>
<module>jasig-widget-portlets</module>
- <module>pluto-testsuite</module>
<module>NewsReaderPortlet</module>
<module>NotificationPortlet</module>
<module>SimpleContentPortlet</module> <module>pluto-testsuite</module>
<module>NewsReaderPortlet</module>
<module>NotificationPortlet</module>
<module>SimpleContentPortlet</module>
diff --git a/uportal-ear/pom.xml b/uportal-ear/pom.xml
index fee7e30..492ab02 100755
--- a/uportal-ear/pom.xml
+++ b/uportal-ear/pom.xml
+ <!--
<dependency>
   <groupId>org.jasig.portal.portlets-overlay</groupId>
    <artifactId>cas</artifactId>
    <version>${project.version}</version>
    <type>war</type>
</dependency>

<dependency>
<groupId>org.jasig.portal.portlets-overlay</groupId>
<artifactId>pluto-testsuite</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
+ -->

Postgres driver 

reference README:
* ajout dépendance Postgresql
  * emacs pom.xml
    * on décommente le bloc situé sous le commentaire "<!-- POSTGRESQL driver. Uncomment if you need to -->"

...

la plus grosse commande, clean on nettoie tout (il faudra donc tout recompiler) et initportal on refait tout le portail + BD, sortie complete et tres verbeuse ci-dessous, mais cela permet de voir en detail tout ce qui se passe

...

remarque: calendar et weather portlet ne marche pas en IP privé !

Deuxieme deploiement

apres ce deploiement initial en allant sur http://ent.univ.fr (redirigé en https par le rewrite rule d'apache2) on tombe bien sur le portail 

la premiere fois que j'ai voulu m'identifier, apres une bonne redirection sur cas.univ.fr + login esup et pass esup j'ai eu le droit à une curieuse erreure de "too many redirect, loop, pb cookie ..." , ce n'ai qu'apres avoir tout arreté (tomcat-esup, tomcat-cas, apache2) et relancé un 2eme deploiement (plus léger; deploy-ear)

esup@esup4:/opt/esup-uportal$ ant -Dmaven.test.skip=true clean deploy-ear

puis relance en sens inverse des services (apache2, tomcat-cas, tomcat-esup), que j'ai pu enfin aller sur le portail et m'y connecter en tant qu'esup

https://ent.univ.fr/uPortal/f/welcome/normal/render.uP 

VOUS ÊTES CONNECTÉ(E) EN TANT QUE ESUP 

Encodage postgresql


ref slides page 25 pb encodages

...

esup@esup4:/opt/esup-uportal/uportal-portlets-overlay$ /etc/init.d/tomcat-esup stop
esup@esup4:/opt/esup-uportal/uportal-portlets-overlay$ rm /opt/tomcat-esup/webapps/porlets-pas-necessaires...
esup@esup4:/opt/esup-uportal/uportal-portlets-overlay$ ant clean deploy-ear
Il faut aussi modifier le fichier uportal-ear/pom.xml

Ajout groupe DSI

toute personne du departmentNumber = DSI (ldap) sera dans le groupe dynamique uportal DSI

...


<group>
<group-key>pags_root</group-key>
<group-name>PAGS Root</group-name>
<group-description>Root group for all PAGS groups. Convenience for adding PAGS groups to a local group.</group-description>
<members>
<member-key>all_users</member-key>
<member-key>Groupe_DSI</member-key>
</members>
</group>
 

Fragments

ref slide page 32

on va rattacher un fragment au groupe DSI

...

vide cache, deconnexion/ connexion pour voir le difference

verification graphique IHM web

ref: slide page 34

fragment owners verfier les membres, retrouve t-on notre dsi-lo, car apres les portlet qui vont etre rattaché a ce graement depandent de ça
il faut faire partie de fragment-layout-owner pour voire toutes les portlets dans l'interface.

Look

ref slide page 35

esup@esup4:/opt/esup-uportal$ cp /home/esup/Bureau/tmp/esup-ondule.png uportal-war/src/main/webapp/media/skins/universality/uportal3/images/portal_logo.png
git diff
diff --git a/uportal-war/src/main/webapp/media/skins/universality/uportal3/images/portal_logo.png b/uportal-war/src/main/webapp/media/
index 6c28c64..f508c15 100755
Binary files a/uportal-war/src/main/webapp/media/skins/universality/uportal3/images/portal_logo.png and b/uportal-war/src/main/webapp/

reload navigateur + CTRL+R, le logo apparaitslide 35


changement CSS


pour l'exercice on vire retire le footer uportal "portalpagefooter...."

esup@esup4:/opt/esup-uportal$ ls uportal-war/src/main/webapp/media/skins/
icons muniversality universality
universility pour desktop
muniversality pour mobiles

on va ajouter un fichier univ-fr.css qui ne ferra que supprimer le footer, il faut decalrer ce css dans le common_skin.xml


esup@esup4:/opt/esup-uportal$ vim /opt/esup-uportal/uportal-war/src/main/webapp/media/skins/universality/common/common_skin.xml

...

creation du fichier univ-fr.css retirant le footer

esup@esup4:/opt/esup-uportal/uportal-war/src/main/webapp/media/skins/universality/common/css$ cat univ-fr.css 
#portalfooter
display: none

on deploie a nouveau,
deploy-ear va faire une compression des css
deploy-ear => donc refait les portlet aussi

tomcat-esup restart

les ressource et javascript aggregé sont aggregés (compression) , donc ne pas copier le css tel quel dans l'arborescence tomcat !
sinon possibilité de "disable aggregation" via l'IHM si on veux s'en passer

Git Update socle

recuperer les modifications sur le socle depuis github
fusioner ma version avec celle des devellopeurs

esup@esup4:/opt/esup-uportal$ git remote -v
origin https://github.com/EsupPortail/esup-uportal.git (fetch)
origin https://github.com/EsupPortail/esup-uportal.git (push)


git push pull = fetch + merge

esup@esup4:/opt/esup-uportal$ git fetch origin
esup@esup4:/opt/esup-uportal$ git branch -a
* esup4-univ
master
remotes/origin/CCTP
remotes/origin/HEAD -> origin/master
remotes/origin/grouperGroupStrore
remotes/origin/master
esup@esup4:/opt/esup-uportal$ git branch
* esup4-univ
master
esup@esup4:/opt/esup-uportal$ git merge origin/master
ant clean deploy-ear

preconisation de l'usage de git mergetool pour gerer les conflit de merge, graphique plus pratique

cf https://wiki.jasig.org/display/UPC/Git+Workflow+for+Vendor+Branching

Git serveur , bare local

on peux aussi se faire un serveur git local

esup@esup4:/opt/esup-uportal$ cd /tmp
esup@esup4:/tmp$ git clone --bare /opt/esup-uportal/ esup-uportal.git
Cloning into bare repository esup-uportal.git...
done.
esup@esup4:/tmp$ git clone file:///tmp/esup-uportal.git clone-esup-uportal
Cloning into clone-esup-uportal...
remote: Counting objects: 161312, done.
remote: Compressing objects: 100% (42750/42750), done.
remote: Total 161312 (delta 92606), reused 161312 (delta 92606)
Receiving objects: 100% (161312/161312), 131.19 MiB | 28.16 MiB/s, done.
Resolving deltas: 100% (92606/92606), done.
peut-etre plus didactif, autre methode:
on aurait pu faire un mkdir /tmp/esup4-bare
git init --bare
puis git push depuis /opt/esup-uportal vers le bare de /tmp/esup4-bare

Portlet

ref slide page 38

exemple incomplet avec esup-twitter.warSlide 38 Portlet

target
ant deployPortletApp
-DportletApp=/opt/esup-uportal/target/tmp/esup-twitter.war

tomcat-esup restart pour la prise en compte de cette portlet (sauf si usage de lambda probe ...)

portlet esup-filemanager

esup@esup4:/opt$ git clone https://github.com/EsupPortail/esup-filemanager.git
Cloning into esup-filemanager...
remote: Counting objects: 4438, done.
remote: Compressing objects: 100% (2156/2156), done.
remote: Total 4438 (delta 1540), reused 4420 (delta 1524)
Receiving objects: 100% (4438/4438), 1.61 MiB | 781 KiB/s, done.
Resolving deltas: 100% (1540/1540), done.
esup@esup4:/opt$ ls
apache-tomcat-6.0.37 apache-tomcat-6.0.37.tar.gz cas esup-env esup-filemanager esup-uportal portlets tomcat-esup
esup@esup4:/opt$ cd esup-filemanager
esup@esup4:/opt/esup-filemanager$ git tag
esup-filemanager-2.1.0
esup-filemanager-2.2.0
esup-filemanager-2.2.1
esup-filemanager-2.2.2
esup@esup4:/opt/esup-filemanager$ git checkout -b esup4-filemanager esup-filemanager-2.2.2
Switched to a new branch 'esup4-filemanager'

on a plus besoin de la branche master

esup@esup4:/opt/esup-filemanager$ git branch -a 
* esup4-filemanager
master
remotes/origin/HEAD -> origin/master
remotes/origin/esup-filemanager-portlet_1_0
remotes/origin/master
esup@esup4:/opt/esup-filemanager$ git branch -D master
Deleted branch master (was 7fc866b).
esup@esup4:/opt/esup-filemanager$ git branch -a
* esup4-filemanager
remotes/origin/HEAD -> origin/master
remotes/origin/esup-filemanager-portlet_1_0
remotes/origin/master

on modifi modifie que le partage "bob" ne soit plus a la racine mais dans /home/esup

esup@esup4:/opt/esup-filemanager$ git diff
diff --git a/src/main/webapp/WEB-INF/context/drives.xml b/src/main/webapp/WEB-INF/context/drives.xml
index 51f0fb1..c8a4d70 100644
--- a/src/main/webapp/WEB-INF/context/drives.xml
+++ b/src/main/webapp/WEB-INF/context/drives.xml
@@ -126,7 +126,8 @@
<bean class="org.esupportail.portlet.filemanager.services.vfs.VfsAccessImpl" lazy-init="true">
<property name="driveName" value="bob"/>
<property name="icon" value="/esup-filemanager/img/drives/root.png" />
- <property name="uri" value="file:///"/>
+ <!-- <property name="uri" value="file:///"/> -->
+ <property name="uri" value="file:///home/esup"/>
<property name="contextToken" value="justbob"/>
<property name="resourceUtils" ref="resourceUtils"/>
</bean>