Vous êtes ici : Installer et exploiterInstallationServeur applicatifApache

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>
 
 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>
  <ifmodule mod_headers.c="">
   Header set Access-Control-Allow-Origin "*"
  </ifmodule>
 </filesmatch>

 <directory>
  Options None
  AllowOverride None
  DirectoryIndex index.jsp
  #Contrôle d'acces : depend de la version d'Apache (cf ci-dessous)
  Order allow,deny
  Allow from all
 </directory>

 <locationmatch>
 #Contrôle d'acces : depend de la version d'Apache (cf ci-dessous)
  order allow,deny
  deny from all
  satisfy all
 </locationmatch> 

</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 mod_jk ou mod_proxy

Etape mod_jk mod_proxy
Installation
  • Sur Debian :
    apt-get install libapache2-mod-jk
  • Sur Redhat :
    yum install gcc gcc-c++ httpd-devel make libtool wget
    wget http://www.eu.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz
    tar xvzf tomcat-connectors-1.2.42-src.tar.gz
    cd tomcat-connectors-1.2.42-src/native
    ./configure -with-apxs=/usr/sbin/apxs      #pour Centos 7 => /usr/bin/apxs
    make
    make install
Les modules mod_proxy sont installés en standard avec apache/httpd.
Activation
  • Sur Debian : le module est automatiquement activé. Cela peut être vérifié par la commande :
    apache2ctl -M
    Si le module n'est pas dans la liste des modules actifs, l'activer par la commande :
    a2enmod jk
  • Sur Redhat : éditer le fichier /etc/httpd/conf/httpd.conf
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile conf/workers.properties
  • Sur Debian :
    a2enmod proxy
  • 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 Le fichier à éditer se nomme workers.properties et se trouve dans le dossier /etc/libapache2-mod-jk/ sur Debian, ou dans /etc/httpd/conf/ sur Redhat. Si le fichier n'existe pas, vous devrez le créer. S'il existe déjà, vous pouvez remplacer son contenu.
Pour renseigner le fichier, vous devez connaître l'adresse IP du serveur sur lequel se trouve Tomcat si celui-ci n'est pas installé sur le même serveur, et le port d'écoute du serveur Tomcat.

Renseignez ensuite les valeurs dans le fichier :
#identifiant du worker
worker.list=%NOM_WORKER%
# ip du serveur Tomcat, à modifier s'il n'est pas sur la même machine
worker.%NOM_WORKER%.host=127.0.0.1
# port d'écoute du serveur Tomcat
worker.%NOM_WORKER%.port=8009
# protocole d'échange, ne pas modifier
worker.%NOM_WORKER%.type=ajp13
Dans le fichier de configuration du virtualhost, ajouter les lignes suivantes :
L'exemple ci-dessous présente une configuration minimale qui devra être adaptées aux spécificités du projet si besoin.
 # déclaration des variables à transmettre à "mod_jk" (erreur 404 et 500 traitées par le apache) 
 JkEnvVar REDIRECT_URL 
 JkEnvVar REDIRECT_QUERY_STRING
  
 # déclaration des points de montage vers "mod_jk"
 JkMount /*/ %NOM_WORKER%
 JkMount /*.jsp %NOM_WORKER%
 JkMount /*.kjsp %NOM_WORKER%
 JkMount /servlet/* %NOM_WORKER%
 JkMount /wro/* %NOM_WORKER%
 JkMount /medias/* %NOM_WORKER%
 JkMount /captcha* %NOM_WORKER%
 JkMount /uas/* %NOM_WORKER%
 JkMount /content/* %NOM_WORKER%
 JkMount /sitemap.xml %NOM_WORKER%
 JkMount /robots.txt %NOM_WORKER%
avec 
  • %NOM_WORKER% : nom du worker AJP

Dans la configuration du Virtualhost, ajouter 

ProxyPreserveHost on
ProxyPass "/" "http://localhost/"
ProxyPassReverse "/" "http://localhost/"
 

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/"

Important Le cache devra être nettoyé à chaque livraison par la commande :

htcacheclean -t -p/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 1 février 2018