Outils pour utilisateurs

Outils du site


linux:apache (lu 68369 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:apache [19-01-2016 11:19]
edmc73 [apache2-mpm-itk]
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://devdocs.io/apache_http_server/
  
 ===== Commandes utiles ===== ===== Commandes utiles =====
Ligne 26: Ligne 28:
   apache2ctl fullstatus   apache2ctl fullstatus
  
 +===== Configuration de base =====
  
 +La doc => http://httpd.apache.org/docs/2.2/fr/
 +
 +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
 +
 +<VirtualHost *:80>
 +DocumentRoot /www/example.com
 +ServerName www.example1.com
 +
 +# Autres directives ici
 +
 +</VirtualHost>
 +
 +<VirtualHost *:80>
 +DocumentRoot /www/example.org
 +ServerName www.example2.org
 +
 +# Autres directives ici
 +
 +</VirtualHost>
 +</code>
 +
 +Les directives
 +<code apache>
 +<Directory /usr/local/httpd/htdocs>
 +  AllowOverride None
 +  Options Indexes FollowSymLinks
 +</Directory>
 +</code>
 +
 +Les options
 +
 +  * AllowOverride None / All : permet la prise en compte des fichiers .htaccess (plus d'options dans la doc http://httpd.apache.org/docs/2.2/fr/mod/core.html#allowoverride )
 +  * Options : par défaut All (toutes les options sauf MultiViews). Plus d'options dans la doc http://httpd.apache.org/docs/2.2/fr/mod/core.html#options)
 +    * 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/php n'est présent
 +    * MultiViews : Permet au serveur d'exécuter un fichier qui ressemblerait au fichier demandé si il n'existe pas. ex: un appel à /fichier exécutera /fichier.php si /fichier n'existe pas mais que /fichier.php existe
 +
 +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'affichera dans la boite de dialogue demandant l'identification"
 +AuthType Basic
 +<Limit GET POST>
 +  require valid-user
 +</Limit>
 +</code>
 ===== Installation de Apache2-mpm-worker ===== ===== Installation de Apache2-mpm-worker =====
 http://www.skyminds.net/serveur-dedie-installation-dapache-php-mysql-et-webmin/ http://www.skyminds.net/serveur-dedie-installation-dapache-php-mysql-et-webmin/
Ligne 153: Ligne 213:
 par par
   create 644 root adm   create 644 root adm
 +
 +
 +==== internal dummy connection ====
 +
 +--- source: https://blog.nicolargo.com/2011/03/supprimer-les-logs-apache-internal-dummy-connection.html
 +
 +Si vous avez plein de log apache avec des lignes **internal dummy connection**, créez un fichier de conf avec
 +
 +  # Filters
 +  SetEnvIf Remote_Addr "127\.0\.0\.1" local
 +  SetEnvIf Remote_Addr "\:\:1" local
 +
 +Ensuite, on doit activer ce filtre le fichier de définition de votre site (sous le répertoire /etc/apache2/site-enabled). Il faut modifier la ligne suivante:
 +  CustomLog /var/log/apache2/www-access.log combined env=!local
 +
 +Un restart d'apache pour appliquer
      
 ===== 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://www.synbioz.com/blog/benchmark_avec_httperf Avec **httperf** voir très bon tuto => http://www.synbioz.com/blog/benchmark_avec_httperf
 +
 +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 'https://mon_serveur/url_a_bourriner'
 +
 +
 +
 +Pour envoyer en POST, créer un fichier **post.txt** avec les paramètres urlencodé
 +  email=toto%40toto.fr&variable=1
 +
 +Utilisez la commande suivante
 +  ab -p post.txt -T 'application/x-www-form-urlencoded' -c 10 -n 2000 'https://mon_server/api/test'
  
  
Ligne 285: Ligne 374:
  
 Comparer les logs 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'installer le module apache php. Pour activer php, suivez les commandes
 +
 +  apt install php7.3-fpm
 +  a2enmod proxy_fcgi
 +  a2enconf php7.3-fpm
 +  systemctl restart apache
 +
 +le module itk n'est plus nécessaire, maintenant on peut gérer les users directement dans la config des pools php
 +
 +=> doc: https://villalard.net/utiliser-apache-avec-php-fpm
 +
 +<code>
 +# cd /etc/php/7.3/fpm/pool.d
 +# ls
 +www.conf
 +
 +cp www.conf dev.conf
 +vi dev.conf
 +
 +</code>  
 +
 +On modifie au minimum
 +<code>
 +; Start a new pool named 'www'.
 +; the variable $pool can be used in any directive and will be replaced by the
 +; pool name ('www' here)
 +[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:
 +;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
 +;                            a specific port;
 +;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
 +;                            a specific port;
 +;   'port'                 - to listen on a TCP socket to all addresses
 +;                            (IPv6 and IPv4-mapped) on a specific port;
 +;   '/path/to/unix/socket' - to listen on a unix socket.
 +; Note: This value is mandatory.
 +listen = /run/php/dev.sock
 +</code>
 +
 +ensuite on adapte notre config apache
 +<code>
 +        <FilesMatch \.php$>
 +                SetHandler "proxy:unix:/run/php/dev.sock|fcgi://localhost/"
 +        </FilesMatch>
 +</code>
 +
 +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>
 +    <IfModule mod_cache.c>
 +      <IfModule mod_cache_disk.c>
 +        #LogLevel debug
 +        CacheRoot /var/cache/apache2/mod_cache_disk
 +        CacheDefaultExpire 60
 +        CacheMinExpire 60
 +        CacheMaxExpire 60
 +        CacheEnable disk /
 +        #CacheDetailHeader On
 +        CacheHeader On
 +        CacheIgnoreCacheControl On
 +        CacheIgnoreNoLastMod On
 +        CacheStoreNoStore On
 +        CacheStoreExpired On
 +        #CacheIgnoreHeaders None
 +        #CacheDisable "/index.php"
 +        #UnsetEnv no-cache
 +      </IfModule>
 +    </IfModule>
 +</code>
 +
 +Voir les fichiers en cache
 +  htcacheclean -A -p/var/cache/apache2/mod_cache_disk
 +
 +Si vous avez configuré un autre répertoire que celui par défaut, la purge ne se fera pas, mettez un cron
 +  0 */2 * * * /usr/bin/htcacheclean -n -t -p/home/user/apache2_mod_cache_disk -l100M
 +
 +Cette exemple purge toutes les 2 heures en vérifiant que la taille globale ne dépasse pas 100Mo, ''-t'' supprimer les répertoires vide (important car il peut vite y'en avoir un paquet), ''-n'' met une priorité basse au processus afin de ne pas bloquer le serveur.
linux/apache.1453198786.txt.gz · Dernière modification: 19-01-2016 11:19 (modification externe)