Apache : Différence entre versions

De Teteve wiki
Aller à : navigation, rechercher
(Page créée avec « == Pré requis (installation) == # apt-get install apache2 == Configuration == === Les fichiers de conf === J'indique ici quelques lignes particulière du fichier de... »)
 
Ligne 210 : Ligne 210 :
 
  %{Referer}i - Le contenu de "Referer": Ligne(s) d'en-tête de la requête envoyée au serveur.
 
  %{Referer}i - Le contenu de "Referer": Ligne(s) d'en-tête de la requête envoyée au serveur.
 
  %{User-Agent}i - Le contenu de "User-Agent": Ligne(s) d'en-tête de la requête envoyée au serveur.
 
  %{User-Agent}i - Le contenu de "User-Agent": Ligne(s) d'en-tête de la requête envoyée au serveur.
 +
 +
== PhpMyAdmin ==
 +
 +
L'installation de PhpMyAdmin se fait dans la foulée après celle de Mysql et Php :
 +
 +
# apt-get install phpmyadmin
 +
 +
Editer le fichier de configuration d'Apache :
 +
 +
# vim /etc/apache2/apache2.conf
 +
 +
Rajouter la ligne suivante :
 +
 +
include /etc/phpmyadmin/apache.conf
 +
 +
Pour accéder ensuite à l'interface de PhpMyAdmin, il suffit de se rendre sur le site web (ou en localhost si le serveur web n'est pas opérationnel) :
 +
 +
http://localhost/phpmyadmin
 +
 +
note : PhpMyAdmin utilise les identifiants de l'admin de Mysql tels que définis à l'installation de Mysql
  
 
[[Catégorie:Informatique]]
 
[[Catégorie:Informatique]]

Version du 24 mars 2017 à 10:42

Pré requis (installation)

# apt-get install apache2

Configuration

Les fichiers de conf

J'indique ici quelques lignes particulière du fichier de conf d'apache sur lesquelles je me suis penché...

# vim /etc/apache2/apache2.conf
ServerRoot "/etc/apache2"
DirectoryIndex index.php index.html # Indique quel type de fichier index doit sélectionner apache par défaut
# Les logs d'erreur sont peu configurables, à part leur emplacement et le niveau :
ErrorLog /var/log/apache2/error.log
# Valeurs possibles pour les niveaux de log : debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn

# Configuration des logs :
# EN COURS D'APPROFONDISSEMENT...
LogFormat "%v:%p %a %h %l %u %t \"%r\" %>s %T \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

# Informations que renvoie Apache en cas d'erreur ou dans les headers
ServerTokens Prod
ServerSignature Off

# Config perso des pages d'erreur
# Peut être défini plus précisément plus loin dans ce fichier
ErrorDocument 404 /404.html


Les vhosts

Voici un fichier de conf d'un Vhost :

NameVirtualHost www.toto.fr # A ne mettre que dans le fichier du vhost par défaut
<VirtualHost www.toto.fr> # Nom du virtualhost (= par là où il sera appelé...)
       ServerAdmin webmaster@localhost # Mail du webmaster (pas trop compliqué à comprendre... :p)
       ServerName www.toto.fr # Nom du serveur
       ServerAlias www2.toto.fr # Un éventuel alias
       DocumentRoot /home/www/toto/
       <Directory />
               Options FollowSymLinks # Autorise à suivre les liens symboliques
               AllowOverride None
       </Directory>
       <Directory /home/www/toto/>
               # Indexes : Ne liste pas les fichiers d'un répertoire s'il n'y a pas de fichier index.*
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
               # This directive allows us to have apache2's default start page
               # in /apache2-default/, but still have / go to the right place
               # RedirectMatch ^/$ www.toto.fr
       </Directory>
       <Directory /home/www/secure/>
               # Config du répertoire sécurisé déjà vu précédemment
       </Directory>
       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # Pour la config des scripts CGI
       <Directory "/usr/lib/cgi-bin">
               # A approfondir
       </Directory>
       ErrorLog /var/log/apache2/error.log
       # Si besoin de logs particuliers pour le vhost :
       # Valeurs possibles : debug, info, notice, warn, error, crit, alert, emerg.
       # Non utilisées actuellement
       #LogLevel warn
       #CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Ne pas oublier de rajouter le nom du vhost dans /etc/hosts

Petite astuce pour désactiver l'accès à votre serveur par son IP publique :
Dans le fichier de conf du vhost "default", rajouter ceci à la fin. Ça peut être utile pour éviter les scans de port et les bots. Totalement inutile si le DNS est public...
A éviter pour un site web souhaitant être référencé !!! :)

<VirtualHost *:80>
  ServerName VOTRE.IP.PUB.LIQUE
  <Directory />
    Deny from all
  </Directory>
</VirtualHost>

restreindre l'accès à un répertoire

Sous Apache, il existe 2 types d'authentification possible :

  • mod_auth_basic
  • mod_auth_digest

pour activer le module mod_auth_digest :

a2dismod mod_auth_basic
a2enmod mod_auth_digest
/etc/init.d/apache2 restart

L'authentification Basic envoie le couple login/password en clair sur le réseau. Elle est donc déconseillée sans être couplée avec SSL. L'authentification Digest utilise les condensés MD5. Attention : Digest est mal supporté par IE 6 et antérieur, à cause du non-respect des RFC de la part de IE (original... ^^).

Il est possible de mettre les directives d'authentification soit dans le/les fichiers(s) de configuration d'apache (typiquement apache2.conf), soit directement dans les répertoires concernés grace aux fichiers .htaccess. Il est conseillé, dans la mesure du possible, d'utiliser les directives <Directory> dans apache2.conf pour sécuriser les répertoires. Dans le cas contraire, Apache devra parcourir tous les répertoires à la recherche de fichiers .htaccess, ce qui risque d'amoindrir les performances.

<Directory /home/www/secure/>
    AuthType Digest
    AuthName "Zone securisee"
    AuthDigestDomain /secure/ http://www.teteve.fr/secure/
    AuthDigestProvider file
    AuthUserFile /etc/apache2/password
    Require valid-user
</Directory>

créer le premier couple login/password :

htdigest -c /ou/vous/voulez "Zone securisee" login1

Un prompt vous demande alors de taper le mot de passe, puis de le confirmer. Créer ensuite les couples login/password en enlevant l'option "-c" (pour "create").

 /etc/init.d/apache2 reload

Quelques tips sur Apache2

Les commandes apache2

root@test ~ # apache2 -h
Usage: apache2 [-D name] [-d directory] [-f file]
              [-C "directive"] [-c "directive"]
              [-k start|restart|graceful|graceful-stop|stop]
              [-v] [-V] [-h] [-l] [-L] [-t] [-S] [-X]
Options:
 -D name            : define a name for use in <IfDefine name> directives
 -d directory       : Spécifie un répertoire racine specify an alternate initial ServerRoot
 -f file            : specify an alternate ServerConfigFile
 -C "directive"     : process directive before reading config files
 -c "directive"     : process directive after reading config files
 -e level           : show startup errors of level (see LogLevel)
 -E file            : log startup errors to file
 -v                 : show version number
 -V                 : show compile settings
 -h                 : list available command line options (this page)
 -l                 : list compiled in modules
 -L                 : list available configuration directives
 -t -D DUMP_VHOSTS  : show parsed settings (currently only vhost settings)
 -S                 : a synonym for -t -D DUMP_VHOSTS
 -t -D DUMP_MODULES : show all loaded modules
 -M                 : a synonym for -t -D DUMP_MODULES
 -t                 : run syntax check for config files
 -X                 : debug mode (only one worker, do not detach)

LogFormat

Directives présentes dans le fichier /etc/apache2/apache.conf d'après La documentation Ubuntu

# format des lignes contenues dans les logs
# %a 	        Adresse ip distante.
# %A 	        Adresse ip local.
# %B 	        Taille de la réponse en octets, excluant l'entête HTTP.
# %b 	        Taille de la réponse en octets, excluant l'entête HTTP au format CLF.
# %{Foobar}C 	Contenu du cookie "Foobar" de la requête envoyée au serveur.
# %D 	        Le temps mis à servir la requête .
# %{FOOBAR}e 	Contenue de la variable d'environnement "FOOBAR".
# %f 	        Nom du fichier.
# %h 	        Hôte distant.
# %H 	        Le protocole demandé.
# %{Foobar}i 	Le contenu de "Foobar": Ligne(s) d'en-tête de la requête envoyée au serveur.
# %l 	        nom du fichier de log distant (de identd, si il est fournit). Cela retournera un tiret tant que //mod_ident// n'est pas présent et //IdentityCheck// n'est pas mis à ON.
# %m 	        Méthode de la requête.
# %{Foobar}n 	Contenu de la note "Foobar" provenant d'un autre module.
# %{Foobar}o 	Le contenu de "Foobar": Ligne(s) d'entête dans la réponse.
# %p 	        Port canonique du serveur qui sert la réponse.
# %P 	        Id du processus fils qui a servi la requête.
# %{format}P 	Id du processus ou du thread fils qui a servi la requête.
# Les formats valides sont pid, tid, et hextid.
# hextid nécessite APR 1.2.0 ou supérieur.
# %q 	        Chaînes de la requête (Commençant avec un ? si une chaine de requête existe, sinon une chaîne vide)
# %r 	        Première ligne de la requête.
# %s 	        Statut. Pour les requête redirigées en interne, ceci est la requête originale --- %>s pour la dernière.
# %t 	        Heure à laquelle la requête a été reçue (format standard anglais mois jour année )
# %{format}t 	L'heure, au format précisé, qui doit être dans les formats de strftime(3). (potentiellement localisé).
# %T 	        Le temps mis pour répondre à la requête.
# %u 	        Utilisateur distant (de l'authentification; peut être faux si le  code de retour de statut (%s) est 401)
# %U 	        Url demandée, n'inclue aucune chaîne de requête.
# %v 	        Nom canonique de ServerName du serveur qui répond à la requête.
# %V 	        Nom du serveur en fonction du paramètre UseCanonicalName.
# %X 	        Statut de la connexion une fois la réponse envoyée.
#               X = connexion annulée avant la réponse complète.
#               + = la connexion peut être maintenue après l'envoi de la réponse.
#               - = la connexion sera fermée après l'envoi de la réponse.
# %I 	        Octets reçus, incluant l'entête et la requête, ne peut être nul. Vous devez activer //mod_logio// pour l'utiliser.
# %O 	        Octets envoyés, incluant l'entête, ne peut être nul. Vous devez activer //mod_logio// pour l'utiliser.
 
LogFormat "%h %l %h %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Celles que j'ai dans le mien :

LogFormat "%v %a %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#LogFormat "%h %l %u %t \"%r\" %>s %b" common
#LogFormat "%{Referer}i -> %U" referer
#LogFormat "%{User-agent}i" agent
#
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

Explications :
LogFormat "%v %a %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
%v - Nom canonique de ServerName du serveur qui répond à la requête.
%a - Adresse ip distante.
%u - Utilisateur distant (de l'authentification; peut être faux si le  code de retour de statut (%s) est 401)
%t - Heure à laquelle la requête a été reçue (format standard anglais mois jour année )
"%r" - Première ligne de la requête.
%>s - Statut. Pour les requête redirigées en interne, ceci est la requête originale --- %>s pour la dernière.
%b - Taille de la réponse en octets, excluant l'entête HTTP au format CLF. (obligatoire pour Awstats)
%{Referer}i - Le contenu de "Referer": Ligne(s) d'en-tête de la requête envoyée au serveur.
%{User-Agent}i - Le contenu de "User-Agent": Ligne(s) d'en-tête de la requête envoyée au serveur.

PhpMyAdmin

L'installation de PhpMyAdmin se fait dans la foulée après celle de Mysql et Php :

# apt-get install phpmyadmin

Editer le fichier de configuration d'Apache :

# vim /etc/apache2/apache2.conf

Rajouter la ligne suivante :

include /etc/phpmyadmin/apache.conf

Pour accéder ensuite à l'interface de PhpMyAdmin, il suffit de se rendre sur le site web (ou en localhost si le serveur web n'est pas opérationnel) :

http://localhost/phpmyadmin

note : PhpMyAdmin utilise les identifiants de l'admin de Mysql tels que définis à l'installation de Mysql