User Tools

Site Tools


fr:ressources:dossiers:alfresco:installation

Helmut : Installation Alfresco 3.2r2 sous Debian Squeeze

Ce document est un guide de mise en place d'un environnement de base documentaire sous Debian Squeeze, joliment baptise Helmut. (aucun liens, fils unique).

L'architecture cible est la suivante:

Configuration de Debian

SSH

dans /etc/ssh/sshd_config

  1. désactive le login pour root
  2. désactive le X11 forwarding
# grep -v "^#" /etc/ssh/sshd_config |grep -v "^$"
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO 
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Banner /etc/issue.net   
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

Bannières d'accueil

Il y en a deux :

  1. /etc/issue.net: affichée par SSH avant la vérification de l'accès
  2. /etc/motd: affichée lorsque le login est autorisé

les deux bannières sont modifiées pour fournir des informations & disclaimers sur le système.

# cat /etc/issue.net


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~      HELMUT                  ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.access to helmut is logged and.
. sent to system administrator .


# cat /etc/motd

  ~~ Bienvenue sur Helmut                  ~~

L'installation respecte la structure Debian:
 - les donnees sont dans /var
 - les fichiers de configuration dans /etc
et pour le reste, voir la doc dans /root/doc
                                   

Synchro NTP

apt-get install ntpdate

Puis dans /etc/cron.hourly, ajouter le script suivant:

helmut:/etc/cron.hourly# cat ntpdate

#! /bin/sh
ntpdate fr.pool.ntp.org 2>&1 1>/dev/null

le rendre exécutable et tester:

helmut:/etc/cron.hourly# chmod +x ntpdate

helmut:/etc/cron.hourly# ./ntpdate

helmut:/etc/cron.hourly# date
mardi 15 décembre 2009, 21:46:03 (UTC+0100)

Resolver DNS

apt-get install unbound

unbound est un daemon qui résoud les requêtes DNS et les met en cache. Le serveur tourne localement et répond aux requêtes émises depuis localhost. Cela évite d'avoir à utiliser un resolver DNS externe (comme celui d'un ISP par exemple).

Il faut activer le fichier de configuration dans /etc/default/unbound

UNBOUND_ENABLE=true

DAEMON_OPTS="-c /etc/unbound/unbound.conf"

Puis configurer le daemon dans /etc/unbound/unbound.conf. La configuration par défaut fonctionne bien pour localhost, on ajoute seulement quelques fonctionnalités comme le logging dans syslog

helmut:/etc/unbound# grep -v "#" unbound.conf |grep -v "^$"
server:
        verbosity: 1
        do-ip4: yes
        do-ip6: no
        do-udp: yes
        do-tcp: no
        do-daemonize: yes
        chroot: ""
        use-syslog: yes
        pidfile: "/var/run/unbound.pid"


python:
remote-control:

Après redémarrage du daemon, on voit qu'il log dans /var/log/daemon.log

helmut:/etc/unbound# grep unbound /var/log/daemon.log
Dec 21 14:02:33 helmut unbound: [3668:0] notice: init module 0: validator
Dec 21 14:02:33 helmut unbound: [3668:0] notice: init module 1: iterator
Dec 21 14:02:33 helmut unbound: [3668:0] info: start of service (unbound 1.4.0).
Dec 21 14:14:59 helmut unbound: [3668:0] info: service stopped (unbound 1.4.0).
Dec 21 14:14:59 helmut unbound: [3668:0] info: server stats for thread 0: 11 queries, 5 answers from cache, 6 recursions
Dec 21 14:14:59 helmut unbound: [3668:0] info: server stats for thread 0: requestlist max 2 avg 0.333333 exceeded 0
Dec 21 14:14:59 helmut unbound: [3668:0] info: average recursion processing time 0.441901 sec
Dec 21 14:14:59 helmut unbound: [3668:0] info: histogram of recursion processing times
Dec 21 14:14:59 helmut unbound: [3668:0] info: [25%]=0.065536 median[50%]=0.131072 [75%]=0.118928
Dec 21 14:14:59 helmut unbound: [3668:0] info: lower(secs) upper(secs) recursions
Dec 21 14:14:59 helmut unbound: [3668:0] info:    0.065536    0.131072 1
Dec 21 14:14:59 helmut unbound: [3668:0] info:    0.131072    0.262144 1
Dec 21 14:14:59 helmut unbound: [3668:0] info:    0.262144    0.524288 2
Dec 21 14:14:59 helmut unbound: [3668:0] info:    0.524288    1.000000 2
Dec 21 14:14:59 helmut unbound: [3731:0] notice: init module 0: validator
Dec 21 14:14:59 helmut unbound: [3731:0] notice: init module 1: iterator
Dec 21 14:14:59 helmut unbound: [3731:0] info: start of service (unbound 1.4.0).

Installation MySQL

apt-get install mysql-server

<note important>Il faut changer le type d'engine par defaut pour mettre innodb (voir doc). par defaut, c'est MyISAM</note>

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.37-2 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        | 
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         | 
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         | 
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         | 
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         | 
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       | 
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         | 
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0,00 sec)

Pour changer cela, il faut editer /etc/mysql/my.cnf comme suis:

[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0
[mysqld]
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
language	= /usr/share/mysql/english
skip-external-locking
bind-address		= 127.0.0.1
key_buffer		= 128M
max_allowed_packet	= 128M
thread_stack		= 512K
thread_cache_size       = 32
myisam-recover         = BACKUP
max_connections        = 200
query_cache_limit	= 4M
query_cache_size        = 64M
expire_logs_days	= 10
max_binlog_size         = 100M
default-storage-engine=INNODB
innodb_data_file_path = mysql_innodb_data:20M:autoextend
set-variable = innodb_buffer_pool_size=128M
set-variable = innodb_additional_mem_pool_size=20M
set-variable = innodb_log_file_size=20M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
[mysqldump]
quick
quote-names
max_allowed_packet	= 64M
[mysql]
[isamchk]
key_buffer		= 16M
!includedir /etc/mysql/conf.d/

<note warning>A ce stade, le redemarrage de mysql ne va pas fonctionner. Il faut aller dans /var/lib/mysql et renommer les fichiers de logs ib_logfile* afin que de nouveaux soient crees en meme temps que le nouveau fichier data 'mysql_innodb_data' </note>

Apres redemarrage et recreation des fichiers de database et de log, le repertoire /var/lib/mysql contient les fichiers suivants:

helmut:/var/lib/mysql# ls -l
total 61520
-rw-r--r-- 1 root  root         0 déc.   1 18:59 debian-5.1.flag
-rw-rw---- 1 mysql mysql 20971520 déc.   1 22:48 ib_logfile0
-rw-rw---- 1 mysql mysql 20971520 déc.   1 22:48 ib_logfile1
drwxr-xr-x 2 mysql root      4096 déc.   1 18:59 mysql
-rw-rw---- 1 mysql mysql 20971520 déc.   1 22:48 mysql_innodb_data
-rw------- 1 root  root         6 déc.   1 18:59 mysql_upgrade_info

On voit bien trois fichiers de 20Mo. Quid des engines de mysql ?

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.1.37-2 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        | 
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         | 
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         | 
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         | 
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         | 
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       | 
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         | 
| MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0,00 sec)

La directive default-storage-engine=INNODB a fait son effet, innodb est bien le moteur par defaut de mysql.

Installation de Apache 2

Apache va être relié à Tomcat via un connecteur AJP/1.3. Bien que Tomcat ne soit pas encore en place, nous pouvons déjà installer et configurer ce connecteur.

apt-get install libapache2-mod-jk

Cela va également installer apache2 comme dépendance.

Paramétrer mod-jk dans /etc/libapache2-mod-jk/workers.properties comme suis:

workers.tomcat_home=/var/lib/tomcat6
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker

Il faut maintenant créer un fichier déclarant l'emplacement de ce fichier workers.properties. Nous allons le mettre dans /etc/apache2/mods-available:

helmut:/etc/apache2/mods-available# vim jk.conf

JkWorkersFile /etc/libapache2-mod-jk/workers.properties

et linker ce fichier dans mods-enabled:

helmut:/etc/apache2/mods-available# cd ../mods-enabled/

helmut:/etc/apache2/mods-enabled# ln -s ../mods-available/jk.conf .

Le connecteur Apache ira chercher tomcat sur 127.0.0.1:8009. Plus tard, il faudra s'assurer que Tomcat ouvre son connecteur AJP/1.3.

Activer mod_ssl

Mod_ssl n'est pas activé par défaut, il suffit de le linker dans mods-enabled depuis mods-available.

helmut:/etc/apache2# cd mods-enabled/

helmut:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.* .

La configuration par défaut dans ssl.conf convient, on pourra la customiser au besoin.

Les virtual hosts

Il y en a deux, un HTTPS et un HTTP.

Tout d'abord, le HTTPS dans /etc/apache2/sites-available/secure.

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        JkMount /share/* ajp13_worker
        JkMount /share   ajp13_worker

        JkMount /alfresco/* ajp13_worker
        JkMount /alfresco   ajp13_worker

        DocumentRoot /var/www/secure
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/secure>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        ErrorLog /var/log/apache2/secure-error.log
        LogLevel warn
        CustomLog /var/log/apache2/secure-access.log combined
        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

Il faut créer le répertoire /var/www/secure:

helmut:/# mkdir /var/www/secure/

helmut:/# chown www-data:www-data /var/www/secure/

Il faut ensuite linker le fichier de configuration de ce vhost dans /etc/apache2/sites-enabled/:

helmut:/etc/apache2/sites-available# cd ../sites-enabled/

helmut:/etc/apache2/sites-enabled# ln -s ../sites-available/secure .

helmut:/etc/apache2/sites-enabled# apache2ctl restart

Il est désormais possible de se connecter sur Helmut en https dans le docroot /var/www/secure. Il faut maintenant installer Tomcat et Alfresco avant de pouvoir accèder à https://helmut/share/ et https://helmut/alfresco/.

Concernant le vhost HTTP, on réalise simplement une redirection des connexions vers tomcat. Pas de connecteur AJP/1.3 ou autre, et accès limité à Share. C'est une connexion non sécurisé de secours pour les environnements qui bloquent le HTTPS.

helmut:/# grep -v "#" /etc/apache2/sites-available/default |grep -v "^$"
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/unsecure
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        ProxyRequests Off
        ProxyPass /share/ http://localhost:8080/share/
        ProxyPassReverse /share/ http://localhost:8080/share/
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>

helmut:/var/www# apache2ctl -t
Syntax OK

helmut:/var/www# apache2ctl restart

Le répertoire /var/www/unsecure contient un index.html de base qui affiche un logo. Rien de plus.

Installation Tomcat6

apt-get install tomcat6

Après la tartine de packages installés, on retrouve l'ensemble des fichiers de tomcat6 dans /var/lib/tomcat6. Certains répertoires sont linkés dans /etc et /usr/share/tomcat6.

<note tip>Par défaut, Debian localise les webapps dans /usr/share et crée un fichier dans /etc/tomcat6/Catalina/localhost/<webapp>.xml qui définit la localisation de la webapp. Voir l'exemple avec le package tomcat6-docs.</note>

En se connectant sur la page d'accueil à l'adresse http://helmut:8080, on a l'information suivante:

Tomcat is installed with CATALINA_HOME in 
/usr/share/tomcat6 and CATALINA_BASE in /var/lib/tomcat6

Désactiver le cache de Tomcat

Il faudra réactiver ce cache lors du passage en production, mais pendant la configuration il est préférable que ni Tomcat ni aucun autre composant ne mette de données en cache:

Dans /etc/tomcat6:

helmut:/etc/tomcat6# vim catalina.properties

#   
# String cache configuration.   
tomcat.util.buf.StringCache.byte.enabled=false  
tomcat.util.buf.StringCache.char.enabled=false

Puis redémarrez le serveur.

Remplacer OpenJDK par Sun JDK

OpenJDK n'est pas validé par Alfresco et pose des problèmes (entre autres, accès à Rhino). Il faut remplacer OpenJDK, installé par Debian par défaut, par Sun JDK.

Pour disposer de sun jdk dans apt, il faut rajoute les dépôts non-free au sources.list:

helmut:~# grep -v "#" /etc/apt/sources.list|grep -v "^$" 

deb http://ftp.fr.debian.org/debian/ squeeze main non-free  
deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free 
deb http://security.debian.org/ squeeze/updates main non-free  
deb-src http://security.debian.org/ squeeze/updates main non-free

réalisez un update et lancez l'installation

helmut:~# apt-get install sun-java6-jdk
helmut:~# apt-get remove openjdk-*

Puis jetons un coup d'oeil aux paramètres pas défaut de tomcat.

Configuration des paramètres par défaut

dans /etc/default/tomcat6

helmut:~# grep -v "#" /etc/default/tomcat6 |grep -v "^$" 
TOMCAT6_USER=tomcat6 
JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_BASE=/var/lib/tomcat6
JAVA_OPTS="-Djava.awt.headless=true -Xms2G -Xmx2G -Xss1024k -XX:NewSize=512m -XX:MaxPermSize=248m" 
JSP_COMPILER=jikes
TOMCAT6_SECURITY=no  
LOGFILE_DAYS=14
JVM_TMP=/tmp/tomcat6-temp

On démarre la JVM avec 2G de RAM alloués dés le démarrage et non extensibles !

<note warning>TOMCAT6_SECURITY a été désactivé par la directive TOMCAT6_SECURITY=no</note>

Installation du connecteur MySQL

apt-get install libmysql-java

Cela positionne le connecteur JDBC mysql dans /usr/share/java. On notera en passant que le répertoire /usr/share/tomcat6/lib contient des liens symboliques vers /usr/share/java. Il faut donc établir un lien pour le connecteur mysql comme suis :

helmut:/usr/share/tomcat6/lib# ln -s ../../java/mysql-connector-java-5.1.10.jar .

Installation de javamail

Récupérer la dernière version de javamail sur le site de sun : javamail.

Décompressez le fichier zip dans un répertoire temporaire et copiez le contenu du répertoire 'lib' dans les lib de tomcat, comme suis:

helmut:/tmp# unzip javamail-1.4.3.zip

helmut:/tmp/javamail-1.4.3# cd lib/

helmut:/tmp/javamail-1.4.3/lib# ls -l
total 528
-rw-r--r-- 1 root root  18073 nov.  17 12:13 dsn.jar
-rw-r--r-- 1 root root 172582 nov.  17 12:13 imap.jar
-rw-r--r-- 1 root root 250234 nov.  17 12:13 mailapi.jar
-rw-r--r-- 1 root root  36334 nov.  17 12:13 pop3.jar
-rw-r--r-- 1 root root  44993 nov.  17 12:13 smtp.jar

helmut:/tmp/javamail-1.4.3/lib# cp *.jar /usr/share/tomcat6/lib/

Redémarrer tomcat pour que les changements soit pris en compte.

Activation du connecteur AJP/1.3

Dans /etc/tomcat6/server.xml, décommenter la section autour du connecteur AJP/1.3 (environ ligne 90):

     89     <!-- Define an AJP 1.3 Connector on port 8009 -->
     90     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Déploiement d'Alfresco

On rentre dans le sujet du déploiement de la WebApp Alfresco.

Configuration MySQL

On va créer une base de données pour alfresco via les commandes suivantes :

create database alfresco default character set utf8;
grant all on alfresco.* to 'alfresco'@'localhost' identified by 'totomotdepassedelamort' with grant option;

à mettre dans un fichier db_setup.sql et à lancer via la commande suivante:

# mysql -u root -p < db_setup.sql

Alfresco s'occupera de créer les tables lors du lancement de la webapp.

Il faut ensuite reporter le user et mot de passe de connection à la base dans les extensions d'Alfresco.

Installation des extensions

Récupération de l'archive alfresco-community-sample-extensions-3.2r2.tar.gz et décompressions dans /var/lib/tomcat6/shared/classes/

helmut:/var/lib/tomcat6/shared/classes# tar-xzvf/home/julien/alfresco-community-sample-extensions-3.2r2.tar.gz
alfresco/
alfresco/extension/
alfresco/extension/bootstrap/
alfresco/extension/mt/
alfresco/extension/asynchronous-avm-indexing-context.xml.sample
alfresco/extension/benchmark-override-context.xml.sample
alfresco/extension/bm-remote-loader-context.xml.sample
alfresco/extension/bootstrap/split-person-cleanup-context.xml.sample
alfresco/extension/content-expiration-debug-context.xml.sample
alfresco/extension/custom-email-server.sample.zip
alfresco/extension/custom-metadata-extrators-context.xml.sample
alfresco/extension/custom-model-context.xml.sample
alfresco/extension/customModel.xml.sample
alfresco/extension/deployment-attempt-cleaner-context.xml.sample
alfresco/extension/disabled-avm-indexing-context.xml.sample
alfresco/extension/ehcache-custom.xml.sample.cluster
alfresco/extension/example-model-context.xml.sample
alfresco/extension/exampleModel.xml.sample
alfresco/extension/file-servers-custom.xml.sample
alfresco/extension/file-servers-custom.xml.sample2
alfresco/extension/index-recovery-context.xml.sample
alfresco/extension/index-tracking-context.xml.sample
alfresco/extension/language-specific-index-and-search-context.xml.sample
alfresco/extension/lifecycle-messages.properties.sample
alfresco/extension/lifecycle-workflow-context.xml.sample
alfresco/extension/lifecycleModel.xml.sample
alfresco/extension/lifecycle_processdefinition.xml.sample
alfresco/extension/mimetype-map-extension.xml.sample
alfresco/extension/mimetypes-extension.xml.sample
alfresco/extension/mt/mt-admin-context.xml.sample
alfresco/extension/mt/mt-contentstore-context.xml.sample
alfresco/extension/mt/mt-context.xml.sample
alfresco/extension/network-protocol-context.xml.sample
alfresco/extension/remote-openoffice-context.xml.sample
alfresco/extension/replicating-content-services-context.xml.sample
alfresco/extension/restore-context.xml.sample
alfresco/extension/scheduled-action-services-context.xml.sample
alfresco/extension/unsecured-public-services-security-context.xml.sample
alfresco/extension/wcm-xml-metadata-extracter-context.xml.sample
alfresco/extension/workflow-context.xml.sample

Plus tard, on utilisera ces extensions pour surcharger les paramètres par défaut d'Alfresco.

Installation de l'archive alfresco-community-war-3.2r2.tar.gz

Récupérer alfresco-community-war-3.2r2.tar.gz et décompresser l'archive dans un répertoire temporaire (disons /home/julien/alfrescofiles/):

L'archive contient les fichiers suivants :

helmut:/home/julien/alfrescofiles# ls -l  
total 102652
-rw-r--r-- 1 julien julien 75982021 nov.  12 17:49 alfresco.war   
drwxr-xr-x 2 julien julien     4096 déc.   2 11:23 commands
drwxr-xr-x 2 julien julien     4096 déc.   2 11:17 endorsed
drwxr-xr-x 5 julien julien     4096 déc.   2 11:17 extensions    
drwxr-xr-x 3 julien julien     4096 déc.   2 11:17 extras  
drwxr-xr-x 3 julien julien     4096 oct.  30 17:08 licenses 
-rw-r--r-- 1 julien julien 10766620 nov.  12 17:52 mobile.war     
-rw-r--r-- 1 julien julien      543 oct.  30 17:08 README.txt     
-rw-r--r-- 1 julien julien 18209351 nov.  12 17:52 share.war

Copier les fichiers war dans le répertoire webapps de tomcat:

helmut:/home/julien/alfrescofiles# cp *.war /var/lib/tomcat6/webapps/   

helmut:/home/julien/alfrescofiles# ls -l /var/lib/tomcat6/webapps/
total 102636
drwxr-xr-x 14 tomcat6 tomcat6     4096 déc.   2 11:53 alfresco   
-rw-r--r--  1 root    root    75982021 déc.   2 11:53 alfresco.war     
drwxr-xr-x 11 tomcat6 tomcat6     4096 déc.   2 11:53 mobile     
-rw-r--r--  1 root    root    10766620 déc.   2 11:53 mobile.war 
drwxr-xr-x  3 root    root        4096 déc.   2 10:04 ROOT 
-rw-r--r--  1 root    root    18209351 déc.   2 11:53 share.war

Les fichiers WAR sont déployés automatiquement par tomcat (à chaud).

Aller dans /var/lib/tomcat6 et copier le fichier global de configuration:

helmut:/home/julien/alfrescofiles# cd /var/lib/tomcat6/
helmut:/var/lib/tomcat6# cp webapps/alfresco/WEB-INF/classes/alfresco-global.properties.sample shared/classes/alfresco-global.properties

Ce fichier sera chargé en dernier par Alfresco et surchargera donc tous les autres paramètres de configuration.

Dans alfresco-global.properties, on va définir l'ensemble des paramètres de l'architecture: serveur de base de données, répertoire de stockage des données, etc…

Le fichier est le suivant:

helmut:/var/lib/tomcat6/shared/classes# grep -v "#" alfresco-global.properties |grep -v "^$"    

dir.root=/var/lib/alfresco/alf_data 

db.username=alfresco    
db.password=totomotdepassedelamort

db.schema.update=true   

db.url=jdbc:mysql://localhost/alfresco
hibernate.dialect=org.hibernate.dialect.MySQL.InnoDBDialect

Il faut créer les répertoires de données pour Alfresco et les attribuer à l'utilisateur tomcat6:

helmut:/# cd /var/lib
helmut:/var/lib# mkdir alfresco
helmut:/var/lib# mkdir alfresco/alf_data
helmut:/var/lib# chown tomcat6:adm alfresco/ -R

Modifier le fichier de log alfresco

dans /var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/log4j.properties, il faut modifier la ligne qui définit le fichier de sortie des logs alfresco:

helmut:/# vim /var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/log4j.properties

log4j.appender.File.File=/var/log/tomcat6/alfresco.log

Installer et linker la librairie log4j

helmut:/# apt-get install liblog4j1.2-java

helmut:/# ln -s /usr/share/java/log4j-1.2-1.2.15.jar /usr/share/tomcat6/lib/

Ajouter le support de la conversion des images

Alfresco se base sur 'convert', le binaire de conversion des images du package imagemagick.

apt-get install imagemagick

Il faut renseigner l'emplacement de convert dans /var/lib/tomcat6/shared/classes/alfresco-global.properties :

helmut:/# grep convert /var/lib/tomcat6/shared/classes/alfresco-global.properties

img.exe=/usr/bin/convert

Ajouter le support de la conversion PDF vers SWF

Pour visualiser les preview de documents PDF dans alfresco share, il faut fournir à Alfresco le chemin du binaire pdf2swf pdf2swf.tar.

Placez le binaire détaré dans /usr/bin et éditez alfresco-global.properties comme suis:

helmut:/# grep pdf2swf /var/lib/tomcat6/shared/classes/alfresco-global.properties

swf.exe=/usr/bin/pdf2swf

Puis installez la bibliothèque 'libgif'

# apt-get install libgif-dev

Installation du serveur OpenOffice

apt-get install openoffice.org-headless openoffice.org-java-common openoffice.org

Après l'installation, le service peut être lancé par root via la commande suivante:

/usr/lib/openoffice/program/soffice.bin -accept="socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo 
-headless -nofirststartwizard -nocrashrep -norestore -env:UserInstallation=file:///tmp/oouser

Pas besoin de lancer open office à la main, Alfresco se chargera de le faire au lancement de la webapp via deux paramètres:

  1. Le binaire 'soffice' est référencé dans /var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/alfresco/repository.properties
  2. La ligne de démarrage '-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager' est référencée dans /var/lib/tomcat6/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/thirdparty/default/openoffice-transform-context.xml

Le service, une fois lancé manuellement ou par Alfresco, écoute sur le port 8100 en tcp.

helmut:~## netstat -tpan |grep 8100                                              
tcp        0      0 127.0.0.1:8100          0.0.0.0:*               LISTEN      9566/soffice.bin
tcp        0      0 127.0.0.1:8100          127.0.0.1:49872         ESTABLISHED 9566/soffice.bin
tcp6       0      0 127.0.0.1:49872         127.0.0.1:8100          ESTABLISHED 9469/jsvc

On voit bien le port en écoute sur localhost et les connexions avec Alfresco (lancé par tomcat dans jsvc).

Ajaxterm

Je le met à la fin car c'est un peu du bonus. Ajaxterm est une interface à SSH en Ajax, et donc utilisable via une page web. L'objectif ici est d'installer Ajaxterm pour qu'il soit accessible via le vhost secure de apache avec un certificat SSL client pour en limiter l'accès au maximum.

apt-get install  ajaxterm

Ajaxterm va écouter en HTTP sur le port 8022. On va donc demander à Apache de relayer les requêtes vers https://helmut/t3rm/ vers ce port:

Dans /etc/apache2/sites-available/secure, on ajoute les lignes suivantes:

        <Proxy *>
                Order deny,allow
                Allow from all

                SSLVerifyClient Require
                SSLVerifyDepth 3
                SSLRequire %{SSL_CLIENT_S_DN_O} eq "Helmut"
        </Proxy>

        ProxyRequests Off
        ProxyPass /t3rm/ http://localhost:8022/
        ProxyPassReverse /t3rm/ http://localhost:8022/

Il faut également activer les modules proxy et proxy_http.

helmut:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy_http.load .

helmut:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.load .

Ainsi, seuls les utilisateurs munis d'un certificat SSL appartement à l'organisation “Helmut” pourront établir une connexion au terminal ajaxterm. Les autres auront une erreur d'établissement de la connection.

Netfilter & QoS

Les règles de firewall et de QoS sont positionnées dans /etc/init.d/netfilter_rules.sh avec un lien symbolique dans /etc/rc2.d/S05NetfilterRules pour les lancer au démarrage.

TCgraph

apt-get install rrdtool librrds-perl libproc-daemon-perl

Récupérer le package tcgraph et positionner les fichiers comme suis:

  • tcparsestat.pl dans /sbin/, modifier le script pour éditer les chemin de tcgraph.rrd et tcgraph.log et modifier les classlist
  • placer tcgraph.cgi dans /var/www/secure/ et modifier le “sub graph”
  • placer tcparsestat dans /etc/init.d et faire un lien symbolique dans /etc/rc2.d/S25tcparsestat

Modifier createrrd.sh pour qu'il corresponde à la politique de QoS en place, puis exécuter le pour créer tcgraph.rrd dans /var/www/secure/tcgraph.rrd

Démarrer tcparsestat

helmut:/var/www/secure/tcgraph# /etc/init.d/tcparsestat start
Starting trafic control graphing tool: tcparsestat.pl.

Le fichier /var/www/secure/tcgraph/tcgraph.log contient les entrées dans un format lisible. Quand aucune valeur n'existe, un “U” est enregistré. Vérifiez que vos règles de QoS sont lancés si rien de n'affiche.

Activer le CGI pour TCgraph

Pour afficher les graph, il faut qu'apache autorise les CGI dans le répertoire tcgraph. Dans /etc/apache2/sites-available/secure :

        <Directory /var/www/secure/tcgraph/>
                AllowOverride None

                AddHandler cgi-script .cgi
                AddType application/x-httpd-cgi .cgi

                Options +ExecCGI -MultiViews
                Order allow,deny
                Allow from all
        </Directory>

Il faut également activer le mod_cgi pour apache. mod_cgi est fournit dans la distribution par défaut, il suffit donc d'un simple:

helmut:/etc/apache2/mods-enabled# ln -s ../mods-available/cgi.load .

helmut:/etc/apache2/mods-enabled# apache2ctl restart

Et la page https://helmut/tcgraph/tcgraph.cgi présentera les graphs réseau.

PKI

On va créer une autorité de certificats dans /root/CA. Il faut disposer d'un fichier de configuration openssl.cnf (non détaillé ici).

Création de l'autorité

tout d'abord, créer la clé privée et le certificat public de l'autorité:

helmut:~/CA# openssl req -new -x509 -config ca-openssl.cnf -extensions v3_ca -nodes -keyout ca.key -out ca.crt -days 7300

helmut:~/CA# ls -l
total 12
-rw------- 1 julien adm  3390 déc.  16 10:20 ca-openssl.cnf
-rw------- 1 root   root 1651 déc.  16 10:28 ca.crt
-rw------- 1 root   root 1675 déc.  16 10:28 ca.key

Ensuite, créer les répertoires et fichiers nécessaires à la vie de l'autorité:

helmut:~/CA# mkdir certs
helmut:~/CA# mkdir crl
helmut:~/CA# mkdir newcerts
helmut:~/CA# touch index.txt
helmut:~/CA# echo "01" > serial
helmut:~/CA# dd if=/dev/random of=random bs=4 count=256

Génération automatique de la CRL

La liste de révocation des certificats peut être générées via la commande :

elmut:~/CA# openssl ca -config /root/CA/ca-openssl.cnf -gencrl -out /var/www/secure/ca/revocation-ca.crl

Using configuration from /root/CA/ca-openssl.cnf

helmut:~/CA# ls /var/www/secure/ca/
revocation-ca.crl

En plaçant la CRL dans /var/www/secure/ca, on pourra y accèder via l'adresse https://helmut/ca/revocation-ca.crl

Pour automatiser, rentrer cette commande dans un script dans cron.daily:

helmut:~# cat /etc/cron.daily/gencrl

#! /bin/sh
openssl ca -config /root/CA/ca-openssl.cnf -gencrl -out /var/www/secure/ca/revocation-ca.crl 2>&1 1>/dev/null

Un certificat serveur pour Apache

On génère tout d'abord une clé privée et une CSR (Certificate Signature Request):

helmut:~/CA# mkdir certs/www.helmut

helmut:~/CA# openssl req -new -config ca-openssl.cnf -nodes -keyout certs/www.helmut/www.helmut.key -out request_cert_www.helmut.csr

Puis on utilise la CSR pour générer le certificat signé:

helmut:~/CA# openssl ca -config ca-openssl.cnf -extensions server_cert -in request_cert_www.helmut.csr -out certs/www.helmut/www.helmut.crt

La CSR peut être supprimées. Les fichiers www.helmut.key et www.helmut.crt peuvent être utilisés dans le vhost secure de Apache comme suis:

helmut:~# grep SSL /etc/apache2/sites-available/secure |grep -v "#"
        SSLEngine on
        SSLCertificateFile    /etc/apache2/certs/www.helmut/www.helmut.crt
        SSLCertificateKeyFile /etc/apache2/certs/www.helmut/www.helmut.key
        SSLCACertificateFile /etc/apache2/certs/ca.crt
        SSLCARevocationFile /var/www/secure/ca/revocation-ca.crl
fr/ressources/dossiers/alfresco/installation.txt · Last modified: 2024/04/17 10:19 by 127.0.0.1