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.

...

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

enfin certaine certaines parties, notamment sur la fin, restent approximative approximatives et non encore validée 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 *
ent apache2 -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr:18)
         port 443 namevhost cas.univ.fr (/etc/apache2/sites-enabled/cas.univ.fr:18)
         port 443 namevhost  BalancerMember ajp://ent1-app:8009 retry=1 
ent.univ.fr: BalancerMember ajp://ent2-app:8009 retry=1 (/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  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=# \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
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)

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

...


esup@esup4:/opt$ git clone git://github.com/EsupPortail/esup-uportal.git
Cloning into 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 )

.com/EsupPortail/esup-uportal.git
Cloning into 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 )

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

...

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

...