Niveau : Confirmé

Installation d'Apache et PHP

Configuration minimale d'Apache 2 et de PHP 5

Tutoriel par (Alsacréations, Strasbourg)
Créé le , mis à jour le (157282 lectures)
Tags : php, développement, apache

Apache et PHP sous Linux

Apache

Apache

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

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