Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
linux:apache [11-12-2015 22:08] edmc73 [PHP] |
linux:apache [03-10-2019 16:26] (Version actuelle) edmc73 [htcacheclean] |
||
---|---|---|---|
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, '' |