Blog Pro de Jean-Baptiste HEREN - Tag - debian
Notes d'un consultant Freelance en Informatique
2015-11-03T21:34:19+01:00
JB HEREN
urn:md5:e39389b5ec134d99645112fce3d957df
Dotclear
Installer JasperServer sur Linux Debian
urn:md5:0216bd919fd11a4ba3897f249d0f36fc
2011-01-15T12:15:00+01:00
2011-01-17T11:46:27+01:00
Jean-Baptiste Heren
Décisionnel
Business IntelligenceConsultant décisionneldebianJasperlinux
<p>JasperServer est la solution open source de BI & reporting la plus aboutie à ce jour. Cette solution comprend l'ensemble des outils nécessaire à la mise en place d'une solution décisionnelle professionnelle.</p>
<p>Nous allons voir ici quelles sont les étapes pour installer jasper server manuellement. Ceci est utile en particulier si vous disposez déjà d'un mysql et/ou d'un tomcat installés sur votre machine.</p>
<h2>1- Téléchargement du paquet "JasperServer WAR install"</h2>
<p>Ce paquet contient le portail Jasper, mysql et l'outil de développement de rapports.
rendez-vous chez <a href="http://jasperforge.org/projects/jasperserver" hreflang="en">jasperForge</a> ou directement sur <a href="http://sourceforge.net/projects/jasperserver/files/JasperServer/" hreflang="en">sourceforge</a>.</p>
<p>Connectez vous en tant qu'administrateur (root)</p>
<pre>[script]
# unzip ./jasperserver-ce-3.7.1.bin.zip
# cd jasperserver-ce-3.7.1.bin/
# ls
apache-ant jasperserver.war samples
buildomatic license.txt scripts
docs releaseNotes.txt Third-Party-Notices.pdf
</pre>
<h2>2- Installation du serveur d'application Web</h2>
<p>Ici nous installerons Tomcat5, il est également possible de réaliser l'installation avec JBoss, par exemple.</p>
<pre>[script]
# apt-get install sun-java6-jdk tomcat5.5 tomcat5.5-admin tomcat5.5-webapps
</pre>
<p>Si l'installation s'est bien déroulée, une connexion du navigateur web à l'adresse http://localhost:8180/ devrait vous afficher ceci :
<a href="http://blog.jbheren.com/public/Decisionnel/jasperserver/01_-_tomcat_home.png" title="01_-_tomcat_home.png"><img src="http://blog.jbheren.com/public/Decisionnel/jasperserver/.01_-_tomcat_home_m.jpg" alt="01_-_tomcat_home.png" title="01_-_tomcat_home.png, janv. 2011" /></a></p>
<p>Il nous faut maintenant configurer un compte admin pour tomcat</p>
<pre>[script]
# vim /var/lib/tomcat5.5/conf/tomcat-users.xml
</pre>
<p>Modifiez le mot de passe par défaut de tomcat et ajoutez les rôles admin & manager.</p>
<pre>[xml]
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat,admin,manager"/>
</tomcat-users>
</pre>
<p>Modifier les paramètres de la VM pour jasperserver. En effet, les paramètres par défaut ne sont pas suffisants...</p>
<pre>[script]
# vim /usr/share/tomcat5.5/bin/setclasspath.sh
</pre>
<p>Puis on ajoute la variable JAVA_OPTS, juste aprés le JAVA_ENDORSED_DIRS.</p>
<pre>[script]
# Set the default -Djava.endorsed.dirs argument
JAVA_ENDORSED_DIRS="$BASEDIR"/common/endorsed
# JBH - Parameters for JasperServer to work fine
export JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512m -XX:PermSize=32m -XX:MaxPermSize=128m -Xss2m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
</pre>
<p>Copier le connecteur jdbc mysql depuis le dossier d'installation</p>
<pre>[scripts]
cp scripts/drivers/mysql/jdbc/mysql-connector-java-5.1.10.jar /usr/share/tomcat5.5/common/lib/
</pre>
<p>Redémarrer le server afin de prendre en compte nos modifications</p>
<pre>[script]
# /etc/init.d/tomcat5.5 restart
Stopping Tomcat servlet engine: tomcat5.5.
Starting Tomcat servlet engine: tomcat5.5.
</pre>
<p>Nous pouvons maintenant nous connecter au manager Tomcat en utilisant les login/pass de l'utilisateur tomcat. Pour cela, rendez-vous à l'adresse http://localhost:8180/manager/html
<a href="http://blog.jbheren.com/public/Decisionnel/jasperserver/02_-_tomcat_manager.png" title="02_-_tomcat_manager.png"><img src="http://blog.jbheren.com/public/Decisionnel/jasperserver/.02_-_tomcat_manager_m.jpg" alt="02_-_tomcat_manager.png" title="02_-_tomcat_manager.png, janv. 2011" /></a></p>
<h2>3- préparation de mysql avec buildomatic</h2>
<pre>[script]
# cd buildomatic
# cp sample_conf/inst-mysql_master.properties default_master.properties
# /etc/init.d/tomcat stop
# vim default_master.properties
</pre>
<p>Changes configuration values to :</p>
<pre>[script]
# application server type (default is tomcat6)
appServerType = tomcat5
# Tomcat app server root dir
appServerDir = /var/lib/tomcat5.5/
# database type
dbType=mysql
# database location and connection settings
dbHost=localhost
dbUsername=root
dbPassword=password #set your own password
</pre>
<p>Nous allons maintenant regénérer les paramètres de buildomatic.</p>
<pre>[script]
./js-ant clean-config
./js-ant gen-config
</pre>
<p>Nous allons maintenant exécuter les tâches de création de la base jasperserver</p>
<pre>[script]
debianlamp:/home/jb/jasper/jasperserver-ce-3.7.1-bin/buildomatic# ./js-ant create-js-db
Buildfile: build.xml
create-js-db:
[echo] create database, js.dbName = jasperserver
[sql] Executing commands
[sql] 1 rows affected
[sql] 1 of 1 SQL statements executed successfully
BUILD SUCCESSFUL
Total time: 3 seconds
</pre>
<p>Les commandes suivantes créent le paramêtrage par défaut (users)</p>
<pre>[script]
# ./js-ant init-js-db-ce
# ./js-ant import-minimal-ce
</pre>
<p>En option, la création et le chargement des bases de démonstration</p>
<pre>[script]
# ./js-ant create-sugarcrm-db
# ./js-ant create-foodmart-db
# ./js-ant load-sugarcrm-db
# ./js-ant load-foodmart-db
# ./js-ant update-foodmart-db
# ./js-ant import-sample-data-ce
</pre>
<p>Puis le déploiement vers tomcat (le serveur doit être inactif).</p>
<pre>[script]
# ./js-ant deploy-webapp-ce
Buildfile: build.xml
init-source-paths:
[echo]
[echo] Property values (in dev.xml: init-source-paths):
[echo] js-path = ${js-base-path}
[echo] js-pro-path = ${js-pro-base-path}
[echo] repo-path = ${repo-path}
[echo]
set-ce-webapp-name:
[copy] Copying 1 file to /home/jb/jasper/jasperserver-ce-3.7.1-bin/buildomatic/build_conf/default
[copy] Copying 1 file to /home/jb/jasper/jasperserver-ce-3.7.1-bin/buildomatic/build_conf/default/webapp/WEB-INF
deploy-jdbc-jar:
[copy] Copying 1 file to /var/lib/tomcat5.5/common/lib
deploy-webapp:
[echo]
[echo] Property values (in install.xml: deploy-webapp):
[echo] jsEdition = ce
[echo] warFileDistSourceDir = /home/jb/jasper/jasperserver-ce-3.7.1-bin/buildomatic/../jasperserver.war
[echo] warTargetDir = /var/lib/tomcat5.5/webapps/jasperserver
[echo] webAppName = jasperserver
[echo] webAppNameCE = jasperserver
[echo] webAppNamePro = jasperserver-pro
[echo] webAppNameSrc = jasperserver
[echo] webAppNameDel = jasperserver
[echo] warTargetDirDel = /var/lib/tomcat5.5/webapps/jasperserver
[echo]
[copy] Copying 1013 resources to /var/lib/tomcat5.5/webapps/jasperserver
[copy] Copying 4 files to /var/lib/tomcat5.5/webapps/jasperserver
[delete] Deleting directory /var/lib/tomcat5.5/work/Catalina/localhost/jasperserver
deploy-webapp-ce:
BUILD SUCCESSFUL
Total time: 25 seconds
</pre>
<h3>Réglages de Tomcat</h3>
<p>Lien symbolique vers la config de jasperserver dans /etc</p>
<pre>[script]
cd /etc/tomcat5.5/Catalina/localhost
ln -s /usr/share/tomcat5.5/webapps/jasperserver/META-INF/context.xml ./jasperserver.xml
</pre>
<p>Ajout des policies pour jasperserver</p>
<pre>[script]
# vi /etc/tomcat5.5/policy.d/04webapps.policy
</pre>
<p>On ajoute la partie suivante dans la section <em>grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {</em></p>
<pre>[script]
permission java.io.FilePermission "/usr/share/tomcat5.5/webapps/jasperserver/WEB-INF/classes/logging.properties", "read";
//
Il faut editer ensuite le fichier
///[script]
# vi /etc/tomcat5.5/policy.d/50user.policy
</pre>
<p>Ajouter la définition suivante :</p>
<pre>[script]
grant codeBase "file:/usr/share/tomcat5.5/webapps/jasperserver/-" {
permission java.security.AllPermission;
};
</pre>
<p>Mise en place des logs dans le dossier /var/log/tomcat5.5/</p>
<pre>[scripts]
vim /var/lib/tomcat5.5/webapps/jasperserver/WEB-INF/log4j.properties
</pre>
<pre>[sript]
...
log4j.appender.fileout.File=/var/log/tomcat5.5/jasperserver.log
...
log4j.appender.jasperanalysis.File=/var/log/tomcat5.5/jasperanalysis.log
</pre>
<h2>4- Démarrage de JasperServer</h2>
<p>Nous pouvons maintenant démarrer tomcat</p>
<pre>[script]
# /etc/init.d/tomcat5.5 start
</pre>
<p>Puis nous connecter à jasperserver à l'adresse http://localhost:8180/jasperserver/, si tout s'est bien passé, vous devriez voir la fenêtre de connexion.
<a href="http://blog.jbheren.com/public/Decisionnel/jasperserver/03_-_jasperserver_Home.png" title="03_-_jasperserver_Home.png"><img src="http://blog.jbheren.com/public/Decisionnel/jasperserver/.03_-_jasperserver_Home_m.jpg" alt="03_-_jasperserver_Home.png" title="03_-_jasperserver_Home.png, janv. 2011" /></a></p>
<p>les login par défaut de l'administrateur sont jasperadmin/jasperadmin.</p>
<h2>Problèmes éventuels</h2>
<p>Si l'application n'a pas démarré, vous pouvez consulter, en autres la log jasperserver configurée plus haut:</p>
<pre>[script]
cat /var/log/tomcat5.5/jasperserver.log
</pre>
<h3>Problèmes de sécurité dans les logs Cantala.</h3>
<p>Sous Debian, TOMCAT peut poser un problème de sécurité, même aprés l'ajout des policies plus haut, il est possible qu'un problème subsiste.
Si c'est le cas, vous pouvez désactiver le JSM (Java Security Manager) en modifiant la valeur TOMCAT5_SECURITY dans le fichier suivant :</p>
<pre>[script]
# vim /etc/default/tomcat5.5
</pre>
<p>Modifiez la valeur du TOMCAT5_SECURITY comme suit :</p>
<pre>[script]
# Use the Java security manager? (yes/no, default: yes)
# WARNING: Do not disable the security manager unless you understand
# the consequences!
# NOTE: java-gcj-compat-dev currently doesn't support a security
# manager.
TOMCAT5_SECURITY=no
</pre>
Installer Debian Lenny x64 en RAID Logiciel
urn:md5:13777ee7abe834c39e281e9bb1c91e8e
2010-05-30T13:33:00+02:00
2010-06-01T12:33:54+02:00
Jean-Baptiste Heren
Linux
debianlinuxRAID
<p>L'installation sur des disques configurés en RAID1 offre les avantages
suivants : </p>
<ul>
<li>Les données sont intégralement reproduites sur deux disques (miroir)</li>
<li>Cela permet en cas d'avarie dur un disque, de conserver un système
fonctionnel</li>
<li>Il est aisé de remplacer un disque défectueux </li>
</ul>
<h1>Installation d'une debian 5.04 en RAID.</h1>
<p>Après avoir récupéré une image disque depuis http://www.debian.org, préparé
la machine avec au moins deux disques de capacité équivalente, on démarre.</p>
<p>L'installateur nous demande de sélectionner une langue, une zone
géographique, un nom d'hôte.</p>
<div><object type="application/x-shockwave-flash" style="width:480px; height:385px;" data="http://www.youtube.com/v/5dAZxXK3igk?rel=0&showsearch=0&fs=1"><param name="movie" value="http://www.youtube.com/v/5dAZxXK3igk?rel=0&showsearch=0&fs=1" />
<param name="allowFullScreen" value="true" /></object>
<div style="font-size: 0.8em"></div>
</div> <div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<p><span class="Apple-style-span" style="font-size: 18px; font-weight: bold;">1- Préparation des disques pour le
RAID</span></p>
<p>Nous allons créer trois partitions gérées en RAID : </p>
<ul>
<li>/boot : contenant le noyau, démarré par le gestionnaire de boot GRUB</li>
<li>/ : Le root contient l'ensemble des données système</li>
<li>swap</li>
</ul>
<p><strong>Il faudra avoir exactement les mêmes tailles de partitions sur les
deux disques.</strong></p>
<p>Pour le partitionnement des disques, nous choisirons donc l'option
"Manuel".</p>
<p>Nous allons créer deux partitions sur chaque disque : </p>
<ul>
<li>la première pour le boot, 512M</li>
<li>le Root : 10G</li>
</ul>
<div>Voici quelques copies d'écran illustrant les étapes de cette
opération.</div>
<a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox.png, mai 2010" /></a></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_2.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_2_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_2.png, mai 2010" /></a></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_3.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_3_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_3.png, mai 2010" /></a></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_4.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_4_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_4.png, mai 2010" /></a></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_5.png" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_5.png, mai 2010" /></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_6.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_6_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_6.png, mai 2010" /></a></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_7.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_7_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_7.png, mai 2010" /></a></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_9.png"><img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_9_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_9.png, mai 2010" /></a></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><br /></span></div>
<h3>Voici ce que nous devrions obtenir à la fin de cette étape :</h3>
<div style="color: rgb(0, 0, 0); background-color: rgb(249, 249, 249); border-style: none;">
<span class="Apple-style-span" style="text-decoration: underline;"><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_10.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_10_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_10.png, mai 2010" /></a><br /></span>
<h2>2- Configuration dur RAID Logiciel</h2>
<div>Nous allons ici créer deux périphériques multidisque. Il s'agit de
regrouper chacune de nos partitions identiques sur nos disques afin de créer un
disque RAID.</div>
<div>Ces périphériques pourront être utilisés soit directement pour créer des
partitions, soit pour monter des volumes physiques LVM.</div>
<div>Voici quelques images illustrant les différentes étapes : </div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_10.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_10_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_10.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_11.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_11_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_11.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_12.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_12_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_12.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_13.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_13_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_13.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_14.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_14_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_14.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_15.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_15_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_15.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_16.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_16_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_16.png, mai 2010" /></a></div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_17.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_17_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_17.png, mai 2010" /></a></div>
<h3>Et voici le résultat attendu à cette étape: </h3>
<div>Nous avons Maintenant deux périphériques RAID, exploitables comme s'il
s'agissait de disques physiques, et sur lesquels nous pouvons créer nos
partitions.</div>
<div><a href="http://blog.jbheren.com/public/tuto/debian_RAID/debian_64_RAID__en_fonction__-_Sun_VirtualBox_18.png">
<img src="http://blog.jbheren.com/public/tuto/debian_RAID/.debian_64_RAID__en_fonction__-_Sun_VirtualBox_18_m.jpg" alt="" title="debian_64_RAID__en_fonction__-_Sun_VirtualBox_18.png, mai 2010" /></a></div>
<div>
<h2>3- Création des partitions</h2>
<div>Il ne nous reste donc plus qu'à attribuer nos périphériques RAID à un
usage habituel (ext3 ou swap), de préciser les points de montage, puis de
poursuivre notre installation de manière classique !</div>
<div>Sources :</div>
<div>http://dev.jerryweb.org/raid-fr/</div>
<div>http://www.supinfo-projects.com/fr/2005/lvm%5Fraid%5Flinux/2/</div>
</div>
</div>
Build & use mod_auth_user_dir on debian 5.0 Lenny
urn:md5:50d34fc1b85c47db3e6b315260e95613
2010-04-02T12:34:00+02:00
2010-05-30T20:51:29+02:00
Jean-Baptiste Heren
Linux
apachedebiandéveloppement weblinuxwebDAV
<p>In the need of a WebDAV functionnality that could allow one to share users
personal directories with automated authentification, i found an apache module,
auth_user_dir, that looked fine to me on <span class="Apple-style-span" style="line-height: 18px; white-space: pre;"><a href="http://www.genos.org">http://www.genos.org</a> :</span></p>
<blockquote>
<p style="line-height: 1.5em;">You can create private user folders using the
WebDAV protocol. Users will have only permissions to access to their own
directory. Without this module, a htaccess file must be created inside every
user folder. This is completely unmanageable when the number of users is
big.</p>
<p style="line-height: 1.5em;">We can build a file server accessible from
Windows and Linux using the WebDAV protocol and a web server like Apache.
Because the protocol is build upon HTTP, the server uses ports TCP 80 (HTTP)
and TCP 443 (HTTPS). These ports are commonly open in firewalls without any
other special requirement.</p>
</blockquote>
<p><span class="Apple-style-span" style="line-height: 18px; white-space: pre;"><span class="Apple-style-span" style="line-height: normal; white-space: normal;">The module appears to have been
developed in 2004 an <a href="http://matt.colyer.name/projects/mod_auth_user_dir.html">attached
tutorial</a> was referring to some patches that no longer exist. So here
is explained the way I managed to build this module on debian in 2010. I also
found some tricks to make the mysql authentication work. This is a little crap
but <strong>it worked</strong> !</span></span></p> <div style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background- border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border- background-position: initial initial;">
<h2><strong>Prerequisites</strong></h2>
<h4>first install the needed dev packages if those are not already on your
system</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> apt-get install apache2
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> apache2-threaded-dev
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libtool
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libltdl3
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libltdl3-dev
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> automake
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> make
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libapache2-mod-auth-mysql
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libapache2-mod-ldap-userdir
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libapr1
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"> libapr1-dev
\</span></p>
<h2>Get the module source code (or take the ready to make <a href="http://blog.jbheren.com/public/tuto/mod_auth_user_dir/mod_auth_user_dir.tar.bz2"><span style="font: normal normal normal 18px/normal 'Lucida Grande';"><span class="Apple-style-span" style="text-decoration: none;"><strong>attached
file</strong></span></span></a>)</h2>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> cd /root</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> mkdir src</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> cd src</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'; color: #1e00af">
<span style="letter-spacing: 0.0px color: #000000"><strong>#</strong> wget
<a href="http://www.genos.org/downloads/mod_authuserdir-1.0.tgz"><span style="text-decoration: underline ; letter-spacing: 0.0px">http://www.genos.org/downloads/mod_authuserdir-1.0.tgz</span></a></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> tar -xzvf
mod_authuserdir-1.0.tgz</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> cd
mod_auth_user_dir/</span></p>
<h4>Then download the replacement files attached or patch </h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> patch -p1 <
Makefile.am.diff</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> patch -p1 <
configure.in.diff</span></p>
<h2>build the module</h2>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> aclocal</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> autoconf</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> automake -a</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> ./configure
--with-apache=/usr/include/apache2</span></p>
<h2>Install the module</h2>
<h4>Build and install library</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> apxs2 -i -a -n
auth_user_dir libmod_auth_user_dir.la</span></p>
<h4>Create the needed file for activation of this module in apache2, the debian
way</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> echo 'LoadModule
mod_auth_user_module /usr/lib/apache2/modules/libmod_auth_user_dir.so'
\</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">>
/etc/apache2/mods-available/auth_user_dir.load</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">Enable the needed modules</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> a2enmod
auth_mysql</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> a2enmod dav</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> a2enmod
dav_fs</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> a2enmod
auth_user_dir</span></p>
<h4>Create database and tables for mysql_auth . (Here we assume you already
have mysql running)</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> mysqladmin -uroot -p
create davusers</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> mysql -uroot -p
davusers</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">mysql> CREATE TABLE users (</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> user_name CHAR(30) NOT
NULL,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> user_passwd CHAR(20) NOT
NULL,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> user_group CHAR(10),</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> PRIMARY KEY
(user_name)</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> );</span></p>
<h4>Add one user to database</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> INSERT INTO
`davusers`.`user_info` (</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> `user_name` ,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> `user_passwd` ,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> `user_group`</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> ) VALUES (</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> 'test', 'test',
''</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">> );</span></p>
<h4>Create folder for DAV & users subfolders</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Courier New'">
<span style="letter-spacing: 0.0px"># mkdir /var/davshare</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Courier New'">
<span style="letter-spacing: 0.0px"># mkdir /var/davshare/test</span></p>
<h2>Change apache virtualhost configuration</h2>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">Add the following directory to your
virtualhost conf file</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">Alias /webdav /var/davshare</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><Location /webdav></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"># Activate DAV module on this
location</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">DAV On</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"># Specific auth_user_Dir
Parameter</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong> AuthUserDirRoot
"/var/davsharev"</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"># auth_mysql parameters</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthName "Secured access"</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthGroupFile /dev/null</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthUserFile /dev/null</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthType Basic</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthBasicAuthoritative Off</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL On</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Host localhost</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_User admin</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Password mmypassword</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Authoritative on</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_DB davusers</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Password_Table
user_info</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Username_Field
user_name</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Password_Field
user_passwd</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Group_Field user_group</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Group_Table user_info</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">AuthMySQL_Encryption_Types Plaintext
PHP_MD5 Crypt_DES</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><Limit GET PUT POST DELETE PROPFIND
PROPPATCH MKCOL COPY MOVE LOCK UNLOCK></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">require valid-user</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"></Limit></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"></Location></span></p>
<h4>Restart Apache2</h4>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> /etc/init.d/apache2
restart</span></p>
<h2>Does it works ?</h2>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">If you are on a linux, then you can test
your connexion with a command line client : cadaver.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> apt-get install
cadaver</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>#</strong> cadaver
my.virtual.host/webdav/test</span></p>
<br />
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">cadaver should ask you a username and
password. type the ones you added in mysql table and you should see a dav
prompt like it :</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px"><strong>dav:/webdav/></strong>
ls</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">Listing collection `/webdav/':
succeeded.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">Coll: test
0 Apr 2 16:14</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Courier New'">
<span style="letter-spacing: 0.0px">Coll: notme
0 Apr 2 16:14</span></p>
<br />
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">Then if you try to access to a folder
different from the user you specified at logon, you will be asked for the
correct username and password.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">So it should work. the last issue is that
users can see the list on folders in the dav share, even if they cannot see the
contents. If anyone has an idea to fix this issue ...</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">Also here is a nice description on how you
can get connected to a webDAV Share using Any operating system : <a href="http://plone.org/documentation/kb/webdav"><span style="text-decoration: underline ; letter-spacing: 0.0px color: #1e00af">http://plone.org/documentation/kb/webdav</span></a>.</span></p>
<br />
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Lucida Grande'">
<span style="letter-spacing: 0.0px">I hope this will help someone, it already
helped myself :)</span></p>
</div>