Posts tagged ‘apache’

Apache: configurer correctement les vhosts

Un seul serveur web Apache est capable de servir plusieurs sites. Il est possibles de distinguer ces sites différents par leur adresse ip, ou par leur nom de domaine.

Cet article présentera la manière de configurer pour une seule ip / plusieurs sites web désignés par leur nom (l’inverse est aussi possible) grâce aux virtual hosts.

Nous allons d’abord utiliser la directive NameVirtualHost *.80 (on utilise * pour que répondent à la fois l’adresse ip du serveur, et à la boucle locale) pour déclarer que une seule adresse ip peut répondre a plusieurs noms de domaines différents (on parle de « name Based VirtualHost »).

Ensuite, chaque host va être décrit entre des balises

Les directives à connaitre sont:

ServerName
Donnez le nom de domaine auquel le site doit répondre.
DocumentRoot
Donnez le chemin qui contient les données du site

ErrorLog

donnez le chemin du fichier de log des erreurs de ce host

CustomLog
Donnez le chemin du fichier de log dédié aux accès à ce host, suivi du mot clé « combined » sion le démmaraage du service vous donnera une erreur (combined sert a formatter les informations affichées dans le fichier de log)

Spécifier l’adresse et le port auquel doit répondre le vhost?

Il pourrait etre tout a fait intéressant de servir différents sites web sur différents ports:
Il suffit de déclarer

Fichier exemple et notes sur l’organisation:

Il serait possible d’inclure tous ces vhost dans le fichier httpd.conf (cf. article Aprendre à configurer Apache httpd). Sur Debian, la gestion des sites web avec Apache est facilitée par l’organisation des répertoires. Chaque vhost est configuré dans un fichier distinct, placé dans le répertoire /etc/apache2/sites-availables/, puis un lien symbolique est réalisé dans le dossier /sites-enabled/… ca permet en un seul coup de main, et sans devoir supprimer des configurations existantes, d’activer/désactiver des sites à la volée!

Exemble de vhost pour un site:

#configuration du site http://www.site1.com
<Directory /var/www/site1>
Order Deny,Allow
Allow from All
</Directory>
<VirtualHost *:80>
ServerName http://www.site1.com
DocumentRoot /var/www/site1
AddDefaultCharset ISO-8859-15
CustomLog /var/log/apache2/site1.access.log combined
ErrorLog /var/log/apache2/site1.errors.log
</VirtualHost>

Je vous souhaite une bonne mise en ligne 😉

Publicités

23 septembre 2008 at 14 h 31 min Laisser un commentaire

HOW-TO : Serveur Tomcat sur Debian, Apache en proxy avec AJP

Je vais tenter de détailler pas à pas l’installation d’un serveur applicatif Tomcat (pour exécuter des servlet donc), conjointement au serveur web Apache avec l’utilisation d’un connecteur AJP proxy.

Apache sera donc en proxy (utile pour les données statiques). On supposera qu’Apache 2.x est déja installé sur la machine (sinon un apt-get install apache2 fera certainement l’affaire, ce n’est pas l’objet de cet article).

Allez, on y va!

Premièrement nous aurons besoin:

– d’une machine virtuelle java

– des binaires du serveur Tomcat

– des binaires du connecteur mod_jk Nous utiliserons mod_proxy, plus récent, plus rapide !

Concernant les versions, un JRE 1.5 (le jdk complet n’est plus obligatoire) et un tomcat 5.5 seront suffisant pour nous. Tomcat 6 n’apporte pas de réelle valeur ajoutée a mes yeux, et la version 5.5 est toujours maintenue.

1. Installation de la JVM:

Pour la télécharger, cette ligne de commande fera l’affaire:
wget http://javadl.sun.com/webapps/download/AutoDL?BundleId=23103 (copiez collez l’adresse récupérée du site de sun pur éviter de recopier l’adresse a la main)
On rend l’archive exécutable avec;
chmod +x ~/jre-6u7-linux…[TAB pour autocompletion]
Puis on se place dans le dossier adéquat pour installer une JVM (pour moi ca sera /opt, hop!), on lit patiemment l’accord de licence, on accepte, et la JVM s’installe.

cd /opt

~/jre-6u7-linux…[TAB pour autocompletion]

On va maintenant définir les variables d’environnement. On ouvre avec vim le fichier /etc/environment et on ajoute la ligne:

JRE_HOME= »/opt/jre1.6.0_07/ »

on peut egalement ajouter :/opt/jre1.6.0_07/bin a la variable PATH…

Testons dans le shell en tapant un petit java -version (après avoir démarré une nouvelle session pour prendre en compte les modifications).

2. Installation de Tomcat

On télécharge l’archive (veillez à bien prendre la dernière version, des mises à jour de sécurité importantes sont effectuées assez régulierement):
wget http://mirror.mkhelif.fr/apache/tomcat/tomcat-5/v5.5.27/bin/apache-tomcat-5.5.27.tar.gz
Se placer dans le répertoire /opt, et taper cette commande pour decompresser l’archive:

tar -zxvf ~/apache-tomcat-5.5.27.tar.gz

Créeons un utilisateur système tomcat afin de lancer le démon, et attribuer le propriétaire tomcat aux répertoires et sous-reps du serveur:

adduser tomcat
chown -R tomcat:tomcat /opt/apache-tomcat-5.5.27/

Pour plus de praticité, on va ajouter un lien symbolique histoire de racourcir le chemin…
ln -s /opt/apache-tomcat-5.5.27/ /opt/tomcat
Allez, on teste le tout: exit pour quitter root, su tomcat, puis /opt/tomcat/bin/start.sh

N’oubliez pas de rajouter :8080 (port par défaut de tomcat) après votre url pour vérifier que tomcat répond.

3 Lancement de tomcat

On va maintenant créer un script d’initialisation de tomcat qu’on pourra placer dans /etc/init.d/

Le script va etre très basique. Copiez collez ces instructions dans un fichier nommé tomcatd à placer dans /etc/init.d/

#!/bin/sh
TOMCAT_USER=tomcat
TOMCAT_PATH=/opt/tomcat
export JRE_HOME="/opt/jre1.6.0_07/"
export CLASSPATH="/opt/tomcat/lib/jsp-api.jar;/opt/tomcat/lib/servlet-api.jar"
start() {
echo -n "Starting Tomcat:  "
su $TOMCAT_USER -c $TOMCAT_PATH/bin/startup.sh
sleep 2
}
stop() {
echo -n "Stopping Tomcat: "
su $TOMCAT_USER -c $TOMCAT_PATH/bin/shutdown.sh
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: tomcat {start|stop|restart}"
exit
esac

Ensuite on rend le script executable : chmod 755 /etc/init.d/tomcatd
On va intégrer notre démon pour les runlevel 2/3/5 avec update-rc.d (n’oubliez pas les points qui terminent les commandes)
update-rc.d tomcatd start 42 2 3 5 . stop 31 0 6 .

4 Mise en place du connecteur (mod_jk mod_proxy) pour utiliser apache en frontend

Un proxy signifie qu’un serveur agit derrière un autre serveur. Apache httpd va donc jouer le role d’intermédiaire entre le client et notre conteneur de servlet. Il est indispensable de sécuriser Apache avant d’avtiver le mod_proxy, sous peine de permettre à n’importe qui d’accéder à internet depuis votre propre serveur!

Pour activer le proxy, il suffit de déclarer la directive globale activant l’utilisation du module éponyme (sur debian on va créer un fichier proxy.load qu’on placera dans /etc/mods-enabled/, pour les autres distrib, on écrira directement dans /etc/httpd/httpd.conf)

Les deux modules concernés sont mod_proxy et mod_proxy_ajp (pour activer le support du protocole apache j_serv).

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules//mod_proxy_ajp.so

On va maitenant créer le fichier tomcat.site dans le dossier /etc/apache2/sites-availables/ puis créer un lien symbolique dans /etc/apache2/ avec cette comande

ln -s /etc/apache2/sites-availables/tomcat.site /etc/apache2/sites-enabled/

Voici le contenu de ce fiohier:

<VirtualHost *:80>

ServerName votre_sous_domaine.votre_domaine.votre_tld

# pour éviter que le proxy soit ouvert, et pour transmettre les véritables hostname à tomcat
ProxyRequests Off
ProxyPreserveHost On

ErrorLog /var/log/apache2/tomcat.error.log
CustomLog /var/log/apache2/tomcat.log combined

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / ajp://localhost:8009/tomcat-docs/
ProxyPassReverse / ajp://localhost:8009/tomcat-docs/

</VirtualHost>

Il ne nous reste plus qu’à faire écouter Tomcat sur le port du conecteur AJP, et ce sera bon!

On va donc éditer le fichier server.xml, et vérifier que les lignes suivantes sont bien présentes:

<Connector port= »8009″ address= »127.0.0.1″ enableLookups= »false » redirectPort= »8443″ protocol= »AJP/1.3″ />
On pourra désactiver tous les autres connecteurs pour être sur que tomcat ne soit pas accessible sans passer par le frontend.

Pour plus de renseignements, je vous conseille la lecture des articles suivants sur ce même blog:
configurer correctement ses vhosts
épurer la configuration du server.xml de tomcat

21 septembre 2008 at 20 h 44 min 10 commentaires

Tips et astuces : apprendre à configurer Apache httpd

Cet article est un fourre tout des directives de configurations du serveur web Apache les plus basiques. Il s’adresse donc aux débutants qui veulent apprendre comment configurer Apache (v.2.x).

N’hésitez pas à poser des questions parmi vos commentaires, je ferai de mon mieux pour y répondre. Si vous constatez une erreur, ou si vous voulez ajouter une précision, le commentaire sera bienvenu!

Généralités

Où placer les directives ?

Les directives sont à placer dans le contexte global (/etc/apache2/apache2.conf chez Debian, généralement /etc/httpd.conf ailleurs) mais peuvent etre restreinte spécifiquement à un « host » entre des balises <VirtualHost> où à un répertoire entre des balises <Directory>. Les directives doivent donc être placées là ou vous voulez qu’elles prennent effet !

Que signifie… ?

AllowOverride (None / All)

AllowOverride permet de spécifier si l’utilisation d’un fichier .htaccess sera prise en compte ou non.

DocumentRoot

Se place dans le contexte global ou dans un virual host pour donner le chemin (l’arborescence unix) à partir duquel le serveur web va servir les données. Exemple avec DocumentRoot = /var/www/test/

http://www.adresse_du_serveur.com/index.html affichera le fichier UNIX
    /var/www/test/index.html.

NameVirtualHost

NameVirtualhost est la directive qui permet d’associer une adresse ip au serveur afin qu’il redispatche les requêtes sur les Virtualhost. Afin d’écouter à la foi la boucle locale, et l’adresse ip propre du serveur, on peut mettre *, en spécifiant le port, en lieu et place de la seule adresse du serveur.

NameVirtualHost *:80

Options

Cette directive est un fourre tout, qui permet d’activer:

– L’éxécution de scripts CGI dans l’arborescence définie par documentRoot.(ExecCGI)
– Le suivi des liens symboliques au sein de l’arborescence du documentRoot (FollowSymLinks). Exemple: si un dossier est placé a l’etérieur du document root, pour y accéder, il suffit de taper un ls -n /dossierCible /votre_documentRoot/www/ pour y accéder.
– et bien d’autres options encore…que nous ne listerons pas ici.

ServerName

Cette rubrique permet d’associer un host apache a une adresse de type DNS. SI vous possedez le domaine MONDOMAIN.COM, et que vous avez configuré le DNS pour que sous-domaine.mon-domaine.com pointe sur l’ip de la machine sur laquelle tourne apache, alors vous pouvez définir le serverName suivant:

ServerName sous-domaine.mon-domaine.com:80

Ce sera tout pour aujourd’hui, avec ces quelques directives, vous pourrez aisément comprendre les fichiers d’example des <VirtualHost>. Vous avez également le nécessaire pour pouvoir associer des sites différents à chacun de vos sous domaines (si vos DNS sont bien configurés…).

AddDefaultCharset

J’avais oublié une irective quasiment indispensable: AddDefaultCharset
Vous voulez spécifier par défaut une locale spécifique ? bonne idée! Si votre serveur doit servir du contenu en plusieurs locales différentes, vous pouvez même associer un charset différent par vhost avec
AddDefaultCharset UTF-8

extensions d’Apache?

Apache peut être très facilement étendu grâce a un système de « modules ». Les modules Apache permettent d’ajouter de nouvelles fonctionnalités comme par exemple le traitement des requêtes, la mise en cache de fichiers, l’amélioration de la sécurité, etc.

Un module s’active avec la directive

LoadModule nom_du_module chemin_du_fichier

Le nom_du_module est une variable qui est est listée dans la liste des définitions de modules.

18 septembre 2008 at 0 h 27 min 4 commentaires


Articles récents