Apache
Sommaire
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é... Le fichier envvars :
export APACHE_RUN_USER=virtual export APACHE_RUN_GROUP=www-data
-> Modifié pour que l'utilisateur FTP et l'utilisateur d'Apache soit le même. Permet les mises à jour automatiques de Wordpress sans utiliser de login/mdp FTP -> Vérifier si besoin / si c'est mieux de remettre www-data...
# 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) :
note : PhpMyAdmin utilise les identifiants de l'admin de Mysql tels que définis à l'installation de Mysql