Serveur web Apache

Notes sur la configuration d'une serveur apache pour du développement web sous Ubuntu et Fedora.

Apache httpd

Configuration de la machine

sudo update-rc.d -f apache2 remove
Ubuntu : Suppression du lancement du serveur au démarrage de la machine.
# Apache service
## Fedora
apache_service="httpd"
## ubuntu
#apache_service="apache2"

## alias pour le serveur apache
alias apache-start="sudo service "$apache_service" start"
alias apache-stop="sudo service "$apache_service" stop"
alias apache-re="sudo service "$apache_service" reload"
alias apache-status="sudo service "$apache_service" status"
Alias bash pour gérer un serveur apache.

Personnalisation de la configuration

Fedora
  • /etc/httpd/conf
  • /etc/httpd/conf.d
Ubuntu
/etc/apache2/
Dossiers de configuration
Fedora
/etc/httpd/conf.d/00-local.conf
Ubuntu
/etc/apache2/sites-available/default
Fichiers de configuration
User [USER]
Group [GROUP]
Changer le propriétaire du service.
ServerAdmin [foo@bar.com]
Déclarer l'email de l'administrateur.
DocumentRoot "/path/to/www/"
# ...
<Directory "/path/to/www">
# ...
Changer la racine de publication.

Modules

dnf install mod_ssl
Module pour la gestion du ssl.
# Activation d'un module
sudo a2enmod [module_name]

# Désactivation d'un module
sudo a2dismod [module_name]
Ubuntu : activation / désactivation d'un module apache.
LoadModule [module_name] [path/to/module]
Fedora : activation / désactivation d'un module apache par mise en commentaire de la ligne correspondante dans les fichiers /etc/httpd/conf.modules.d/*.
Modules utiles
  • deflate : Compression de contenu.
  • expires : Gestion des en-têtes HTTP Expires et Cache-Control.
  • headers : Gestion des en-têtes HTTP.
  • rewrite : Réécriture d'urls.
  • userdir : Activation des dossiers utilisateur.

Hôtes virtuels

<VirtualHost *:80>
    ServerName   localhost
    DocumentRoot [/path/to/www/]
    <Directory [/path/to/www/]>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Require host 127.0.1.1
    </Directory>
</VirtualHost>
Déclaration de l'hôte virtuel par défaut.
<VirtualHost *:80>
    ServerName   [site_name]
    DocumentRoot [/path/to/www/site/]
    # Fedora
    ErrorLog /var/log/httpd/error-[site_name].log
    # Ubuntu
    # ErrorLog /var/log/apache/error-[site_name].log
    <Directory [/path/to/www/site/]>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        # Apache 2.2
        #Order Deny,Allow
        #Deny from all
        #Allow from 127.0.1.1
        #Allow from ::1
        # Apache 2.4
        Require host 127.0.1.1
    </Directory>
</VirtualHost>
Déclaration d'un hôte virtuel pour site_name.
127.0.0.1   localhost   [site_name]
::1         localhost6  [site_name]
/etc/hosts : ajouter le nom de serveur correspondant à un hôte virtuel apache.

Suppression de wwww

RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Suppression de www dans htaccess
<VirtualHost 10.0.0.1:80>
        ServerName www.example.com
        Redirect permanent / http://example.com/
</VirtualHost>
Suppression de www dans le vhost

SSL et HTTPS

dnf install mod_ssl
Installation du module apache ssl.
openssl req -new -x509 -days 365 -nodes -out /path/to/crt_file.crt -keyout /path/to/key_file.key
Création d'un certificat auto-signé.

SSLEngine on SSLCertificateFile /path/to/crt_file.crt SSLCertificateKeyFile /path/to/key_file.key

Placer dans la déclaration de l'hôte virtuel.
  • S'assurer que utilisateur et groupe apache ont des droits de lecture sur les fichiers du site local.
  • Sous fedora, obliger d'aciver mpm_prefork en liue et place de mpm_eveent (/etc/httpd/conf.modules.d/00-mpm.conf).
RewriteCond %{HTTPS} !on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Forcer la redirection vers https

Erreurs courantes

Références

Titre
Documentation du Serveur HTTP Apache Version 2.4
Éditeur
httpd.apache.org
Titre
Mise à jour de la version 2.2 vers la version 2.4
Éditeur
httpd.apache.org
Titre
Installation et configuration d'Apache
Editeur
Fedora-fr
Date
Titre
Serveur HTTP Apache 2
Editeur
Ubuntu-fr
Date
Titre
The Ultimate Htaccess
Éditeur
AskApache

Apache Tomcat

HTTPS et SSL sur tomcat

CECI EST UNE PROCÉDURE POUR TESTS LOCAUX UNIQUEMENT, ABSOLUMENT PAS POUR UNE MISE EN PRODUCTION.

# Générer un fichier de stockage
keytool -genkey -alias [alias] -keyalg RSA -keystore [/path/to/keystore.jsk]
# Créer le Certificate Signing Request
keytool -certreq -keyalg RSA -alias [alias] -file [certificatname].csr -keystore [/path/to/keystore.jsk]
Génération du certificat.

Le programme keytool est installé par défaut avec le JDK java. Il est donc disponible là où est installé votre jdk.

<Connector
    connectionTimeout="20000"
    port="8090"
    protocol="HTTP/1.1"
    redirectPort="8443"
    SSLEnabled="true"
    scheme="https"
    keystoreFile="[/path/to/keystore.jsk]"
    keystorePass="[keystore password]"
    clientAuth="false"
    sslProtocol="TLS"
/>
Créer un connecteur sur le serveur tomcat

L'idéal serait d'écouter le port 443 mais il peut déjà être pris sur votre machine, par votre client mail par exemple.

Httpd en frontal de Tomcat

CECI EST UNE MANIPULATION POUR DES TESTS EN LOCAL, ABSOLUMENT PAS POUR UN DÉPLOIEMENT EN PROD.

Configuration de httpd

Activer les modules proxy et proxy_http s'il ne le sont pas par défaut :

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Fedora / redhat : edition du fichier /etc/httpd/conf.modules.d/00-proxy.conf
a2enmod proxy
a2enmod proxy_http
Ubuntu / Debian : activer les modules

Créer ensuite un serveur via un VirtualHost

<VirtualHost [servername]:80>
    ServerName [servername]
    # ssl et proxy
    #SSLProxyEngine on
    #SSLProxyVerify none
    #SSLProxyCheckPeerCN off
    #SSLProxyCheckPeerName off
    #SSLProxyCheckPeerExpire off
    # Gestion du proxy
    ProxyAddHeaders On
    #ProxyPreserveHost On
    ProxyPass / http://localhost:8080/[java_app]
    ProxyPassReverse / http://localhost:8080/[java_app]
    ProxyPassReverseCookieDomain localhost [servername]
    ProxyPassReverseCookiePath /[java_app] /
</VirtualHost>
VirtualHost du serveur public

Ressouces et références

Titre
Module Apache mod_proxy
Éditeur
Apache 2.4 documentation
Titre
Proxy Support HOW-TO
Éditeur
Apache Tomcat 9.0 documentation

Historique

2018-10-05
  • add proxy httpd devant un tomcat
2018-10-03
  • add Chapitre sur Tomcat.
2012-12-01
  • add Refonte totale de l'article pour devenir une compilation de notes.