Configuration
/etc/httpd/conf/httpd.conf
|
# Désactiver l'accès aux répertoires utilisateur
#Include conf/extra/httpd-userdir.conf
# Dossier ou placer les pages web
DocumentRoot "/srv/http"
# Map une URL à un chemin
Alias /symfony "/usr/share/webapps/Symfony"
# si le chemin est en dehors du DocumentRoot il faut écrire un bloc Directory
<Directory "/usr/share/webapps/Symfony">
Order allow,deny
Allow from all
</Directory>
# Récursivement pour tous les dossiers et fichiers à partir de /srv/http
<Directory "/srv/http">
# Interdit l'accès aux pages Index of /... et affiche la page Error 403
DirectoryIndex disabled
# même effet avec l'utilisation du "-" pour l'option Indexes
Options -Indexes
# Redirige l'affiche de la page Error 403 vers /MaPage.html
ErrorDocument 403 /MaPage.html
# Directives autorisées dans les fichiers .htaccess pour la redéfinition des droits
AllowOverride All|None|directive
# autorisez l'accès à tous sauf 192.168.1.1
Order allow,deny
Allow from all
Deny from 192.168.1.1
</Directory>
|
Directive
/etc/httpd/conf/httpd.conf
|
# définit où écrire les erreurs
ErrorLog "/var/log/httpd/error_log"
# le chemin peut-être absolu ou relatif à ServerRoot
# s'il est définit hors d'un VirtualHost, il s'applique à tous les VirtualHost
# s'il est définit dans un VirtualHost, il ne s'applique qu'à celui-ci
# définit où écrire le log d'accès ainsi que le format
CustomLog logs/access_log "%v %h %l %u %t \"%r\" %>s %T"
|
ErrorLog | LogFormat | CustomLog
|
Fichiers de log par défaut:
- /var/log/httpd/error_log
- /var/log/httpd/access_log
|
/etc/apache2/sites-available/000-default.config
|
<Directory /var/www/html>
AllowOverride None
# all requests are denied
Require all denied
# all requests are allowed except 192.168.1.1
Require all granted
Require not ip 192.168.1.1
# authoriser seulement les IPs 192.168.0.0/24
Require ip 192.168.0.0/24
# all hosts in the example.org domain are allowed access; all other hosts are denied access
Require host example.org
</Directory>
|
|
Depuis la version 2.4, Order, Allow et Deny sont remplacés par Require. |
/etc/httpd/conf/httpd.conf
|
# Les directives Order, Allow et Deny doivent se trouver dans un bloc Directory
<Directory "...">
Order allow,deny
# First, all Allow directives are evaluated; at least one must match, or the request is rejected.
# Next, all Deny directives are evaluated. If any matches, the request is rejected.
# Last, any requests which do not match an Allow or a Deny directive are denied by default.
Order deny,allow
# First, all Deny directives are evaluated; if any match, the request is denied unless it also matches an Allow directive.
# Any requests which do not match any Allow or Deny directives are permitted.
</Directory>
|
/etc/httpd/conf/httpd.conf
|
# Ne plus suivre les liens symboliques
Options -FollowSymLinks
# Si l'url pointe vers un dossier et que celui-ci ne contient pas de page d'index (index.html, index.php, ...)
# générez une page listant le contenu du dossier
Options Indexes
|
|
Valeur par défaut: Options FollowSymlinks |
Rewrite url
|
sudo a2enmod rewrite
sc-restart apache2
|
/etc/apache2/sites-available/myserver.conf
|
<Directory "/var/www/myserver">
RewriteEngine On
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/index.php [L]
</Directory>
|
|
sudo a2enmod rewrite
sudo a2enmod ssl
sc-restart apache2
sudo systemctl daemon-reload
|
/etc/apache2/sites-available/myserver.conf
|
<VirtualHost *:80>
ServerName www.domain.fr
Redirect permanent / https://www.domain.fr
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain.fr
DocumentRoot /var/www/myserver
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.php$">
SSLOptions +StdEnvVars
</FilesMatch>
# Turn off your server's signature
ServerSignature Off
# Hide server information like Apache and PHP versions
ServerTokens Prod
# accepts only strong encryption
SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>
|
Modifiez la configuration PHP
/etc/httpd/conf/httpd.conf
|
<Directory "...">
php_admin_value open_basedir /path/path/:/path/path/
</Directory>
|
Modules
|
# activer un module
a2enmod [module]
# désactiver un module
a2dismod [module]
# lister les modules chargés
apachectl -M
|
|
Activer un module déjà activé ne pose pas de problème. Même chose pour la désactivation. |
Droits d'accès des dossiers et fichiers
Le serveur Apache accède aux dossiers et fichiers via l'utilisateur « http ».
/etc/httpd/conf/httpd.conf
|
# A ajouter à la fin des "LoadModule"
LoadModule php5_module modules/libphp5.so
# A ajouter à la fin des "Include"
Include conf/extra/php5_module.conf
|
/etc/httpd/conf/mime.types
|
application/x-httpd-php php php5
|
|
sudo pacman -S mod_perl
|
/etc/httpd/conf/httpd.conf
|
LoadModule perl_module modules/mod_perl.so
|
SSL
/etc/httpd/conf/httpd.conf
|
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
|
/etc/httpd/conf/extra/httpd-ssl.conf
|
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLMutex "file:/run/httpd/ssl_mutex"
|
|
« Init: Session Cache is not configured » LoadModule est activé mais pas Include. |
/etc/httpd/conf/httpd.conf
|
# décommenter cette ligne
Include conf/extra/httpd-vhosts.conf
|
/etc/httpd/conf/extra/httpd-vhosts.conf
|
NameVirtualHost *:80
NameVirtualHost *:8080
# ne pas oublier d'ajouter Listen 8080 dans le fichier /etc/httpd/conf/httpd.conf
# serveur par défaut car sans ServerName, pointe sur /srv/http
# accessible http://localhost ou http://127.0.0.1 ou http://default-server
<VirtualHost *:80>
DocumentRoot "/srv/http"
</VirtualHost>
# http://serveur1 pointe sur /srv/http/serveur1
<VirtualHost *:80>
DocumentRoot "/srv/http/serveur1"
ServerName serveur1
</VirtualHost>
# http://serveur2 pointe sur /srv/http/serveur2
<VirtualHost *:80>
DocumentRoot "/srv/http/serveur2"
ServerName serveur2
</VirtualHost>
# serveur1 et serveur2 peuvent avoir la même adresse IP
# Apache fera la différence grâce au ServerName
# http://serveur3:8080 pointe sur /srv/http/serveur3
<VirtualHost *:8080>
DocumentRoot "/srv/http/serveur3"
ServerName serveur3
</VirtualHost>
# hôte accessible via http://www.monsite.fr et http://monsite
<VirtualHost *:80>
DocumentRoot "/srv/http/monsite"
ServerName www.monsite.fr
ServerAlias monsite
</VirtualHost>
# ServerName est le nom et l'identifiant principal de l'hôte virtuel
# ServerAlias contient les noms complémentaire de l'hôte virtuel
|
|
Les noms d'hôtes devront être renseignés par un serveur DNS ou ajouté au fichier /etc/hosts des clients |
|
_default_ correspond à n'importe quelle adresse qui n'a pas trouvée de correspondance.
* à une plus grande priorité que _default_. |
File does not exist: favicon.ico
C'est le message d'erreur que vous trouverez dans le fichier « /var/log/httpd/error_log » s'il n'y a pas de fichier « favicon.ico » à la racine du site web.
|
# création d'un fichier vide favicon.ico
touch favicon.ico
|
Core dump
Lors d'une erreur child pid 3713 exit signal Segmentation fault (11), possible coredump in /tmp/apache-coredump
Si la mention possible coredump in n'est pas présente, les informations du noyau n'ont pas été extraites.
|
If Apache starts as root and switches to another user, the Linux kernel disables core dumps even if the directory is writable for the process.
Apache (2.0.46 and later) reenables core dumps on Linux 2.4 and beyond, but only if you explicitly configure a CoreDumpDirectory. |
/etc/httpd/conf/httpd.conf
|
CoreDumpDirectory "/tmp/apache-coredump"
|
|
CoreDumpDirectory fait planter apache au démarrage |
Erreurs
Failed opening required '.../fichier.php'
PHP Fatal error: Unknown: Failed opening required '.../fichier.php' (include_path='.:/usr/share/pear')
in Unknown on line 0, referer: http://www.url.fr/
Le fichier .../fichier.php n'est pas accessible en lecture.
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe
/etc/httpd/conf/httpd.conf
|
# LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
|
Mediawiki
/etc/apache2/sites-available/mediawiki.conf
|
<VirtualHost *:80>
<Directory "/var/www/mediawiki">
AllowOverride All
Options -Indexes
ErrorDocument 403 /index.php
RewriteEngine On
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/index.php [L]
</Directory>
</VirtualHost>
|
Install
|
# installation d'apache + php + mysql
sudo pacman -S apache php php-apache mariadb
# démarrer apache pour test
sudo systemctl start httpd
# démarrer apache au démarrage du système
sudo systemctl enable httpd
|
Apache - Archlinux
Apache HTTPD vs Apache Tomcat
Apache HTTPD
Serveur web écrit en C.
Il possède des modules pour exploiter du contenu dynamique écrit en PHP, Python et Ruby.
Apache Tomcat
Conteneur de Servlet et de JSP écrit en Java.
Peut avoir les mêmes fonctionnalités qu'Apache HTTPD mais est utilisé pour du contenu Java web.