====== Apache ======
===== Généralités =====
* [[http://fr.wikipedia.org/wiki/Apache_HTTP_Server|Apache]].
Apache est un serveur Web. Il est utilisé pour des applications Web de type PHP, ou associé à Tomcat pour gérer des servlets Java.
L'objet de ce document est de montrer la configuration d'Apache pour gérer une interface d'administration. En effet, chaque serveur Linux dispose d’un serveur Web Apache de lancé même s'il ne gère pas l'hébergement d'un site. Il est utilisé pour afficher son état générale d'utilisation des ressources (PHPSysinfo), l'état de ses processus (monit) ou fournit une administration complète du système (Webmin), le tout de manière sécurisée.
===== Documentation =====
Dans ''/var/www/manual'' sous Linux.
* Site officiels : http://httpd.apache.org
* Site officiels France : http://www.apachefrance.com
===== Installation =====
yum install httpd
aptitude install apache2
Vérifier qu'Apache est au démarrage.
chkconfig --list | grep httpd
chkconfig --list | grep apache2
Si non, mettre Apache au démarrage du système.
chkconfig httpd on
insserv apache2
===== Configuration =====
==== Emplacements ====
^ Emplacement ^ Fonction ^
| /etc/httpd/* | Emplacement de toute la configuration d'Apache. |
| /etc/httpd/conf/* | Dossier qui contient la configuration générale du service Apache ainsi que la gestion des certificats. |
| /etc/httpd/conf/httpd.conf | Fichier de configuration d'Apache. |
| /etc/httpd/conf.d/* | Emplacement des fichiers de vhosts ou de configuration propre à un service. |
| /etc/httpd/logs | Fichiers de logs d’Apache. |
Sous Debian, le dossier est ''/etc/apache2''.
FIXME
utilisateurs
documentroot
sécurité (interdiction d'accès à tout sauf le nécessaire).
fichiers de vhosts (sites-available et sites-enabled)
==== Configuration type pour une interface d'administration ====
L'idée de cette interface d'administration servie par un serveur Web Apache est de regrouper sur une même page XHTML statique l'ensemble des moyens web de monitoring, supervision, statistiques de chaque machine sur laquelle les outils sont installés.
^ Emplacement ^ Fonction ^
| /etc/httpd/conf.d/web_admin.conf | Fichier qui décrit le vhost de la page d’administration. |
=== Modules ===
Pour bien gérer le serveur Apache il faut installer le serveur et des modules qui lui sont associés.
Voici une liste non exhaustive des principaux modules dont nous allons avoir besoin.
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so
LoadModule auth_dbm_module modules/mod_auth_dbm.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule auth_ldap_module modules/mod_auth_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imap_module modules/mod_imap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
=== httpd.conf/apache2.conf ===
Attribuer un nom au serveur.
ServerName
Désactiver affichage de la version Apache.
vi /etc/apache2/httpd.conf
#Disable display of Apache version
ServerTokens Prod
#Disable apache version in the error messages
ServerSignature off
Pour avoir plus d’information avec ''mod_status'', modifier ce fichier avec la directive.
ExtendedStatus On
Changement du charset par défaut qui était UTF-8.
AddDefaultCharset ISO-8859-1
Pour les certificats avec passphrase, il faut ajouter à la dernière ligne.
SSLPassPhraseDialog exec:/sbin/apachepass
''/sbin/apachepass'' contient la passphrase en clair.
Ajouter cette directive uniquement si elle a besoin d’être présente.
=== web_admin.conf ===
Voici le fichier ''web_admin.conf'' qui peut être utilisé sur la majorité des serveurs pour disposer d'un accès à PHPSysinfo, monit, Webmin, awstats...
#ATTENTION A PENSER A MODIFIER L’ADRESSE IP DU VHOST
Listen 8180
UseCanonicalName off
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
AuthType basic
AuthName "Authorized Access Only"
AuthzLDAPMethod ldap
AuthzLDAPServer ..local
AuthzLDAPUserBase "OU=Users,OU=SERVICE,OU=SOUS_SERVICE,OU=UsersServices,OU=Orga_2012,DC=domaine,DC=local"
AuthzLDAPUserKey sAMAccountName
AuthzLDAPUserScope subtree
AuthzLDAPBindDN "cn=ConnectorADSLinux,OU=Services,DC=domaine,DC=local"
AuthzLDAPBindPassword "PASSWORD"
AuthzLDAPLogLevel info
require valid-user
DocumentRoot /var/www/web_admin
AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "/var/www/manual$1"
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
SetHandler type-map
SetEnvIf Request_URI ^/manual/de/ prefer-language=de
SetEnvIf Request_URI ^/manual/en/ prefer-language=en
SetEnvIf Request_URI ^/manual/fr/ prefer-language=fr
SetEnvIf Request_URI ^/manual/ja/ prefer-language=ja
SetEnvIf Request_URI ^/manual/ko/ prefer-language=ko
SetEnvIf Request_URI ^/manual/ru/ prefer-language=ru
RedirectMatch 301 ^/manual(?:/(de|en|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
Alias /awstats /var/www/awstats/
Alias /awstatsclasses /var/www/awstats/classes/
Alias /awstatscss /var/www/awstats/css/
Alias /awstatsicons /var/www/awstats/icon/
DirectoryIndex awstats.pl
Options Indexes MultiViews ExecCGI
AddHandler cgi-script .cgi .pl
AllowOverride None
Order allow,deny
Allow from all
Alias /webalizer /var/www/usage
Alias /mrtg /var/www/mrtg
Alias /phpsysinfo /var/www/phpsysinfo
#Alias /lshw /var/www/lshw
ProxyPass /server-status http://localhost/server-status
ProxyPassReverse /server-status http://localhost/server-status
ProxyPass /webmin/ http://localhost:10000/
ProxyPassReverse /webmin/ http://localhost:10000/
ProxyPass /monit http://localhost:2812/
ProxyPassReverse /monit http://localhost:2812/
ErrorLog logs/ssl_error_log
CustomLog logs/ssl_access_log combined
UseCanonicalName off
ServerName localhost:80
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Copier le fichier ''web_admin.conf'' d’un autre serveur dans ''/etc/httpd/conf.d'' ou le créer avec l’exemple du dessus.
Copier le dossier ''/var/www/web_admin'' qui contient les fichiers html et les styles dans le même endroit sur le nouveau serveur.
Redémarrer le serveur Web.
service httpd restart
L’interface d’administration doit être accessible à l’adresse suivante : https://SERVER.DOMAINE.local:8180
L’interface doit fonctionner. Une authentification LDAP nous est demandée. Il faut disposer d’un compte valide sur l’AD.
Cependant, aucun des services affichés ne fonctionnent et c’est normal. Les seuls liens qui doivent fonctionner directement sont la documentation Apache et Apache Server Status.
Faire fonctionner le reste, c’est tout l’intérêt des documentations réalisées à cet effet.
==== Certificats ====
La gestion des certificats auto-signés ne fonctionnent pas directement. Elle est expliquée dans la documentation [[Certificats]]. Cette opération est très importante. La réaliser tout de suite après avoir vérifier le fonctionnement de l’interface Web.