Apache est le serveur HTTP (le protocole de communication utilisé pour le web) le plus répandu. Il est conçu pour prendre en charge de nombreux modules lui donnant des fonctionnalités supplémentaires (Perl, PHP, Python, Ruby, CGI, SSI, réécriture d'URL, négociation de contenu, etc).
Installation
Grâce à l'outil APT (ou équivalent sur d'autres distributions) :
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
Configuration
Tous les fichiers de configuration Apache sont stockés dans /etc/apache2/ :
- apache2.conf
- Configuration générale (ancien httpd.conf)
- mods-available/
- Modules disponibles
- mods-enabled/
- Modules activés
- sites-available/
- Sites disponibles (contient default pour le site hébergé par défaut)
- sites-enabled/
- Sites activés
Afin d'activer les modules, utilisez a2enmod (Apache 2 Enable Module) suivi du nom du module. Ici activons mod_rewrite pour permettre la réécriture des URLs.
a2enmod rewrite
Afin d'activer un site dont la configuration est stockée dans sites-available, utilisez a2ensite (Apache 2 Enable Site) :
a2ensite
Pour désactiver un site, utilisez a2dissite
. Pour désactiver un module, utilisez a2dismod
.
Remarque : Ces actions sur les modules et les sites créent un lien symbolique dans le répertoire enabled vers le fichier contenu dans available, par exemple : ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
, et l'effacent pour le désactiver.
Afin de définir les fichiers affichés par défaut (index) dans un répertoire, éditez /etc/apache2/mods-available/dir.conf et vérifiez la directive DirectoryIndex
DirectoryIndex index.html index.php
Pour modifier l'adresse IP et le port d'écoute, éditez /etc/apache2/ports.conf (ou apache2.conf selon les configurations)
Listen 127.0.0.1:80
Listen 127.0.0.1:443 # si https
Editez /etc/apache2/apache2.conf pour modifier le nom du serveur si nécessaire et le faire correspondre à votre hostname :
ServerName "test.alsacreations.com"
Pour plus de sécurité, masquez l'identification du serveur sur les pages d'erreur (message Apache Server + numéro de version).
ServerSignature off
ServerTokens Prod
Par défaut la racine du site web est stockée dans /var/www, ce à qui la directive DocumentRoot fait appel dans le fichier sites-available/default. Si vous utilisez un panel d'administration, celui-ci se chargera de créer dynamiquement les configurations Apache pour les différents sites (Virtual Hosts). Sinon, utilisez NameVirtualHost, ServerName et ServerAlias pour personnaliser les différents hôtes virtuels à héberger.
Après tout changement de configuration, n'oubliez pas de recharger la configuration :
/etc/init.d/apache2 force-reload
Ou bien plus radicalement de redémarrer Apache :
/etc/init.d/apache2 restart
Au besoin, consultez la liste des modules chargés grâce à :
apache2ctl -t -D DUMP_MODULES
PHP
Du côté de PHP, nous avons un langage puissant qui est répandu sur la plupart des serveurs web et utilisé par de nombreux outils, frameworks, CMS, et librairies variées.
Installation de la version 5
Grâce à APT :
apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Configuration
La configuration de PHP utilisé en ligne de commande est stockée dans /etc/php5/cli/php.ini. A ne pas confondre avec la configuration pour Apache qui nous intéresse et est stockée dans /etc/php5/apache2/php.ini. Voici quelques suggestions de modifications :
max_execution_time = 30
max_input_time = 60
memory_limit = 64M
upload_max_filesize = 10M
register_globals = Off
expose_php = Off
Référez-vous à la documentation PHP sur les directives php.ini pour une description complète.
Pour plus de sécurité, il est possible de désactiver des fonctions système. Cependant celles-ci peuvent être requises par certains scripts (notamment le panel d'administration). Ne le faites que si vous êtes sûr de leur non-emploi.
disable_functions = symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,passthru,escapeshellarg,escapeshellcmd
Pour activer la gestion de l'UTF-8 par PHP 5 (par défaut dans la version 6) :
mbstring.language=UTF-8
mbstring.internal_encoding=UTF-8
mbstring.http_input=UTF-8
mbstring.http_output=UTF-8
mbstring.detect_order=auto
N'oubliez pas de redémarrer Apache après toute modification de la configuration de PHP. En effet, celle-ci est chargée au démarrage.
/etc/init.d/apache2 force-reload