Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| linux:apache [11-12-2015 21:08] – [PHP] edmc73 | linux:apache [03-07-2025 14:42] (Version actuelle) – [htcacheclean] edmc73 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Apache ====== | ====== Apache ====== | ||
| Cette page est juste un mémo | Cette page est juste un mémo | ||
| + | |||
| + | Docs => http:// | ||
| ===== Commandes utiles ===== | ===== Commandes utiles ===== | ||
| Ligne 26: | Ligne 28: | ||
| apache2ctl fullstatus | apache2ctl fullstatus | ||
| + | ===== Configuration de base ===== | ||
| + | La doc => http:// | ||
| + | |||
| + | Le minimum pour un accès avec un nom de domaine | ||
| + | <code apache> | ||
| + | # Apache doit écouter sur le port 80 | ||
| + | Listen 80 | ||
| + | |||
| + | # Toutes les adresses IP doivent répondre aux requêtes sur les | ||
| + | # serveurs virtuels | ||
| + | NameVirtualHost *:80 | ||
| + | |||
| + | < | ||
| + | DocumentRoot / | ||
| + | ServerName www.example1.com | ||
| + | |||
| + | # Autres directives ici | ||
| + | |||
| + | </ | ||
| + | |||
| + | < | ||
| + | DocumentRoot / | ||
| + | ServerName www.example2.org | ||
| + | |||
| + | # Autres directives ici | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Les directives | ||
| + | <code apache> | ||
| + | < | ||
| + | AllowOverride None | ||
| + | Options Indexes FollowSymLinks | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Les options | ||
| + | |||
| + | * AllowOverride None / All : permet la prise en compte des fichiers .htaccess (plus d' | ||
| + | * Options : par défaut All (toutes les options sauf MultiViews). Plus d' | ||
| + | * None : Désactive toutes les fonctions | ||
| + | * ExecCGI : Exécution de scripts CGI permise | ||
| + | * FollowSymLinks : Permet au serveur de suivre les liens symboliques | ||
| + | * Indexes : Affiche la liste des fichiers contenu dans le répertoire si aucun fichier index.html/ | ||
| + | * MultiViews : Permet au serveur d' | ||
| + | |||
| + | Accès par mot de passe | ||
| + | <code apache> | ||
| + | #accès au fichier de mot de passe généré par la commande htpasswd | ||
| + | AuthUserFile .htpasswd | ||
| + | AuthGroupFile /dev/null | ||
| + | AuthName "Ce message s' | ||
| + | AuthType Basic | ||
| + | <Limit GET POST> | ||
| + | require valid-user | ||
| + | </ | ||
| + | </ | ||
| ===== Installation de Apache2-mpm-worker ===== | ===== Installation de Apache2-mpm-worker ===== | ||
| http:// | http:// | ||
| Ligne 153: | Ligne 213: | ||
| par | par | ||
| create 644 root adm | create 644 root adm | ||
| + | |||
| + | |||
| + | ==== internal dummy connection ==== | ||
| + | |||
| + | --- source: https:// | ||
| + | |||
| + | Si vous avez plein de log apache avec des lignes **internal dummy connection**, | ||
| + | |||
| + | # Filters | ||
| + | SetEnvIf Remote_Addr " | ||
| + | SetEnvIf Remote_Addr " | ||
| + | |||
| + | Ensuite, on doit activer ce filtre le fichier de définition de votre site (sous le répertoire / | ||
| + | CustomLog / | ||
| + | |||
| + | Un restart d' | ||
| | | ||
| ===== Lorsque Apache est installé dans un NAT à travers d'un reverse proxy ===== | ===== Lorsque Apache est installé dans un NAT à travers d'un reverse proxy ===== | ||
| Ligne 232: | Ligne 308: | ||
| Avec **httperf** voir très bon tuto => http:// | Avec **httperf** voir très bon tuto => http:// | ||
| + | |||
| + | Un outils intégré avec apache, **ab** pour apache benchmark | ||
| + | |||
| + | Pour tester une url avec 2000 requêtes dont 10 en simultanées | ||
| + | ab -c 10 -n 2000 ' | ||
| + | |||
| + | |||
| + | |||
| + | Pour envoyer en POST, créer un fichier **post.txt** avec les paramètres urlencodé | ||
| + | email=toto%40toto.fr& | ||
| + | |||
| + | Utilisez la commande suivante | ||
| + | ab -p post.txt -T ' | ||
| Ligne 258: | Ligne 347: | ||
| Coté sécurité, le mpm itk permet d’isoler la configuration de chaque vhost directement dans son fichier de configuration. | Coté sécurité, le mpm itk permet d’isoler la configuration de chaque vhost directement dans son fichier de configuration. | ||
| + | |||
| + | Il n'y a plus qu'a créer un utilisateur et de rajouter ces lignes dans vos config | ||
| + | < | ||
| + | AssignUserId username groupname | ||
| + | </ | ||
| Plus d'info : | Plus d'info : | ||
| Ligne 266: | Ligne 360: | ||
| - | --- //auteur [[user:edmc73|edmc73]]// | + | |
| + | ===== En cas de piratage ===== | ||
| + | |||
| + | Restaurer une sauvegarde et comparer les répertoires avec **diff** | ||
| + | diff -qr repOK repHACKED | ||
| + | |||
| + | Recopier que les fichiers qui ont changé avec **rsync** | ||
| + | rsync -avP repOK repHACKED | ||
| + | |||
| + | Refaite un diff pour des nouveaux fichiers ne serait pas resté tout seul | ||
| + | |||
| + | |||
| + | |||
| + | Comparer les logs | ||
| + | |||
| + | |||
| + | ===== Debian 10 Apache 2.4 php7.3 ===== | ||
| + | |||
| + | Sur la dernière debian, apache est par défaut apache mpm event. | ||
| + | Plus question ici d' | ||
| + | |||
| + | apt install php7.3-fpm | ||
| + | a2enmod proxy_fcgi | ||
| + | a2enconf php7.3-fpm | ||
| + | systemctl restart apache | ||
| + | |||
| + | le module itk n'est plus nécessaire, | ||
| + | |||
| + | => doc: https://villalard.net/ | ||
| + | |||
| + | < | ||
| + | # cd / | ||
| + | # ls | ||
| + | www.conf | ||
| + | |||
| + | cp www.conf dev.conf | ||
| + | vi dev.conf | ||
| + | |||
| + | </ | ||
| + | |||
| + | On modifie au minimum | ||
| + | < | ||
| + | ; Start a new pool named ' | ||
| + | ; the variable $pool can be used in any directive and will be replaced by the | ||
| + | ; pool name (' | ||
| + | [dev] | ||
| + | |||
| + | ; Unix user/group of processes | ||
| + | ; Note: The user is mandatory. If the group is not set, the default user's group | ||
| + | ; will be used. | ||
| + | user = edmc | ||
| + | group = edmc | ||
| + | |||
| + | ; The address on which to accept FastCGI requests. | ||
| + | ; Valid syntaxes are: | ||
| + | ; ' | ||
| + | ; a specific port; | ||
| + | ; ' | ||
| + | ; a specific port; | ||
| + | ; ' | ||
| + | ; (IPv6 and IPv4-mapped) on a specific port; | ||
| + | ; '/ | ||
| + | ; Note: This value is mandatory. | ||
| + | listen = / | ||
| + | </ | ||
| + | |||
| + | ensuite on adapte notre config apache | ||
| + | < | ||
| + | < | ||
| + | SetHandler " | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | on restart php et apache | ||
| + | systemctl restart php7.3-fpm.service apache2.service | ||
| + | |||
| + | et voila :) | ||
| + | |||
| + | ===== htcacheclean ===== | ||
| + | |||
| + | Activez les modules | ||
| + | a2enmod mod_cache mod_cache_disk | ||
| + | |||
| + | Dans la config du site, pour un cache de 60 secondes | ||
| + | <code apache> | ||
| + | < | ||
| + | < | ||
| + | #LogLevel debug | ||
| + | CacheRoot / | ||
| + | CacheDefaultExpire 60 | ||
| + | CacheMinExpire 60 | ||
| + | CacheMaxExpire 60 | ||
| + | CacheEnable disk / | ||
| + | # | ||
| + | CacheHeader On | ||
| + | CacheIgnoreCacheControl On | ||
| + | CacheIgnoreNoLastMod On | ||
| + | CacheStoreNoStore On | ||
| + | CacheStoreExpired On | ||
| + | # | ||
| + | # | ||
| + | #UnsetEnv no-cache | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Voir les fichiers en cache | ||
| + | htcacheclean -A -p/ | ||
| + | |||
| + | Si vous avez configuré un autre répertoire que celui par défaut, la purge ne se fera pas, mettez un cron | ||
| + | 0 */2 * * * / | ||
| + | |||
| + | Cette exemple purge toutes les 2 heures en vérifiant que la taille globale ne dépasse pas 100Mo, '' | ||
| + | |||
| + | ===== Restriction par ip ===== | ||
| + | |||
| + | Avant apache 2.4 c' | ||
| + | < | ||
| + | < | ||
| + | Order deny, | ||
| + | Deny from all | ||
| + | Allow from 14.14.14.14, | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Depuis Apache 2.4 c'est ça | ||
| + | < | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </Directory> | ||
| + | </code> | ||
| + | |||