Encore un blog de GeeK
Admin
Administration système (en général sous Linux)
Developpement web local avec virtualbox
1/05/12
Le développement web sur son poste local avec une configuration de test est classique. Seulement, il est nécessaire de pouvoir tester sa configuration en déploiement réel sur un serveur.
Pour cela, j’utilise Virtualbox pour créer des serveurs virtuels (Debian en général) avec les contraintes suivantes:
- le serveur doit pouvoir accéder à internet simplement
- le serveur doit être accessible depuis mon poste de travail (ssh, http, …)
- la configuration de virtualhosts doit être simple
- aucune connection à internet ne doit être nécessaire pour accéder au serveur depuis son IP public
Pour répondre à ces contraintes, je crée des machine virtuelles avec 2 interfaces:
- eth0 sur le NAT virtualbox
- eth1 sur le réseau privé virtuel
Il faut donc activer le réseau privé virtuel sous VirtualBox en cliquant sur « + » dans Fichiers > Paramètres… > Réseau:
Une fois l’interface crée, il faut la configurer. Dans notre cas, le réseau est 192.168.77.0 et le serveur DHCP est désacttivé:
Maintenant que ce réseau existe, il fautconfigurer notre VM pour qu’elle utilise à la fois le NAT pour l’accès internet et le réseau privé virtuel pour l’IP public locale:
Voici le fichier /etc/network/interfaces coorespondant sur la VM:
# The loopback network interface auto lo iface lo inet loopback # The NATed network interface auto eth0 allow-hotplug eth0 iface eth0 inet dhcp # The public network interface auto eth1 allow-hotplug eth1 iface eth1 inet static address 192.168.77.2 netmask 255.255.255.0 network 192.168.77.0 broadcast 192.168.77.255
Le point à noter: il ne faut pas déclarer de gateway pour l’interface eth1. Tout le traffic sortant (accès à internet ou au réseau local) se fait par l’interface eth0 configurée en DHCP sur le NAT Virtualbox.
Pour gérer mes virtualhosts, la configuration se fait à 2 niveaux:
- dans le fichier /etc/hosts de ma machine hôte:
192.168.77.2 vhost.dev
- dans le fichier /etc/hosts de ma machine virtuelle:
127.0.1.1 vhost.dev
Maintenant, cette machine virtuelle est accessible par vhost.dev, que ce soit par SSH ou HTTP, et ce avec ou sans connection internet disponible.
Pour faciliter, le démarrage et l’arrêt de la VM, je rajoute 2 alias dans mon fichier ~/.bash_aliases:
alias start-vm='VBoxHeadless --startvm "my-vm"&' alias stop-vm='VBoxManage controlvm "my-vm" poweroff'
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.


















