Installer l'extension PHP APC sur Debian
APC, acronyme de Alternative PHP Cache, est un cache d'op-code améliorant les performances du code PHP. C'est un outil incontournable si vous utilisez de nombreuses applications PHP.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
- Ubuntu 13.10 Saucy Salamander
Avertissement
Cet article est incompatible avec ces guides:
Prérequis
Ce guide nécessite:
- une installation fonctionnelle de PHP, telle que décrite par Installer PHP-FPM sur Debian.
Installation depuis les dépôts
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Installez le logiciel:
if [ -n "$(command apt-cache pkgnames php5-apc)" \
-a -n "$(command dpkg --status "php5-common" | command grep "dotdeb")" ]; then
# Check for dot-deb packages.
${cmdProxy} apt-get -y install php5-apc
elif [ -n "$(command apt-cache pkgnames php-apc)" ]; then
${cmdProxy} apt-get -y install php-apc
fi
Rechargez la configuration :
test -e '/etc/init.d/php5-fpm' && ${cmdProxy} service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && ${cmdProxy} service 'apache2' 'force-reload'
Configuration
Détectez le chemin des fichiers de configuration des extensions PHP:
MODS_CONF_PATH='/etc/php5/conf.d'
test -d '/etc/php5/mods-available' \
&& MODS_CONF_PATH='/etc/php5/mods-available'
La configuration par défaut de APC est suffisante. Assurez-vous qu'il soit activé, et activez l'option permettant de suivre la progression des envois de fichiers:
echo '; APC Configuration
; priority=50
apc.enabled = 1
; Memory allocated to APC. Use Munin or APC Info to see if more is needed.
apc.shm_size="96M"
; rfc1867 allow file upload progression display.
apc.rfc1867 = on' \
| ${cmdProxy} tee "${MODS_CONF_PATH}/apc-config.ini"
[[ -x '/usr/sbin/php5enmod' ]] && ${cmdProxy} php5enmod 'apc-config/50'
Si nécessaire, appliquez les configurations spécifiques à PHP-FPM:
if [ -e '/etc/init.d/php5-fpm' ]; then
echo '; Enable APC ressources sharing.
; priority=50
apc.mmap_file_mask=/apc.shm.XXXXXX' \
| ${cmdProxy} tee "${MODS_CONF_PATH}/apc-fpm.ini"
[[ -x '/usr/sbin/php5enmod' ]] && ${cmdProxy} php5enmod 'apc-fpm/50'
fi
Remarque: Si partager les données d'APC entre différents sites pose problème (de sécurité, par exemple), la solution est de créer un pool FPM par site. L'inconvénient majeur est que cela complexifie notablement la configuration du serveur.
Rechargez la configuration :
test -e '/etc/init.d/php5-fpm' && ${cmdProxy} service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && ${cmdProxy} service 'apache2' 'force-reload'
Installation manuelle
Si le paquet Debian n'existe pas, installez l'extension manuellement.
Détectez le chemin des fichiers de configuration des extensions PHP:
MODS_CONF_PATH='/etc/php5/conf.d'
test -d '/etc/php5/mods-available' \
&& MODS_CONF_PATH='/etc/php5/mods-available'
Préparation de l'environnement
installez les logiciels nécessaires:
command apt-get install php5-dev make php-pear apache2-prefork-dev libpcre3-dev
Mettez à jour PEAR:
command pear channel-update pear.php.net
command pear upgrade PEAR
Mettez à jour PECL:
command pecl channel-update pecl.php.net
command pecl upgrade
Mise en place du logiciel
Installez l'extension:
command pecl install 'apc' --with-apxs='/usr/bin/apxs2'
Activez l'extension:
echo "; configuration for php APC module
; priority=20
extension=apc.so" > "${MODS_CONF_PATH}/apc.ini"
command type -f 'php5enmod' &>'/dev/null' && command php5enmod 'apc'
Rechargez la configuration:
test -e '/etc/init.d/php5-fpm' && command service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && command service 'apache2' 'force-reload'
Vous pouvez maintenant configurer APC.
Finalisation
La procédure d'installation manuelle recommande:
- la mise en place d'alertes lorsque de nouvelles mises à jour PEAR et PECL sont disponibles, comme décrit par Surveiller les mises à jour PEAR.
Remerciements
- Merci aux développeurs de Alternative PHP Cache (en).