En cours de rédaction
Nous décrivons ici l'installation d'un hôte vserver (http://linux-vserver.org/Welcome_to_Linux-VServer.org) sur lequel nous déployons le socle esup-portail.
Le système "invité" est une CentOS 5.4 d'architecture 32 bits, avec un nom inclut dans le DNS de l'établissement et des ACL réseau laissant passer les flux.
Nous supposons que vous possédez une infrastructure en place avec au minimum un DNS, CAS et un serveur openLDAP en production.
1/ Contexte
Dans ce qui va suivre, notre machine s'appelle gaspar-dev.int-evry.fr et a pour adresse IP 157.159.10.200 .
Il convient de correctement configurer votre firewall. Dans le cas d'un vserver installé avec les vs-tools (http://dokuwicri.univ-reims.fr/wiki/doku.php?id=public:projets:vs-tools:start), le fichier est accessible sur la machine hôte/physique dans /etc/vservers/nomduvserver/firewall.conf. Dans le cas d'une machine physique traditionnelle, il faut modifier le fichier /etc/sysconfig/iptables.
Voici les flux à laisser transiter à travers votre firewall
# Connexions sortantes:
allow to 0/0 to udp/53 # DNS request allow to 0/0 to udp/123 # Network Time Protocol allow to 157.159.0.0/16 to tcp/22 # SSH vers le réseau de l'établissement # # Récupération de packages allow to 0/0 to tcp/21 # FTP allow from 0/0 from tcp/20 # FTP-data allow to 0/0 to tcp/80 # HTTP YUM allow to 0/0 to tcp/11371 # PGP-keys # # Portail allow to 157.159.10.29/32 to tcp/443 # Accès https au CAS de l'établissement allow to 157.159.10.76/32 to tcp/3306 # Requêtes mysql vers un serveur central (pas nécessaire a priori) allow to 157.159.0.0/16 to tcp/389 # LDAP (tcp/636 pour du LDAPS) allow to 157.159.0.0/16 to tcp/25 # SMTP allow to 0/0 to tcp/8443 # HTTPS tomcat pour shibboleth allow to 0/0 to tcp/443 # HTTPS pour shibboleth allow to 0/0 to tcp/445 # CIFS stockage allow to 0/0 to tcp/137 # CIFS stockage allow to 0/0 to tcp/138 # CIFS stockage allow to 0/0 to tcp/139 # CIFS stockage allow to 157.159.10.88/32 to tcp/143 # Accès au serveur de boites aux lettres pour Canal IMAP
# Connexions entrantes:
allow from 0/0 to tcp/80 # HTTP allow from 157.159.0.0/16 to tcp/8080 # HTTP tomcat allow from 0/0 to tcp/443 # HTTPS allow from 0/0 to tcp/8443 # HTTPS tomcat allow from 0/0 to tcp/22 # Local SSH allow from 0/0 to udp/161 # SNMP
2/ Installation système de base
2.1/ Récupération du repository java
cd /etc/yum.repos.d/ wget http://www.jpackage.org/jpackage50.repo wget http://www.jpackage.org/jpackage.asc rpm --import jpackage.asc
2.2/ Installation packages de base via RPM
On vérifie qu'on dispose que de packages 32 bits:
rpm -qa --queryformat %-{name}-%{version}-%{release}.%{arch}"\n" | grep x86_64
On récupère via yum quelques packages utiles:
yum install vim-enhanced rootfiles vixie-cron anacron logrotate system-config-date sudo wget tar gzip diffutils yum install which bind-utils yum install openssh.i386 openssh-clients.i386 openssh-server.i386 yum install dos2unix yum install mlocate
On met à jour mlocate afin de retrouver facilement un fichier:
updatedb
2.3/ Configuration spécifique à Linux-VServer
On met le système à l'heure:
[root@gaspar-dev ~]# system-config-date
On vérifie:
[root@gaspar-dev ~]# date
Modification de fichiers PAM (/etc/pam.d/crond et /etc/pam.d/sshd) afin de rester dans le contexte du vserver. Dans les deux cas, on met en commentaire la ligne suivante:
#session required pam_loginuid.so
Il peut survenir des soucis avec la localhost sur les vservers (plusieurs localhosts sur la même machine physique). On modifie /etc/hosts en conséquence:
[root@gaspar-dev ~]# more /etc/hosts 157.159.10.200 gaspar-dev.int-evry.fr localhost
2.4/ Installation des packages pour à ESUP
yum install tomcat6 yum install ant-nodeps yum install ant java-sun java-sun-devel yum install ant-apache-regexp ant-contrib yum install httpd yum install mysql-server
2.5/ Démarrage automatique de ces services/daemons:
chkconfig --level 345 mysqld on chkconfig --level 345 tomcat6 on chkconfig --level 345 httpd on
2.6/ Récupération d'esupdev et de uPortal-esup-DLM
cd ~ wget http://sourcesup.cru.fr/frs/download.php/2874/esupdev-3.1.2-esup-0.5-RC1.tar.gz wget http://sourcesup.cru.fr/frs/download.php/2875/esup-3.1.2-esup-0.5-RC1.tar.gz
Évidemment, la version peut avoir changé au moment où vous lisez ce How-To...
Référez vous à http://sourcesup.cru.fr/frs/?group_id=173 .
2.7/ Ajout d'un compte local et positionnement des droits
Ajout du compte esup:
useradd esup
Copie du package esup et esupdev dans le répertoire du compte local:
cd ~ cp esup-3.1.2-esup-0.5-RC1.tar.gz /home/esup/. cp esupdev-3.1.2-esup-0.5-RC1.tar.gz /home/esup/.
Positionnement des droits:
cd /home/esup/ chgrp -R apache .bash_logout .bash_profile .bashrc .mozilla chown esup:tomcat esup-3.1.2-esup-0.5-RC1.tar.gz esupdev-3.1.2-esup-0.5-RC1.tar.gz
2.8/ Mysql
/etc/init.d/mysqld start /usr/bin/mysqladmin -u root password 'motdepasse' mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.0.77 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database esup; mysql> GRANT ALL PRIVILEGES ON esup.* TO 'esup'@'localhost' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON esup.* TO 'esup'@'gaspar-dev.int-evry.fr' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION;
2.9/ Monitoring nagios (spécifique à mon établissement mais ça peut rappeler que...)
yum install nrpe yum install nagios-of-plugins nagios-plugins-ntp nagios-plugins-load nagios-plugins-users nagios-int-plugins nagios-plugins nagios-plugins-disk nagios-plugins-perl nagios-plugins-procs vi /etc/nagios/nrpe.cfg chkconfig --level 345 nrpe on /etc/init.d/nrpe start
2.10/ Installation de maven
Après téléchargement (http://maven.apache.org/) ou récupération de maven via "ant init":
cp apache-maven-2.2.1-bin.tar.gz /usr/local/. cd /usr/local/ gunzip apache-maven-2.2.1-bin.tar.gz tar xvf apache-maven-2.2.1-bin.tar rm apache-maven-2.2.1-bin.tar chmod +x /usr/local/apache-maven-2.2.1/bin/mvn
En tant qu'utilisateur esup, il faut rajouter ceci à votre path:
su - esup vi /home/esup/.bash_profile ... # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/local/:/usr/local/apache-maven-2.2.1/bin
3/ Installation du package esup-portail à proprement parler
Attention, faites tout ce qui suit en tant que l'utilisateur esup (su - esup)
3.1/ Décompression des packages
cd gunzip esup-3.1.2-esup-0.5-RC1.tar.gz tar xvf esup-3.1.2-esup-0.5-RC1.tar mkdir Archive gzip -9 esup-3.1.2-esup-0.5-RC1.tar mv esup-3.1.2-esup-0.5-RC1.tar.gz Archive/.
3.2/ Configuration
cd esup-3.1.2-esup-0.5-RC1 cp config.sample.properties config.properties cp build.sample.properties build.properties
config.properties
Les parties modifiées du fichier config.properties sont en mauve ci-dessous.
Pour des tests, on utilise dans un premier temps le ant, le maven et le tomcat embarqué (3 premières valeurs fixées à "true" ci-dessous). Par ailleurs, pour la même raison, on utilise la base hsql et non mysql. Pour utiliser mysql, il suffit de commenter/décommenter cequi se trouve en mauve dans la section "DB Options" de ce fichier. Attention, il est normal que la base hsql est comme login "sa" et pas de mot de passe...
# Components Options use.embedded.ant=true use.embedded.maven=true use.embedded.tomcat=true # Tomcat Options tomcat.update=true tomcat.reloadable=true tomcat.port.shutdown=8005 tomcat.port.http=8080 tomcat.port.jk=8009 # URL Options esup.public.host=gaspar-dev.int-evry.fr esup.public.proto=http esup.public.port=:8080 esup.public.uri=/uPortal esup.public.guest.uri=/Guest esup.public.ressource.uri=/ResourceServingWebapp esup.real.host=${esup.public.host} esup.real.uri=${esup.public.uri} esup.real.port.https= # LDAP Options esup.ldap.auth=false esup.ldap.url=ldap://ldap4.int-evry.fr:389 ldap://ldap3.int-evry.fr:389 esup.ldap.baseDN=dc=int-evry,dc=fr esup.ldap.bindDN=cn=mcibind,ou=system,dc=int-evry,dc=fr esup.ldap.bindPasswd=motdepassebindldap esup.ldap.persondirs.use=true esup.ldap.uid=uid # CAS Options esup.cas.auth=true esup.cas.proto=https esup.cas.proxy=true esup.cas.host=cas.it-sudparis.eu esup.cas.port.https= esup.cas.port.http= esup.cas.uri=/cas esup.cas.withoutSSL=false esup.cas.uri.login=/login esup.cas.uri.validate=/serviceValidate esup.cas.uri.proxy=/proxy esup.cas.uri.logout=/logout esup.real.uri.callbackCas=/CasProxyServlet # DB Options esup.db.auth=true esup.db.persondirs.use=true esup.db.username=sa esup.db.password= #esup.db.username=esup #esup.db.password=motdepassemysql # db type : mysql, hsql, postgresql esup.db.type=hsql esup.db.url=jdbc:hsqldb:hsql://localhost:8887 esup.db.className=org.hsqldb.jdbcDriver #esup.db.type=mysql #esup.db.className=com.mysql.jdbc.Driver #esup.db.jdbcDriverJar=mysql-connector-java-5.1.6 #esup.db.db-version=5.0.77 #esup.db.poolPreparedStatements=true # XSL Options esup.xsl.debug=false esup.xsl.cache=false 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.use.sidebar=false esup.xsl.use.sidebar.focused=false esup.xsl.use.sidebar.guest=false # LOG Options esup.log.dir=${esup.root}/logs esup.log.file=${esup.log.dir}/portal.log esup.log.size=500000KB esup.log.level=DEBUG # STATS Options esup.stats.file=${esup.log.dir}/stats.log esup.stats.attributeType=eduPersonPrimaryAffiliation esup.stats.channelFnames=all esup.stats.size=200000KB # MISC Optionsesup.title.main=eSup DEVEL ${uportal.ver} - [${esup.host.logicalName}] esup.host.logicalName=gaspar-dev esup.session.lifetime=30 esup.languages=fr_FR,en_US esup.default.language=fr esup.upload-maxsize=300000 esup.ws.groups=trueesup.monitor=true esup.userprefs.save=false esup.keystore=/etc/pki/tls/certs/gaspardev_ca-pkiit1-pkiit2-chain-tcs-addtrust-bundle.p12
build.properties
On utilise là encore le tomcat embarqué afin de faire des tests. Pour utiliser le tomcat v.6 récupéré, il faut commenter/décommenter le "esup.deploy" et "server.home" de build.properties comme ci-dessous.
#java_home=/usr/java/jdk1.6.0_16 java_home=/usr/lib/jvm/java # CURRENT FOLDER esup.root=${basedir.conv} esup.base=${esup.root}/Portail ant_home=${basedir.conv}/resources/${ant.package.final} mvn_home=${esup.base}/${mvn.package.final} esup.sources=${esup.base}/uPortal_rel-${uportal.ver} esup.deploy=${esup.base}/webapps #esup.deploy=/var/lib/tomcat6/webapps server.home=${esup.base}/apache-tomcat-${tomcat.ver} #server.home=/usr/share/tomcat6 server.temp=${server.home}/temp esup.custom=${esup.root}/custom esup.update=${esup.root}/update esup.resources=${basedir.conv}/resources esup.packages=${esup.root}/packages esup.tmp=${esup.root}/temp config.file=${esup.root}/config.properties mvn_repo=${esup.base}/maven-repo mvn_offline=false mvn_skiptest=true mvn_esuprepo=${esup.resources}/esup-maven-repo
3.3/ Modification des droits
ls logs/ ls -al logs touch logs/portal.log touch logs/stats.log
3.4/ Premières taches ant et création de l'arborescence
Les options de ant:
ant -p
On lance la séquence décrite par le consortium:
cd ~/esup-3.1.2-esup-0.5-RC1 ant init ant getcomponents ant unzip
3.5/ Configuration de uPortal
cd /home/esup/esup-3.1.2-esup-0.5-RC1/Portail/uPortal-3.1.1 vi build.properties cd ../..
3.6/ Utilisation du ant embarqué
cd /home/esup/esup-3.1.2-esup-0.5-RC1/resources/ gunzip apache-ant-1.7.1-bin.tar.gz tar xvf apache-ant-1.7.1-bin.tar rm apache-ant-1.7.1-bin.tar cp ant.sample.sh ant.sh vi ant.sh ---- #!/bin/sh export LANG=fr_FR # export JAVA_HOME=/usr/java/jdk1.6 export JAVA_HOME=/usr/lib/jvm/java export ANT_HOME=./resources/apache-ant-1.7.1 chmod 755 $ANT_HOME/bin/ant $ANT_HOME/bin/ant $@ ---- chmod u+x ant.sh dos2unix ant.sh
3.7/ Deuxièmes tâches ant
cd /home/esup/esup-3.1.2-esup-0.5-RC1 ./ant.sh init ./ant.sh getcomponents ./ant.sh unzip
Il faut faire un choix de base de données. Nous avons choisi mysql mais pour commencer les tests, on va prendre hsql. Pour ceux qui ne connaissent pas, hsqldb est une base, écrite en java, embarquée dans l'application. Ca a la réputation d'être plus rapide et de taille moins importante que mysql. En effet, toutes les données sont écrites en mémoire pour améliorer la vitesse d'accès mais ça ne permet donc pas le traitement d'énormes bases de données. Lors de la fermeture de la connexion à la base de données, hsql va écrire toutes ses données volatiles dans des fichiers (il est cependant aussi possible de créer des tables en dur sur le disque).
Si vous voulez en savoir plus sur le sujet, consultez http://baptiste-wicht.developpez.com/tutoriel/java/hsql/ .
Dans une fenêtre séparée (ceci sert à lancer la base de données hsqldb):
./ant.sh hsql.start
Dans la première fenêtre:
./ant.sh db.test ./ant.sh db.init ./ant.sh deploy
3.8/ Création d'un script de lancement automatique
vi ~/restart_esup.sh ---- #!/bin/bash # /usr/bin/sudo /etc/init.d/tomcat6 stop cd ~/esup-3.1.2-esup-0.5-RC1 ./ant.sh init ./ant.sh db.import -Dchannel=all ./ant.sh db.import -Dusername=monuser-lo ./ant.sh deploy /usr/bin/sudo /etc/init.d/tomcat6 start cd vi /etc/sudoers chmod u+x restart_esup.sh ~/restart_esup.sh ----