Introduction
Apache est le 2e serveur http le plus répandu panerai replica au monde avec actuellement (2019) près de 50% des serveurs web actifs sur Internet.
Le no 1 est nginx ( nginx.org ) dédié aux sites à très gros trafic.
Pour info les serveurs d’application omega Replica Web d’IBM et d’Oracle sont …
Apache est composé d’un certain nombre iwc replica watches de modules de base et de modules optionnels (livrés avec apache mais non compilés avec le noyau).
Il existe 2 modules standards (compilés statiquement) :
– http_core (le noyau d’apache)
– mod_so (le module de gestion des modules dynamiques ou dso)
Les principales commandes et utilitaires d’apache se situent dans :
repertoire_dinstall_apache/bin (souvent /usr/local/bin) :
utilitaire | objectif |
httpd | lancement du démon |
apachectl | utilitaire (shell) simplifié de start / stop / restart du démon |
appxs | gestion des extensions |
ab | tests de performance |
htpasswd | gestion des accès avec fichiers de passwords |
htdigest | gestion des accès avec authentification en mode digest |
dbmmanage | gestion des accès avec authentification par une BD externe |
logresolve | traitement différé (batch) des résolutions d’@ IP |
rotatelogs | permet de basculer vers un nouveau fichier log |
la commande suivante donne la liste des modules de base :
$ httpd -l
Compiled-in modules:
http_core.c
mod_so.c
Démarrage du serveur Apache
La commande httpd démarre le ou les démons http en standalone (indépendamment de inetd).
Suivant la config un process père et un ou plusieurs process fils sont démarrés. D’autres peuvent suivre pour s’adapter à la charge.
Les paramètres suivant de httpd.conf pilotent ce nombre de process :
MinSpareServers 5 : nombre min supplémentaires
MaxSpareServers 10 : nombre max de process supplémentaires
StartServers 5 : nombre initial
Le process père appartient au user qui lance http !
Les process fils ont le userid et le groupid définis par les paramètres user et group de httpd.conf
si on lance httpd sur le port d’écoute 80 (ce qui est la valeur par défaut) il faut être root !
Si on ne peut pas être root, il faut :
– soit lancer httpd sur un port >1024 (voir parmètre Port de httpd.conf)
– soit positionner le SUID bit du fichier httpd afin que le process s’exécute en tant que root, propriétaire du fichier, sans être connecté root! : chmod u+s /home_apache/bin/httpd
- Au démarrage httpd ouvre en écriture principalement 4 fichiers :
- – pidfile : il y stocke le no de process (pid) du process httpd père
- – lockfile : fichier de verrouillage des requêtes concurrentes
– access log : les traces de tous les accès clients
– error log : les erreurs
faire attention aux droits d’écriture dans les répertoires d’accueil de ces fichiers. En cas de problème lors du démarrage voir éventuellement les erreurs tracées dans le log d’erreurs
lancement d’apache :
$httpd -f mon_fichier_de_config sur certains Unix : $apache -f mon_fichier_de_config ou plus simple mais moins maîtrisé : $apachectl start
rem: sur Windows on s’appuiera souvent sur des services et sur un outil graphique de management
exemple de lancement sous Linux/Ubuntu
dd@dd-laptop:~$ systemctl start apache2 dd@dd-laptop:~$ systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Thu 2019-12-12 23:25:00 CET; 1min 28s ago Process: 2882 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS Process: 2901 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCE Main PID: 2905 (apache2) Tasks: 55 (limit: 4915) CGroup: /system.slice/apache2.service ├─2905 /usr/sbin/apache2 -k start ├─2906 /usr/sbin/apache2 -k start └─2907 /usr/sbin/apache2 -k start déc. 12 23:25:00 dd-laptop systemd[1]: Starting The Apache HTTP Server... déc. 12 23:25:00 dd-laptop systemd[1]: Started The Apache HTTP Server. dd@dd-laptop:~$
vérification du lancement
Sur Unix/linux
$ps -ef|grep http intranet 24774 1 0 Dec 03 - 0:06 /usr/local/bin/httpd nobody 25026 24774 0 Dec 03 - 0:00 /usr/local/bin/httpd nobody 25284 24774 0 Dec 03 - 0:00 /usr/local/bin/httpd nobody 25824 24774 0 16:55:41 - 0:00 /usr/local/bin/httpd
soit un process père de propriétaire ‘inttranet’ et 3 process fils appartenant à nobody (pas de root donc ici…)
ou sur Linux/Ubuntu
dd@dd-laptop:~$ ps -ef|grep apache root 2905 1 0 23:25 ? 00:00:00 /usr/sbin/apache2 -k start www-data 2906 2905 0 23:25 ? 00:00:00 /usr/sbin/apache2 -k start www-data 2907 2905 0 23:25 ? 00:00:00 /usr/sbin/apache2 -k start dd 2995 1868 0 23:26 pts/1 00:00:00 grep --color=auto apache dd@dd-laptop:~$
ou sur Windows
gestionnaire de taches (en prenant soin d’afficher TOUS les processus utilisateurs)
ou
C:> netstat -a
en filtrant éventuellement sur le port 80
Arrêt / redémarrage du serveur Apache
ARRET :
$ apachectl stop ou $ ps -ef|grep http ... $ kill -TERM pid_process_pere
REDEMARRAGE IMMEDIAT (le process pere tue les fils sans attente) :
$apachectl restart
ou
$ ps -ef|grep http
...
$ kill -HUP pid_process_pere
REDEMARRAGE EN SOUPLESSE…
$ apachectl graceful $ kill -USR1 pid_process_pere
Apache configuration minimale
Le fichier httpd.conf est par défaut dans le sous répertoire conf du ‘ServerRoot’ (le répertoire d’install d’apache: /usr/local/apache/conf sur Unix
On peut le modifier avec Notepad ou vi car c’est un fichier texte.
Vous pouvez consulter le fichier httpd.conf.default fourni par défaut…
Il faut relancer Apache pour que les modifs soient prises en compte (apachectl restart, par exemple).
Pour vérifier les principaux paramètres:
$> apachectl -s C:\> httpd -S (en majuscule)
Organisation de la configuration
Le fichier principal htpd.conf fait appel, grace à la directive <Include> à d’autres fichiers de configurations plus spécifiques ou simplement plus personnalisés.
Eviter de mettre du spécifique dans le fichier principal. Si on veut faire du virtual host par exemple on incluera un fichier .conf spécifique pour le virtual host et on ne modifiera que ce fichier.
Voici un exemple des fichiers inclus ou ‘incluables’ (ceux en commentaire !)
# Virtual hosts #Include conf/extra/httpd-vhosts.conf # # Various default settings Include conf/extra/httpd-default.conf
La configuration du serveur s’effectue via des directives de configuration que l’on insère dans les fichiers de configuration. Une directive se compose d’un mot-clé suivi d’un ou plusieurs arguments qui définissent sa valeur.
# DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "C:/Bitnami_wamp7/apache2/htdocs"
Conteneurs et sections
Le paramétrage peut s’appliquer à la totalité du site ou être restreint à des sous parties du site , des sections.
On définir dse sections pour des répertoires, fichiers, hôtes, ou URLs particuliers.
Une section est délimitée par des balises de début et de fin, et seules les directives à l’intérieur seront opérationnelles.
La plupart des conteneurs de ces sections sont évalués pour chaque requête. . En revanche, les conteneurs <IfDefine>
, <IfModule>
, et <IfVersion>
sont évalués seulement au démarrage ou au redémarrage du serveur.
Quelques exemples de conteneurs utiles:
</Directory> : Limite les directives au contenu du répertoire ET des sous répertoire
<Directory "/prive"> Require all denied </Directory>
<Files> : directives qui s’appliquent à un ou plusieurs fichiers
<Files "toto.html"> # directives qui s'appliquent au fichier toto </Files> <Files "*.pdf"> # directives qui s'appliquent aux pdf </Files>
<Location> : N’applique les directives contenues qu’aux URLs spécifiées
remarque: location est utile en dehors du systeme de fichiers sinon on peut utiliser <Directory>.
Un dato interesante es que muchos hombres no buscan tratamiento para problemas de erección debido a la vergüenza o el estigma social. Sin embargo, hay varias opciones disponibles, incluidas las soluciones que se pueden obtener en línea, como es el caso de aquellos que desean ***. La falta de información y el miedo a la consulta médica a menudo impiden que los hombres tomen medidas para mejorar su salud sexual.
Uno de los factores que puede contribuir a la disfunción eréctil es el estrés, que a menudo afecta la salud sexual de los hombres. Si bien hay tratamientos disponibles, algunos pueden buscar alternativas para aliviar sus síntomas, como el uso de medicamentos. Por ejemplo, algunos hombres han considerado opciones como » para manejar la ansiedad que puede interferir con su rendimiento sexual.
Un dato interesante es que muchos hombres pueden experimentar problemas de erección en algún momento de su vida, lo cual puede ser influenciado por factores físicos y emocionales. En algunos casos, se ha observado que medicamentos como el tofranil pueden tener un impacto en la función sexual, por lo que es importante consultar a un médico antes de decidir “. La salud del corazón, el estrés y otros problemas emocionales también pueden contribuir a este tipo de condición.
<Location "/private1"> # ... </Location>
l’exemple suivant montre comment faire référence à une URL particulière vers un gestionnaire interne du serveur HTTP Apache fourni par le module mod_status
. Il n’est pas nécessaire de trouver un fichier nommé server-status
dans le système de fichiers.
<Location "/server-status"> SetHandler server-status </Location>
Conteneur Fichier ou URL?
Pour appliquer des directives à des objets qui résident dans le système de fichiers, utilisez toujours un conteneur <Directory>
ou <Files>
. Pour appliquer des directives à des objets qui ne résident pas dans le système de fichiers (comme une page web générée par une base de données), utilisez un conteneur <Location>
.
Il ne faut jamais utiliser un conteneur <Location>
pour restreindre l’accès à des objets du système de fichiers, car plusieurs localisations de l’arborescence du site web (URLs) peuvent correspondre à la même localisation du système de fichier, ce qui peut permettre de contourner vos restrictions.
Fichier .htaccess
En plus des fichiers de configurations, certaines directives peuvent résider dans le ficheir .htaccess
situé dans le répertoire de contenu.
C’est particulièrement utile lorque qu’on est hébergé… chez un hébergeur et qu’on n’a pas accès à la gestion du serveur Apache.
Il est possible d’utiliser un autre nom de fichier d’autorisation que .htaccess avec la directive AccessFileName :
AccessFileName .htaccess_a_dd
La possibilité d’utiliser un .htaccess ou équivalent est soumise à autorisation, avec la directive AllowOverride :
AllowOverride All #pour autoriser le fichier .htaccess à positionner #TOUTES les restrictions utiles. AllowOverride None #indique à Apache d’ignorer totalement la présence d’un fichier .htaccess
Pour en savoir plus sur htaccess voir le .htaccess
howto.
Quelques paramètres de httpd.conf, bien utiles
paramètre | signification | valeur par défaut | exemple |
ServerRoot | la racine d’install d’apache | Unix : /usr/local/apache | ServerRoot « /usr/local » |
DocumentRoot | la racine du site (le ‘/’ des documents | DocumentRoot « c:\wwwroot\ » | |
ServerName | le nom logique du serveur (en général un nom DNS complet serveur + nom de domaine | ServerName site_dd.free.fr | |
port | no de port TCP/IP a l’ecoute des requete http | 80 (on peut l’omettre dans l’URL) | port 82 |
user | le propriétaire des process HTTP | User nobody | |
group | le groupe d’appartenance des process HTTP | Group nobody | |
ServerAdmin | le mail de l’administrateur (sera indiqué lors d’erreur du serveur) | root@localhost | ServerAdmin dd@free.fr |
StartServers | le nb de process simultanés démarrés lors du lancement de httpd | 5 | StartServers 3 |
DirectoryIndex | les fichiers d’index acceptés | index.html | DirectoryIndex index.php |
PassEnv SetEnv |
Déclaration de variable dans l’env. Apache et….Affectation de valeur | PassEnv LIBPATH SetEnv LIBPATH /toto/lib |
|
Options | options d’une Directory | FollowSymlinks |
Options Indexes |
ErrorLog | emplacement des fichier traces d’erreur | ErrorLog /var/apache/log/error_log | |
CustomLog | emplacement des fichier traces des requetes HTTP clientes | CustomLog /var/apache/log/access_log common | |
Fichier de configuration minimal (version 2.4 ou >)
# http.conf Ultra Light # # le minimum syndical pour le serveur et la racine # ServerRoot "C:/Bitnami/wampstack-5.6.40-1/apache2" Listen 80 ServerName localhost:80 DocumentRoot "C:/Bitnami/wampstack-5.6.40-1/apache2/htdocs" # # modules utiles a minima # LoadModule authz_core_module modules/mod_authz_core.so LoadModule dir_module modules/mod_dir.so # # on securise le file system # <Directory /> AllowOverride none Require all denied </Directory> # # on autorise le repertoire (et les sous rep) utiles* # <Directory "C:/Bitnami/wampstack-5.6.40-1/apache2/htdocs"> Require all granted </Directory>
remarque: l’accès à la racine du serveur suppose l’existence d’ un document nommé index.html (valeur par défaut de DirectoryIndex)