{"id":100,"date":"2006-09-25T17:40:42","date_gmt":"2006-09-25T16:40:42","guid":{"rendered":"http:\/\/almin.tf\/blog\/?p=100"},"modified":"2026-01-24T05:12:40","modified_gmt":"2026-01-24T04:12:40","slug":"apache-2","status":"publish","type":"post","link":"https:\/\/almic.fr\/blog\/2006\/09\/25\/apache-2\/","title":{"rendered":"Apache 2"},"content":{"rendered":"<p style=\"text-align: justify;\">Apache peut h\u00e9berger plusieurs sites web sur le m\u00eame couple IP\/port, par le m\u00e9canisme des h\u00f4tes virtuels. Apr\u00e8s avoir vu la configuration de base d\u2019Apache, puis celle d\u2019un h\u00f4te virtuel, nous parlerons aussi de redirections, de contr\u00f4le de bande passante, etc.<\/p>\n<p style=\"text-align: justify;\">Ce tutoriel a \u00e9t\u00e9 tenu \u00e0 jour jusqu\u2019au <b>2 janvier 2017<\/b>.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: justify;\">Les commandes pr\u00e9fix\u00e9es d\u2019un # sont \u00e0 lancer en root. Les commandes pr\u00e9fix\u00e9es d\u2019un % sont \u00e0 lancer en simple utilisateur.<\/p>\n<h2>Configuration de base<\/h2>\n<p style=\"text-align: justify;\">Tout d&rsquo;abord, il faut installer Apache. Si vous en avez besoin, installez \u00e9galement PHP.<\/p>\n<p><code># apt-get install apache2 apache2-mpm-prefork apache2-utils libapache2-mod-php5 php5 php5-cli php5-mysql<\/code><\/p>\n<p style=\"text-align: justify;\">Pour la configuration locale, il vaut mieux cr\u00e9er des fichiers \u00e0 part. Sinon, pendant les mises \u00e0 jour, APT va bloquer car un fichier du paquet a \u00e9t\u00e9 modifi\u00e9 : vous devrez merger manuellement les nouveaut\u00e9s et vos modifications. Je vous recommande donc de cr\u00e9ez <i>\/etc\/apache2\/conf-enabled\/local<\/i>. Pour ma part, j&rsquo;y ai mis ceci :<\/p>\n<pre># Limit the number of simultaneous and persistent connections\n# to avoid saturation problems (voluntaries or not)\nMaxClients 150\nKeepAlive On\nMaxKeepAliveRequests 100\nKeepAliveTimeout 5\n# Avoid a warning message when Apache start\nServerName localhost<\/pre>\n<p style=\"text-align: justify;\">Voici de quel message d&rsquo;avertissement je parle, sachant qu\u2019il n\u2019apparait pas syst\u00e9matiquement.<\/p>\n<p><code># service apache2 restart<br \/>\nForcing reload of apache 2.0 web server...apache2: Could not determine the server's fully qualified domain name,<br \/>\nusing 127.0.0.1 for ServerName<br \/>\napache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName<br \/>\n.<\/code><\/p>\n<p style=\"text-align: justify;\">Je vous conseille de faire un tour dans <i>\/etc\/apache2\/conf-enabled\/security.conf<\/i>. Je cite ici le commentaire au d\u00e9but de ce fichier\u00a0: \u201cChanging the following options will not really affect the security of the server, but might make attacks slightly more difficult in some cases.\u201d<\/p>\n<p>Voici mes param\u00e8tres :<\/p>\n<pre>ServerTokens Prod\nServerSignature Off\nTraceEnable Off\nHeader set X-Content-Type-Options: \"nosniff\"\nHeader set X-Frame-Options: \"sameorigin\"<\/pre>\n<p style=\"text-align: justify;\">Note : les deux derni\u00e8res lignes demandent d\u2019activer le module headers.<\/p>\n<p><code># a2enmod headers<\/code><\/p>\n<p style=\"text-align: justify;\">\u00c0 ce stade, on a termin\u00e9 la configuration de base. Avant d\u2019aller plus loin, testez-l\u00e0 avec :<\/p>\n<p><code>service apache 2 restart<\/code><\/p>\n<p style=\"text-align: justify;\">et corrigez les \u00e9ventuelles erreurs.<\/p>\n<h2>Configuration d\u2019un site web<\/h2>\n<p style=\"text-align: justify;\">Il faut ensuite cr\u00e9er un fichier pour votre site, dans le r\u00e9pertoire <i>\/etc\/apache2\/sites-available\/<\/i>. Vous pouvez copier\/coller l\u2019exemple que je donne ci-dessous, ou encore dupliquer la config par d\u00e9faut :<\/p>\n<p><code># cp \/etc\/apache2\/sites-available\/000-default.conf \/etc\/apache2\/sites-available\/almin.tf.conf<\/code><\/p>\n<p style=\"text-align: justify;\">Le \u00ab .conf \u00bb \u00e0 la fin du fichier est n\u00e9cessaire. Si vous ne le mettez pas, vous aurez cette erreur en lan\u00e7ant a2ensite :<\/p>\n<p><code># a2ensite almin.tf<br \/>\nERROR: Site almin.tf does not exist!<\/code><\/p>\n<p style=\"text-align: justify;\">Si vous voulez qu\u2019Apache charge tous les fichiers pr\u00e9sents, sans exiger une extension en \u00ab .conf \u00bb, il faut \u00e9diter <i>\/etc\/apache2\/apache2.conf<\/i> et remplacer cette ligne :<\/p>\n<pre>IncludeOptional sites-enabled\/*.conf<\/pre>\n<p>par :<\/p>\n<pre>IncludeOptional sites-enabled\/*<\/pre>\n<p style=\"text-align: justify;\">Mais d\u2019une part, comme indiqu\u00e9 plus haut, \u00e7a g\u00eanera \u00e0 la prochaine mise \u00e0 jour. D\u2019autre part, <i>a2ensite<\/i> ne marchera toujours pas, vous devrez placer les fichiers directement dans <i>\/etc\/apache2\/sites-enabled\/<\/i> (ou faire vous-m\u00eame les liens entre <i>\/etc\/apache2\/sites-available\/<\/i> et <i>\/etc\/apache2\/sites-enabled\/<\/i>).<\/p>\n<pre>\n&lt;VirtualHost *:80&gt;\n    ServerName almin.tf\n    ServerAdmin webmaster@almin.tf\n    DocumentRoot \/srv\/www\/almin.tf\/\n    &lt;Directory \/srv\/www\/almin.tf\/&gt;\n        Require all granted\n        Options -Indexes +SymLinksIfOwnerMatch +MultiViews\n    &lt;\/Directory&gt;\n    LogLevel warn\n    CustomLog \/var\/log\/apache2\/almin-access.log combined\n    ErrorLog \/var\/log\/apache2\/almin-access.log\n&lt;\/VirtualHost&gt;\n<\/pre>\n<p style=\"text-align: justify;\">On peut activer ou d\u00e9sactiver une option en la faisant pr\u00e9c\u00e9der d\u2019un \u00ab + \u00bb ou d\u2019un \u00ab &#8211; \u00bb. Par exemple \u00ab +Indexes \u00bb autorisera le listage des r\u00e9pertoires, \u00ab -Indexes \u00bb l\u2019interdira. Auparavant, l\u2019absence de signe valait implicitement un \u00ab + \u00bb. D\u00e9sormais (depuis jessie), si vous mettez un \u00ab + \u00bb ou \u00ab &#8211; \u00bb devant une option, vous devez aussi pr\u00e9fixer les autres options.<\/p>\n<p>Parmi les options possibles, on peut citer :<\/p>\n<ul style=\"text-align: justify;\">\n<li>L&rsquo;option +SymLinksIfOwnerMatch fait la m\u00eame chose que +FollowSymLinks : Apache va suivre les liens symboliques. Je conseille la premi\u00e8re option, qui contr\u00f4le en plus \u00e0 qui appartient le lien et la cible.<\/li>\n<li>L&rsquo;option +MultiViews g\u00e8re la n\u00e9gociation de contenus, par exemple en redirigant une requ\u00eate pour index.html vers index.html.en ou index.html.fr selon la langue signal\u00e9e par le navigateur, ou encore en se basant sur des en-t\u00eates similaires \u00e0 celles du mail.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Dans votre fichier, vous pouvez rajouter autant de sections VirtualHost que n\u00e9cessaire en changeant ServerName (le nom de domaine du site) et DocumentRoot (la localisation du contenu sur le FS). Je vous recommande de faire un fichier par site diff\u00e9rent, pour que \u00e7a soit plus clair. Ceci dit, \u00e7a peut \u00eatre int\u00e9ressant de regrouper dans un seul fichier plusieurs VirtualHost concernant le m\u00eame site.<\/p>\n<p style=\"text-align: justify;\">Une fois que vous avez termin\u00e9 la configuration de votre site, on l\u2019active :<\/p>\n<p><code># a2ensite almin.tf<br \/>\n# service apache2 reload<\/code><\/p>\n<h2>Configurations diverses<\/h2>\n<p style=\"text-align: justify;\">Voici divers moyens de personnaliser le comportement d\u2019Apache. Apr\u00e8s avoir termin\u00e9 vos modifications, demandez \u00e0 Apache de recharger sa configuration :<\/p>\n<p><code># service apache2 reload<\/code><\/p>\n<h4>Redirections<\/h4>\n<p style=\"text-align: justify;\">On peut rediriger le trafic d\u2019un domaine vers un autre. Par d\u00e9faut, la redirection est temporaire (code 302). Pour signaler aux moteurs de recherche et aux navigateurs que la redirection est permanente, on peut rajouter \u00ab 301 \u00bb ou \u00ab permanent \u00bb.<\/p>\n<p style=\"text-align: justify;\">Cette section redirige de <i>www.almin.tf\/*<\/i> vers <i>almin.tf<\/i>, en supprimant de l\u2019URL le chemin (la partie droite) :<\/p>\n<pre>\n&lt;VirtualHost *:80&gt;\n    ServerName www.almin.tf\n    ServerAdmin webmaster@almin.tf\n    RedirectMatch permanent ^.*$ http:\/\/almin.tf\/\n    LogLevel warn\n    CustomLog \/var\/log\/apache2\/www-almin-access.log combined\n    ErrorLog \/var\/log\/apache2\/www-almin-error.log\n&lt;\/VirtualHost&gt;\n<\/pre>\n<p style=\"text-align: justify;\">Rediriger seulement le trafic d\u2019un r\u00e9pertoire vers un autre :<\/p>\n<pre>\n    Redirect \/rep\/ http:\/\/almin.tf\/autre_rep\/\n<\/pre>\n<p style=\"text-align: justify;\">Rediriger en changeant de site mais en conservant le chemin, c\u2019est-\u00e0-dire renvoyer de <i>site1.tld\/chemin<\/i> vers <i>site2.tld\/chemin<\/i> :<\/p>\n<pre>\n    RedirectMatch ^\/(.*)$ http:\/\/site2.tld\/$1\n<\/pre>\n<h4>Contr\u00f4le de bande passante<\/h4>\n<p style=\"text-align: justify;\">Il faut installer le module correspondant :<\/p>\n<p><code># apt-get install libapache2-mod-bw<\/code><\/p>\n<p style=\"text-align: justify;\">Pour limiter la bande passante consomm\u00e9e par Apache \u00e0 1 Mbit\/s :<\/p>\n<pre>\n    BandwidthModule On\n    ForceBandWidthModule On\n    BandWidth all 1048576\n<\/pre>\n<h4>Prot\u00e9ger un r\u00e9pertoire par un mot de passe<\/h4>\n<p style=\"text-align: justify;\">Il faut utiliser htpasswd :<\/p>\n<p><code>% htpasswd \/path\/to\/password_file USER<\/code><\/p>\n<h4>R\u00e9pertoires utilisateurs<\/h4>\n<p style=\"text-align: justify;\">Si vous souhaitez permettre aux utilisateurs de disposer d&rsquo;une adresse <i>http:\/\/site.tld\/~utilisateur\/<\/i> qui contiendra les fichiers qu&rsquo;ils auront plac\u00e9s dans un r\u00e9pertoire <i>~\/public_html<\/i> :<\/p>\n<p><code># a2enmod userdir<\/code><\/p>\n<h4>R\u00e9pertoire virtuel avec index<\/h4>\n<p style=\"text-align: justify;\">Pour permettre de lister le contenu d\u2019un r\u00e9pertoire sans afficher son chemin complet dans l\u2019URL (pour des raisons de s\u00e9curit\u00e9, ou simplement pour le c\u00f4t\u00e9 pratique) :<\/p>\n<pre>\n    Alias \/rep_virtuel \/srv\/www\/chemin\/rep_r\u00e9el\n    &lt;Directory \/srv\/www\/chemin\/rep_r\u00e9el&gt;\n        Options +Indexes\n    &lt;\/Directory&gt;\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Apache peut h\u00e9berger plusieurs sites web sur le m\u00eame couple IP\/port, par le m\u00e9canisme des h\u00f4tes virtuels. Apr\u00e8s avoir vu la configuration de base d\u2019Apache, puis celle d\u2019un h\u00f4te virtuel, nous parlerons aussi de redirections, de contr\u00f4le de bande passante, etc. Ce tutoriel a \u00e9t\u00e9 tenu \u00e0 jour jusqu\u2019au 2 janvier 2017.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-100","post","type-post","status-publish","format-standard","hentry","category-hebergement","radius"],"_links":{"self":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":82,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/100\/revisions"}],"predecessor-version":[{"id":848,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/100\/revisions\/848"}],"wp:attachment":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/categories?post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/tags?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}