...
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
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-dataroot@esup4:/etc/apache2/sites-enabled# export APACHE_RUN_GROUP=www-dataroot@esup4root@esup4:/etc/apache2/sites-enabled# grep BalancerMem *
ent apache2 -t -D DUMP_VHOSTS
VirtualHost configuration:wildcard NameVirtualHosts and _default_ servers:*:443 is a NameVirtualHostdefault 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-earpuis 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.xmlAjout 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
...