« Httpd install start » : différence entre les versions
Autres actions
Page créée avec « {|border=1 class="wikitable" ! !! HTTP !! HTTPS |-align="center" | '''Protocole''' || tcp || tcp |-align="center" | '''Port''' || 80 || 443 |-align="center" | '''Configuration Iptables''' || iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT || iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT |} = Préparation = Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux. Pour ceux qui auraient manqué des éta... » |
|||
| (2 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 144 : | Ligne 144 : | ||
= Parcours des logs = | = Parcours des logs = | ||
{{#lst:Les_logs|log_httpd}} | {{#lst:Les_logs|log_httpd}} | ||
= Quelques directives de configuration = | |||
{|class="wikitable" | |||
! Directive !! Valeur par défaut !! Config httpd !! Config Vhost !! Utilisation | |||
|-valign=top | |||
||ServerTokens | |||
|align="center"|OS | |||
|align="center"| X | |||
|align="center"| | |||
|| Permet de ne pas donner trop d'informations sur les modules qui sont installés. Généralement on passe cette directive à '''Prod''' | |||
|- | |||
||ServerRoot | |||
|align="center"|"/etc/httpd" | |||
|align="center"| X | |||
|| | |||
||Permet d'indiquer le répertoire d'installation d'Apache. Normalement les scripts d'installation ont bien renseigné cette ligne. Vérifiez quand même. | |||
|- | |||
||PidFile | |||
|align="center"|run/httpd.pid | |||
|align="center"|X | |||
|align="center"| | |||
||Indique au script de démarrage d'enregistrer le numéro de processus d'Apache pour que lors de l'arrêt du système le processus Apache soit stoppé correctement. | |||
|- | |||
||Timeout | |||
|align="center"|60 | |||
|align="center"|X | |||
|align="center"| | |||
||Temps en secondes avant que le serveur n'envoie ou ne reçoive un timeout . Quand le serveur attend une ''réponse'' qui dépasse le temps définit par '''Timeout'', il va s'interrompre et prévenir l'utilisateur de l'erreur. Laissez cette valeur par défaut à moins que vous n'effectuiez des traitements dépassant cette limite. Ne pas monter trop haut cette valeur non plus car si le programme externe à "planté", ou si une erreur est survenue, vous risquez de rendre inaccessible le serveur Apache pour trop de temps (il est toujours désagréable d'attendre pour rien). | |||
|- | |||
||KeepAlive | |||
|align="center"|Off | |||
|align="center"|X | |||
|align="center"|X | |||
||Autorise ou non les connexions persistantes (plusieurs requêtes par connexions). En fait cela permet aux utilisateurs de votre serveur de lancer plusieurs requêtes à la fois, et donc d'accélérer les réponses du serveur. Laissez cette valeur par défaut la plupart du temps. Pour de petits serveurs laissez cette option sur on . Pour un serveur très sollicité, dès que vous vous apercevez que le système ralentit énormément ou devient indisponible assez souvent, essayez avec la valeur off . Mais avant, essayez de baisser la valeur de l'option suivante. | |||
|- | |||
||MaxKeepAliveRequests | |||
|align="center"| | |||
|align="center"|X | |||
|align="center"|X | |||
||En combinaison avec l'option précédente, indique le nombre de requêtes pour une connexion. Laissez cette valeur assez haute pour de très bonnes performances. Si vous mettez 0 comme valeur, vous en autorisez en fait un nombre illimité (attention donc). Laissez la valeur par défaut là aussi. | |||
|- | |||
||KeepAliveTimeout | |||
|align="center"|15 | |||
|align="center"|X | |||
|align="center"|X | |||
||Valeur d'attente en secondes avant la requête suivante d'un même client, sur une même connexion, avant de renvoyer un ''timeout''. Laisser la valeur par défaut. | |||
|- | |||
||Listen | |||
|align="center"|80 | |||
|align="center"|X | |||
|align="center"|X | |||
||Indique au serveur des ports ou des adresses IP, ou les deux, où il doit ''écouter'' les demandes de connexions. | |||
|- | |||
||LoadModule, ClearModuleList & AddModule | |||
|align="left" width=20%| | |||
LoadModule xxxxxx.mod libexec/yyyyyy.so | |||
<br>ClearModuleList | |||
<br>AddModule zzzz.c | |||
|align="center"|X | |||
|align="center"| | |||
||Support pour les modules DSO (Dynamic Shared Object). LoadModule permet de charger un module. Avant Apache 2, les directives ClearModuleList et AddModule permettaient de spécifier l'ordre d'exécution des modules, à cause de problèmes de dépendances. Apache 2 peut maintenant faire cela automatiquement, car les APIs de modules leur permet de spécifier eux-mêmes leur ordre. Sous Apache 1.*, il faut cependant y prêter une grande attention, et le maintenir à jour à l'ajout de tout nouveau module. | |||
|} | |||
Dernière version du 31 mai 2026 à 12:08
| HTTP | HTTPS | |
|---|---|---|
| Protocole | tcp | tcp |
| Port | 80 | 443 |
| Configuration Iptables | iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT | iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT |
Préparation
Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.
Pour ceux qui auraient manqué des étapes les voici:
Une fois ces étapes effectuées, entrons dans le vif du sujet !
Installation
HTTP
# dnf -y install httpd
HTTP et HTTPS
# dnf -y install httpd mod_ssl
HTTP2
Si vous souhaitez accélérer le chargement de votre site, il est intéressant de passer en HTTP2. Pour ça on va installer le paquetage :
# dnf -y install mod_http2
Configuration de base
Avant le premier démarrage
Tout d'abord il faut paramétrer le nom de la machine ainsi que l'adresse d'écoute
Pour cela cherchez dans le fichier /etc/httpd/conf/httpd.conf les lignes commençant par :
- Listen 80
- #ServerName www.example.com:80
La première doit contenir l'adresse IP de la machine ou * pour que httpd écoute sur toutes les interfaces
Listen *:80
La deuxième doit être cohérente avec le nom de la machine qui est précisé dans le fichier network
ServerName web:80
Si vous souhaitez activer HTTP2 n'oubliez pas d'ajouter la ligne suivante dans le fichier /etc/httpd/conf/httpd.conf :
Protocols h2 http/1.1
Premier démarrage
Maintenant on peut démarrer httpd
- Pour SystemVInit:
# service httpd start Démarrage de httpd : [ OK ]
- Pour SystemD :
# systemctl start httpd.service
Vérification
On peut vérifier que httpd écoute sur la bonne adresse et les bons ports
- CentOS 6:
# netstat -atnp | grep httpd tcp 0 0 :::80 :::* LISTEN 1202/httpd tcp 0 0 :::443 :::* LISTEN 1202/httpd
- CentOS 7:
# ss -atnp | grep httpd
LISTEN 0 128 :::80 :::* users:(("httpd",pid=1483,fd=4),("httpd",pid=1482,fd=4),("httpd",pid=1481,fd=4),("httpd",pid=1480,fd=4),("httpd",pid=1479,fd=4),("httpd",pid=1478,fd=4))
Enregistrement dans le chargeur de démarrage
- Pour SystemVInit:
# chkconfig httpd on
- Pour SystemD:
# systemctl enable httpd.service
Après le premier démarrage
Essayez de ne jamais JAMAIS jamais redémarrer le serveur Apache avec :
# systemctl restart httpd
"restart" a pour effet de stopper puis démarrer le serveur, si une erreur est présente dans votre configuration le serveur s'arrête sans redémarrer, ce qui ajoute toujours un peu de pression si c'est un serveur de production... ou si c'est vendredi à 17h :)
À la place, préférez vérifier la configuration avec la commande:
# httpd -S
Si une erreur est présente, le fichier et la ligne en question seront mentionnés.
Une fois toutes les vérifications effectuées, utilisez la commande suivante pour recharger la configuration du serveur Apache:
# httpd -k graceful
Si des erreurs sont présentes dans un fichier de configuration, le serveur les affichera mais n'en tiendra pas compte.
Ajout d'une page html
Le dossier de travail de httpd est précisé grâce à la variable DocumentRoot qui a la valeur /var/www/html
Vous pouvez donc créer votre premier site web en ajoutant dans ce dossier le fichier désigné par la variable DirectoryIndex (généralement index.html)
# vi /var/www/html/index.html
Une fois le fichier édité, il ne faut pas oublier de repositionner les bons droits pour qu'apache soit apte à le lire
# chown apache.apache -R /var/www/html
Parcours des logs
httpd log dans le répertoire /var/log/httpd/ et utilise deux fichiers:
- access_log → pour journaliser tous les accès
- error_log → pour journaliser toutes les erreurs
Démarrage et erreurs
Le fichier /var/log/httpd/error_log est fait pour ça. Quand vous avez une erreur PHP ou autre, c'est ici qu'il faut venir faire un tour:
[Sat Feb 15 02:32:53 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Sat Feb 15 02:32:53 2014] [notice] Digest: generating secret for digest authentication ... [Sat Feb 15 02:32:53 2014] [notice] Digest: done [Sat Feb 15 02:32:54 2014] [notice] Apache/2.2.15 (Unix) DAV/2 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
Vérifier l'accès aux pages
Pour vérifier qui demande quoi sur à votre serveur, c'est dans le fichier /var/log/httpd/access_log qu'il faut venir regarder:
192.168.200.254 - - [30/Dec/2013:13:43:38 +0100] "GET / HTTP/1.1" 200 130 "-" "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0" 192.168.200.254 - - [30/Dec/2013:13:43:39 +0100] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0" 192.168.200.254 - - [30/Dec/2013:13:43:42 +0100] "GET / HTTP/1.1" 200 14 "-" "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0" 192.168.200.254 - - [30/Dec/2013:13:43:45 +0100] "GET / HTTP/1.1" 200 130 "-" "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0"
Quelques directives de configuration
| Directive | Valeur par défaut | Config httpd | Config Vhost | Utilisation |
|---|---|---|---|---|
| ServerTokens | OS | X | Permet de ne pas donner trop d'informations sur les modules qui sont installés. Généralement on passe cette directive à Prod | |
| ServerRoot | "/etc/httpd" | X | Permet d'indiquer le répertoire d'installation d'Apache. Normalement les scripts d'installation ont bien renseigné cette ligne. Vérifiez quand même. | |
| PidFile | run/httpd.pid | X | Indique au script de démarrage d'enregistrer le numéro de processus d'Apache pour que lors de l'arrêt du système le processus Apache soit stoppé correctement. | |
| Timeout | 60 | X | Temps en secondes avant que le serveur n'envoie ou ne reçoive un timeout . Quand le serveur attend une réponse qui dépasse le temps définit par 'Timeout, il va s'interrompre et prévenir l'utilisateur de l'erreur. Laissez cette valeur par défaut à moins que vous n'effectuiez des traitements dépassant cette limite. Ne pas monter trop haut cette valeur non plus car si le programme externe à "planté", ou si une erreur est survenue, vous risquez de rendre inaccessible le serveur Apache pour trop de temps (il est toujours désagréable d'attendre pour rien). | |
| KeepAlive | Off | X | X | Autorise ou non les connexions persistantes (plusieurs requêtes par connexions). En fait cela permet aux utilisateurs de votre serveur de lancer plusieurs requêtes à la fois, et donc d'accélérer les réponses du serveur. Laissez cette valeur par défaut la plupart du temps. Pour de petits serveurs laissez cette option sur on . Pour un serveur très sollicité, dès que vous vous apercevez que le système ralentit énormément ou devient indisponible assez souvent, essayez avec la valeur off . Mais avant, essayez de baisser la valeur de l'option suivante. |
| MaxKeepAliveRequests | X | X | En combinaison avec l'option précédente, indique le nombre de requêtes pour une connexion. Laissez cette valeur assez haute pour de très bonnes performances. Si vous mettez 0 comme valeur, vous en autorisez en fait un nombre illimité (attention donc). Laissez la valeur par défaut là aussi. | |
| KeepAliveTimeout | 15 | X | X | Valeur d'attente en secondes avant la requête suivante d'un même client, sur une même connexion, avant de renvoyer un timeout. Laisser la valeur par défaut. |
| Listen | 80 | X | X | Indique au serveur des ports ou des adresses IP, ou les deux, où il doit écouter les demandes de connexions. |
| LoadModule, ClearModuleList & AddModule |
LoadModule xxxxxx.mod libexec/yyyyyy.so
|
X | Support pour les modules DSO (Dynamic Shared Object). LoadModule permet de charger un module. Avant Apache 2, les directives ClearModuleList et AddModule permettaient de spécifier l'ordre d'exécution des modules, à cause de problèmes de dépendances. Apache 2 peut maintenant faire cela automatiquement, car les APIs de modules leur permet de spécifier eux-mêmes leur ordre. Sous Apache 1.*, il faut cependant y prêter une grande attention, et le maintenir à jour à l'ajout de tout nouveau module. |