Encore un blog de GeeK
Article tagué cherokee
Jetty 7 et Hudson sous Debian Lenny
7/01/11
Dans cet article décrit l’installation en tant que service de Jetty 7 sur Debian Lenny ainsi que le déploiement de Hudson.
Installation d’OpenJDK 6 Headless
Avant toute chose, il faut une installation de JRE fonctionnelle, dans mon cas OpenJDK 6 Headless.
noirbizarre:~$ sudo aptitude install openjdk-6-jre-headless
Installation de jetty
Nous allons créer un utilisateur jetty et le groupe associé et les utiliser pour installer et exécuter jetty.
noirbizarre:~$ sudo groupadd jetty noirbizarre:~$ sudo useradd -s /bin/bash -d /home/jetty -m -g jetty jetty noirbizarre:~$ sudo passwd jetty
Après voir récupéré la dernière version stable de Jetty 7 disponible ici, dans mon cas la version 7.2.2.v20101205., et on l’installe dans le $HOME de notre utilisateur.
noirbizarre:~$ sudo -i -u jetty jetty:~$ JETTY_VERSION=7.2.2.v20101205 jetty:~$ wget http://download.eclipse.org/jetty/$JETTY_VERSION/dist/jetty-distribution-$JETTY_VERSION.tar.gz jetty:~$ tar -xvzf jetty-distribution-$JETTY_VERSION.tar.gz jetty:~$ ln -s jetty-distribution-$JETTY_VERSION jetty7
Nous allons lancer jetty une première fois pour vérifier que tout s’execute bien:
jetty:~$ cd jetty7 jetty:~/jetty7$ java -jar start.jar 2011-01-07 00:58:19.337:INFO::jetty-7.2.2.v20101205 2011-01-07 00:58:19.410:INFO::Deployment monitor /home/jetty/jetty-distribution-7.2.2.v20101205/webapps at interval 1 2011-01-07 00:58:19.426:INFO::Deployment monitor /home/jetty/jetty-distribution-7.2.2.v20101205/contexts at interval 1 2011-01-07 00:58:19.432:INFO::Deployable added: /home/jetty/jetty-distribution-7.2.2.v20101205/contexts/test.xml 2011-01-07 00:58:19.568:INFO::Extract jar:file:/home/jetty/jetty-distribution-7.2.2.v20101205/webapps/test.war!/ to /tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp 2011-01-07 00:58:21.438:INFO:org.eclipse.jetty.servlets.TransparentProxy:TransparentProxy @ /javadoc to http://download.eclipse.org/jetty/stable-7/apidocs 2011-01-07 00:58:21.441:INFO::Deployable added: /home/jetty/jetty-distribution-7.2.2.v20101205/contexts/javadoc.xml 2011-01-07 00:58:21.523:INFO::Started SelectChannelConnector@0.0.0.0:8080
Une fois l’initialisation terminée, on peut se connecter sur http://localhost:8080 pour afficher la page d’accueil de Jetty ainsi que quelques exemples.
On peut maintenant couper le serveur et quitter la session de l’utilisateur jetty.
Déploiement de jetty en tant que service
Pour démarrer Jetty en tant que service on utilise le script fourni dans le repertoire bin.
noirbizarre:~$ sudo cp /home/jetty/jetty7/bin/jetty.sh /etc/init.d/jetty noirbizarre:~$ sudo chmod u+x /etc/init.d/jetty
Toutes les variables d’environnement sont à déclarer dans /etc/default/jetty.
JETTY_USER=jetty JETTY_HOME=/home/$JETTY_USER/jetty7
noirbizarre:~$ sudo /etc/init.d/jetty check
Checking arguments to Jetty:
JETTY_HOME = /home/jetty/jetty7
JETTY_CONF = /home/jetty/jetty7/etc/jetty.conf
JETTY_RUN = /var/run
JETTY_PID = /var/run/jetty.pid
JETTY_PORT =
JETTY_LOGS =
START_INI = /home/jetty/jetty7/start.ini
CONFIGS = --pre=etc/jetty-logging.xml
JAVA_OPTIONS = -Djetty.home=/home/jetty/jetty7 -Djava.io.tmpdir=/tmp
JAVA = /usr/bin/java
CLASSPATH =
RUN_CMD = /usr/bin/java -Djetty.home=/home/jetty/jetty7 -Djava.io.tmpdir=/tmp -jar /home/jetty/jetty7/start.jar --pre=etc/jetty-logging.xml
noirbizarre:~$ sudo /etc/init.d/jetty
Usage: jetty [-d] {start|stop|run|restart|check|supervise} [ CONFIGS ... ]
noirbizarre:~$ sudo /etc/init.d/jetty start
Starting Jetty: OK
noirbizarre:~$ sudo /etc/init.d/jetty stop
Stopping Jetty: OK
Une fois toutes les vérifications effectuées, pour lancer Jetty au démarrage du serveur:
noirbizarre:~$ sudo update-rc.d jetty defaults
Installation de Hudson
On installe Hudson avec l’utilisateur jetty en lui specifiant de travailler dans le répertoire /home/jetty/hudson:
noirbizarre:~$ echo 'export HUDSON_HOME=/home/$JETTY_USER/hudson' | sudo tee -a /etc/default/jetty noirbizarre:~$ sudo -i -u jetty jetty:~$ cd jetty7/webapps jetty:~/jetty7/webapps$ wget http://mirrors.hudson-labs.org/war/latest/hudson.war
Il n’y a plus qu’a démarrer jetty et vérifier que http://localhost:8080/hudson affiche bien l’accueil de Hudson.
Dokuwiki et Cherokee
4/12/10
Pour faire tourner une installation secure de dokuwiki dans Cherokee avec les spécifications suivantes:
- Accessible depuis https://wiki.noirbizarre.info/
- uniquement https
- à la racine du domaine
- certificat autosigné
- Récriture des URLs propres
- DocumentRoot situé dans /var/www/noirbizarre.info/wiki
- Logs situés dans /var/logs/cherokee/noirbizarre.info (wiki.access et wiki.errors)
Ce tutoriel a été rédigé pour une version 1.0.8 de Cherokee tournant sous Debian Lenny. Les libellés et les screenshots peuvent varier d’une version à l’autre.
Installation du wiki
Pour commencer on récupère la dernière version de dokuwiki ici et on crée l’arborescence nécéssaire.
~$ wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2010-11-07.tgz ~$ sudo mkdir -p /var/www/noirbizarre.info ~$ tar xvzf dokuwiki-2010-11-07.tgz ~$ sudo mv dokuwiki-2010-11-07 /var/www/noirbizarre.info/wiki ~$ sudo chown -R www-data:www-data /var/www/noirbizarre.info/wiki ~$ sudo mkdir -p /var/log/cherokee/noirbizarre.info ~$ sudo chown -R www-data:www-data /var/log/cherokee/noirbizarre.info
Génération du certificat
Pour cet exemple, nous allons utilisé un certificat autosigné. Il permet de crypter la communication mais le fait qu’il soit auto signé ne permet d’authentifier l’hôte distant. OpenSSL doit être installé pour cette étape. En répondant aux questions, on s’assurera que Common Name est bien rempli avec le nom de domaine (Cherokee s’en sert pour le routage).
~$ openssl req -new -x509 -nodes -out wiki.crt -keyout wiki.key -days 3650 Generating a 1024 bit RSA private key ...............................................++++++ .++++++ writing new private key to 'wiki.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:France Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]:noirbizarre.info Organizational Unit Name (eg, section) []:WiKi Common Name (eg, YOUR name) []:wiki.noirbizarre.info Email Address []: ~$ mv wiki.crt wiki.key /var/www/noirbizarre.info
Création du vServer
Pour cette étape, nous considérons que Cherokee est installé, fonctionnel, configuré pour géré le SSL sur le port 443 et tourne avec les droits de www-data:www-data.
On se connecte sur l’interface d’administration via localhost:9090.
On crée un nouveau vServer nommé wiki.noirbizarre.info et ayant pour DocumentRoot /var/www/noirbizarre.info/wiki.
Le nom du vServer est important, il permet à Cherokee de router les requetes vers le bon vServer.
Gestion des logs
Dans l’onglet journalisation du vServer créé, spécifier:
- Dans Error Logging:
- Write errors to: fichier
- Nom de fichier: /var/log/cherokee/noirbizarre.info/wiki.errors
- Dans Access Logging:
- Nom de fichier: /var/log/cherokee/noirbizarre.info/wiki.access
Gestion du SSL
Sur l’onglet sécurité on spécifie les chemins des fichiers .crt et .key générés.
Règles de gestion
Sur l’onglet Behavior, on clique sur Rule Management pour ouvrir le gestionnaire de règle et on supprimer les 2 règles Contenu statique créées par défaut de façon à ne garder que la règle Par défaut.
Nous allons maintenant modifier la règle Par défaut pour lui faire prendre en charge les redirections et ajouter 3 règles supplémentaires:
- Gestion du contenu statique
- Gestion du php
- Redirection vers https
Règle Par défaut
Sur l’onglet Gestionnaire, on choisit Redirection dans la liste déroulante et on rentre les règles internes suivantes:
- ^/_media/([^/]+)\?(.+)$ → /lib/exe/fetch.php?media=$1&$2
- ^/_media/([^/]+)$ → /lib/exe/fetch.php?media=$1
- ^/_detail/([^/]+)\?(.+)$ → /lib/exe/detail.php?media=$1&$2
- ^/_detail/([^/]+)$ → /lib/exe/detail.php?media=$1
- ^/_export/([^/]+)/(.*)$ → /doku.php?do=export_$1&id=$2
- ^/$ → /doku.php
- ^/\?([^/]+)$ → /doku.php?$1
- ^/([^/]+)\?(.*)$ → /doku.php?id=$1&$2
- ^/([^/]+)$ → /doku.php?id=$1
L’ordre est important puisque Cherokee s’arrêtera à la première règle qui match.
On pourra aussi autoriser la compression gzip et deflate depuis l’onglet Encodage pour optimiser les transferts, et ce pour chaque règle que l’on rajoute.
Contenu statique
On va spécifier à Cherokee que le fichier favicon.ico et le repertoire /lib sont du contenu statique et qu’il doit le traiter comme tel.
On rajoute alors la règle et le handler correspondant.
Il n’est pas nécéssaire de respécifier le DocumentRoot puisque celui du vServer est repris par défaut.
Prise en charge du php
Pour cette étape, on considère que php5 et php5-cgi sont installés.
On rajoute maintenant une règle extension pour capter tous les appels de fichiers php.
Pour cela, Cherokee fourni un assitant qui créée automatiquement la règle. On pourra personnaliser les valeurs, comme par exemple l’encodage, ou encore la prise en charge de fcgi.
Il faut ensuite passer la règle en status FINAL en cliquant sur NON FINAL dans la liste des règles à gauche.
Redirection vers HTTPS
Cette dernière règle va automatiquement rediriger l’utilisateur sur la version sécurisée du site.
Pour cela on rajoute une règle SSL/TLS dont on va prendre la négation et on y affecte un handler de redirection externe (visible par l’utilisateur).
Premier accès
Nous pouvons maintenant enregistrer nos changements et rédémarrer Cherokee.
Nous pouvons maintenant accéder à https://wiki.noirbizarre.info/install.php et suivre la procédure d’installation. Il faut pour cela que votre serveur DNS redirige bien wiki.noirbizarre.info vers votre serveur.
Un message d’avertissement nous signalera que notre certificat n’est pas sur puisqu’il est autosigné.
Une fois l’installation effectuée, authentifiez vous et dans les paramètres de configurations spécifier les URLs esthétiques sur .htaccess.
Et voilà, vous pouvez maintenant tester la redirection HTTPS et les URLs esthétiques. Tout fonctionne correctement.














