Autres versions

Vous êtes ici : Installer et exploiterInstallationServeur applicatifApache

Installation d'Apache

Procédure d'installation du serveur Apache

Cette page décrit les étapes d'installation et de configuration d'Apache, à installer sur le serveur applicatif.

1 - Installation

  • Sur Debian :
    apt-get install apache2
  • Sur Redhat :
    yum install httpd mod_ssl


2 - Configuration

Déclaration du site

La déclaration d'un site nécessite l'ajout du fichier Virtualhost dans la configuration Apache.
Le fichier .conf est à créer dans le dossier /etc/apache2/site-available/ sur Debian, ou dans /etc/httpd/conf.d/ sur Redhat.
L'exemple ci-dessous présente une configuration minimale qui devra être adaptées aux spécificités du projet si besoin.

<VirtualHost *:80>
 
 ServerName %HOST%
 ServerAlias %ALIAS%
 ServerAdmin %MAIL@ADMIN%
 DocumentRoot %WEBAPP_HOME%
 
 ErrorLog /var/log/apache2/%WEBAPP_NAME%-error.log
 CustomLog /var/log/apache2/%WEBAPP_NAME%-access.log combined
 
 AddType font/ttf .ttf
 AddType font/eot .eot
 AddType font/otf .otf
 AddType font/woff .woff
 
 ErrorDocument 404 /servlet/com.kportal.core.ErrorServlet?CODE=404
 ErrorDocument 500 /servlet/com.kportal.core.ErrorServlet?CODE=500
 
 <FilesMatch "\.(ttf|otf|eot|woff)$">
  <IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
  </IfModule>
 </FilesMatch>

 <Directory "%WEBAPP_HOME%">
  Options None
  AllowOverride None
  DirectoryIndex index.jsp
  Require all granted
 </Directory>

</VirtualHost>

avec

  • %ADRESSE_IP% : adresse IP du serveur. L'adresse spécifiée est l'IP externe du serveur, c'est-à-dire l'interface à partir de laquelle Apache va réceptionner les requêtes HTTPS. De plus, il est possible d'utiliser le caractère "*" si on ne souhaite pas préciser cette adresse
  • %PORT% : port d'écoute du apache. Pour un serveur HTTP, utiliser le port 80, pour un serveur HTTPS, le port 443.
  • %MAIL@ADMIN% : mail de l’administrateur système du serveur
  • %HOST% : nom de domaine principal auquel le serveur doit répondre en HTTPS
  • %ALIAS% : nom de domaine ou ensemble de noms de domaine secondaires auxquels doit aussi répondre le serveur en HTTPS. Il est possible d'utiliser le caractère "*" pour indiquer que votre virtualhost répond à toutes les demandes qui lui sont transmises, peu importe le nom de domaine
  • %WEBAPP_HOME% : chemin absolu où est installée l'application K-Sup/K-Portal (voir ici). Ce chemin est utilisé par Apache pour servir les ressources statiques de l'application.
  • %WEBAPP_NAME% : nom de l'application (par défaut : "ksup" ou "kportal")

Activation du HTTPS

Pour activer le HTTPS, il faut rajouter à la configuration du virtualhost le chemin vers le certificat et modifier le port :
SSLEngine on
SSLCertificateFile    %PATH%/certificate.crt
SSLCertificateKeyFile %PATH%/certificate.key
SSLCACertificateFile  %PATH%/certificate.pem

avec

  • %PATH% : chemin vers les fichiers du certificat HTTPS

Activation du site

Pour la prise en compte de votre fichier de configuration et l'activation du site, exécutez les commandes suivantes :
  • Sur Debian :
    a2ensite [monfichier].conf
    service apache2 reload
  • Sur Redhat :
    service httpd reload

Configuration du module mod_proxy

Les modules mod_proxy nécessaires au fonctionnement sont installés en standard avec apache/httpd.

Activation du module

  • Sur Debian :
    a2enmod proxy
    a2enmod proxy_http
  • Sur Redhat : éditer le fichier /etc/httpd/conf/httpd.conf
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so

Configuration du module

Dans la configuration du Virtualhost, ajouter 
ProxyPreserveHost on
ProxyPass "/" "http://localhost:8080/"
ProxyPassReverse "/" "http://localhost:8080/"

Si vous optez pour une configuration utilisant le protocole AJP au lieu du protocole HTTP pour communiquer avec le serveur tomcat, consulter la documentation d'Installation d'Apache mod_jk
 

3 - Configurations avancées

Activation mod_cache (optionnel)

  • Sur Debian :
    a2enmod cache
    a2enmod cache_disk
  • Sur Redhat : éditer le fichier /etc/httpd/conf/httpd.conf
    LoadModule cache_module modules/mod_cache.so
    LoadModule cache_disk_module modules/mod_cache_disk.so

Configuration

Dans le Virtualhost, ajouter la configuration suivante :
Les URL ci-dessous sont données à titre indicatif
La liste des URLS à mettre en cache devra être adaptée à la structure et aux spécificités du projet

        CacheRoot "/tmp/a2cache"
        CacheDirLevels 5
        CacheDirLength 3
        
        CacheIgnoreURLSessionIdentifiers jsessionid
        CacheMaxExpire 86400
        CacheDefaultExpire 86400
        CacheIgnoreHeaders Set-Cookie
        
        CacheEnable disk  "/wro/"
        CacheEnable disk  "/jsp/styles/"
        CacheEnable disk  "/jsp/images/"
        CacheEnable disk  "/jsp/scripts/"
        CacheEnable disk  "/images/"

Pour limiter l'espace disque utilisé par le cache, il faut lancer la commande htcacheclean en mode démon
Par exemple, pour limiter la taille du cache à 15Mo (selon votre environnement, il faut lancer la commande avec sudo),

htcacheclean -d5 -l15M -t -p /tmp/a2-cache
Toutes les 5 minutes (-d5), un nettoyage de cache sera réalisé afin de maintenir le cache à 15Mo environ.
Pour arrêter proprement le démon, vous pouvez lui envoyer un signal TERM ou INT, par exemple via la commande kill <PID> où >PID> et l'identifiant du processus htcacheclean.

Important Il est préférable de vider le cache à chaque livraison par la commande :
htcacheclean -l1k -t -p /tmp/a2-cache

ou, après avoir stoppé le serveur apache, de manière plus brutale avec un rm

rm -Rf /tmp/a2-cache/*
 

Configuration en cas de reverse proxy

Dans le cas d'une infrastructure située derrière un loadbalancer principal gérant la sécurité (SSL), le Virtualhost du serveur Apache mandataire doit transmettre les informations originelles de la requête.
Dans la configuration du Virtualhost, il suffit d'ajouter les éléments suivants :
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"


4 - Redémarrage

Pour la prise en compte des modifications réalisées, il faut relancer le service :
  • Sur Debian :
    service apache2 restart
  • Sur Redhat :
    service httpd restart

Mis à jour le 27 janvier 2023