Installer le serveur de campagnes publicitaires OpenX sur Debian
OpenX est un outil PHP permettant de gérer les campagnes publicitaires. Il centralise les informations concernant vos campagnes publicitaires affichées sur un ou plusieurs sites. Ce guide vous aide à l'installer sur Debian.
Ce guide est testé sur:
- Debian 6.0 Squeeze
Pré-requis
Ce guide nécessite un serveur MySQL disposant du script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.
Ce guide nécessite un serveur HTTP avec support du PHP disposant au choix d'un des scripts suivant:
- Le script a2tools disponible dans mon guide Installer et configurer Apache 2 sur Debian.
- Le script lighty-tools disponible dans mon guide Installer et configurer Lighttpd sur Debian.
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="ads.domaine-exemple.fr"
Renseignez le nom d'hôte de votre serveur MySQL (si vous ne savez pas de quoi il s'agit, ne modifiez pas cette valeur) :
MYSQL_HOST="localhost"
Si votre serveur MySQL n'est pas local, ce guide effectuera une connexion SSH pour y créer la base de données.
Installation
Installez les extensions PHP et logiciels nécessaires :
command apt-get install php5-mysql php5-gd php5-cli php5-geoip
Augmentez la limite mémoire de PHP :
MEMORY_LIMIT="256M" if [ -e "/etc/php5/conf.d/memory-limit.ini" ]; then CURRENT_MEMORY_LIMIT=$(command grep 'memory_limit' /etc/php5/conf.d/memory-limit.ini \ | command cut --delimiter='=' --fields='2-' \ | command sed -e 's/^[ \t]*//g') if [ "$(echo "${CURRENT_MEMORY_LIMIT}" | command sed -e 's/M$//g')" \ -gt "$(echo "${MEMORY_LIMIT}" | command sed -e 's/M$//g')" ]; then MEMORY_LIMIT="${CURRENT_MEMORY_LIMIT}" fi fi echo "; Memory limit for PHP scripts. memory_limit = ${MEMORY_LIMIT}" > "/etc/php5/conf.d/memory-limit.ini"
Appliquez les paramètres PHP spécifiques à l'application :
TIMEZONE=$(command cat /etc/timezone) echo "; PHP settings for OpenX magic_quotes_gpc = Off date.timezone = ${TIMEZONE}" > /etc/php5/conf.d/openx.ini
Mise en place
Obtenez le numéro de la dernière version de l'application:
VERSION="$(command wget --quiet --output-document=- "http://download.openx.org/" \ | command sed -e 's/<[^>]*>/\n/g' \ | command grep -e 'openx-.*\.tar\.gz' \ | command sort | command tail -n 1 \ | command sed -e 's/openx-\(.*\)\.tar\.gz/\1/')"
Téléchargez les sources:
command wget "http://download.openx.org/openx-${VERSION}.tar.gz" \ --output-document="/tmp/openx.tar.gz"
Décompressez l'archive:
command tar --directory "/tmp" -xzf "/tmp/openx.tar.gz"
Déplacez le dossier obtenu vers l'emplacement final:
command mv "/tmp/openx-${VERSION}" "/opt/${DOMAIN}"
Déplacez les dossiers var et images vers des emplacements plus adaptés à la LSB, et autorisez le serveur HTTP à modifier leur contenu:
unset DATA_PATHS
declare -a DATA_PATHS
DATA_PATHS[0]="var"
DATA_PATHS[1]="www/images"
DATA_PATHS[2]="plugins"
DATA_PATHS[3]="www/admin/plugins"
command mkdir --parent "/var/lib/openx/${DOMAIN}/www/admin"
for DATA_PATH in ${DATA_PATHS[@]}; do
COMPLETE_PATH="/opt/${DOMAIN}/${DATA_PATH}"
LSB_PATH="/var/lib/openx/${DOMAIN}/${DATA_PATH}"
if [ -e "${COMPLETE_PATH}" -a ! -h "${COMPLETE_PATH}" ]; then
command mv "${COMPLETE_PATH}" "${LSB_PATH}"
command ln -s "${LSB_PATH}" "${COMPLETE_PATH}"
command chown -R www-data:www-data "${LSB_PATH}"
fi
done
Déplacez les caches vers le dossier recommandé par la LSB:
unset DATA_PATHS
declare -a DATA_PATHS
DATA_PATHS[0]="var/cache"
DATA_PATHS[1]="var/templates_compiled"
command mkdir --parent "/var/cache/openx/${DOMAIN}/var"
for DATA_PATH in ${DATA_PATHS[@]}; do
COMPLETE_PATH="/opt/${DOMAIN}/${DATA_PATH}"
LSB_PATH="/var/cache/openx/${DOMAIN}/${DATA_PATH}"
if [ -e "${COMPLETE_PATH}" -a ! -h "${COMPLETE_PATH}" ]; then
command mv "${COMPLETE_PATH}" "${LSB_PATH}"
command ln -s "${LSB_PATH}" "${COMPLETE_PATH}"
command chown -R www-data:www-data "${LSB_PATH}"
fi
done
Supprimez l'archive téléchargée:
command rm "/tmp/openx.tar.gz"
Créez la configuration du serveur HTTP pour votre domaine:
if [ -x "/usr/bin/a2tools" ]; then command a2tools add-vhost "${DOMAIN}" "/opt/${DOMAIN}/www/" fi if [ -x "/usr/bin/lighty-tools" ]; then command lighty-tools add-vhost "${DOMAIN}" "/opt/${DOMAIN}/www/" fi
Votre application devrait maintenant être disponible sur le nom de domaine que vous lui avez destiné.
Configuration
Créez la base de données:
if [ "${MYSQL_HOST}" = "localhost" ]; then MYSQL_PARAMS=$(command mysql-tools create-domain-db "${DOMAIN}") else command echo "Saisissez le mot de passe de l'utilisateur root MySQL :" command read PASSWORD MYSQL_PARAMS=$(command ssh "root@${MYSQL_HOST}" "command mysql-tools create-domain-db '${DOMAIN}' '$(command cat /etc/mailname)' '${PASSWORD}'") fi
Affichez les paramètres de la nouvelle base de données et notez-les:
echo "${MYSQL_PARAMS}"
Accédez à la configuration de l'application en utilisant l'URL affichée par la commande:
echo "http://${DOMAIN}/"
Important : Pensez à désactiver Adblock Plus pour le domaine de l'application, si vous souhaitez que tout fonctionne correctement.
Rotation des journaux
Mettez en place la rotation des journaux de l'application:
echo '# Logrotate configuration file for OpenX "/var/lib/openx/*/var/*.log" { weekly missingok rotate 12 copytruncate compress delaycompress create 644 www-data www-data } ' > /etc/logrotate.d/openx
Maintenance planifiée
OpenX nécessite l'exécution de tâches de maintenances. Ces tâches peuvent être exécutées via un script PHP.
Mettez en place le script CRON de maintenance:
command echo "# Daily OpenX maintenance for ${DOMAIN}. 0 * * * * www-data [ -x /usr/bin/php -a -f /opt/${DOMAIN}/scripts/maintenance/maintenance.php ] && command php /opt/${DOMAIN}/scripts/maintenance/maintenance.php ${DOMAIN}" \ > "/etc/cron.d/openx-${DOMAIN}"
Rechargez cron pour prendre ne compte la nouvelle configuration :
/etc/init.d/cron reload
Optimisation
Une simple modification du code d'affichage des bannières permet un gain de réactivité non négligeable. Ajoutez l'option DELAYED à la requête INSERT INTO d'enregistrement des visites:
command sed -i -e 's/INSERT INTO/INSERT DELAYED INTO/' "/opt/${DOMAIN}/lib/OA/Dal/Delivery/mysql.php"
Sauvegardes
Pour sauvegarder votre installation, je vous propose d'utiliser Backup Manager. Pour l'installer, vous pouvez suivre mon guide:
Installer et configurer Backup Manager sur Debian
Une fois Backup Manager installé, configurez la sauvegarde des fichiers de l'application:
command backup-manager-tools add "/opt/${DOMAIN}" command backup-manager-tools add "/var/lib/openx/${DOMAIN}"
Important: Sauvegarder les fichiers ne suffit pas ! Il faut aussi sauvegarder la base de données. La procédure pour ce faire est disponible dans mon article MySQL sur Debian.
Mise à jour
Renseignez l'emplacement de l'installation OpenX a mettre à jour:
OPENX_PATH="/opt/ads.domaine-exemple.fr"
Obtenez le numéro de la dernière version de l'application:
VERSION="$(command wget --quiet --output-document=- "http://download.openx.org/" \ | command sed -e 's/<[^>]*>/\n/g' \ | command grep -e 'openx-.*\.tar\.gz' \ | command sort | command tail -n 1 \ | command sed -e 's/openx-\(.*\)\.tar\.gz/\1/')"
Téléchargez les sources:
command wget "http://download.openx.org/openx-${VERSION}.tar.gz" \ --output-document="/tmp/openx.tar.gz"
Décompressez l'archive:
command tar --directory "/tmp" -xzf "/tmp/openx.tar.gz"
Créez une copie de sauvegarde de l'installation actuelle:
command cp -a "${OPENX_PATH}" "${OPENX_PATH}.old"
Copiez le dossier ainsi obtenu vers l'emplacement actuel de l'installation :
command cp -r "/tmp/openx-${VERSION}/"* "${OPENX_PATH}"
Corrigez les permissions:
command touch "${OPENX_PATH}/var/UPGRADE" command chown -R www-data:www-data "/var/lib/openx" command chown -R www-data:www-data "/var/cache/openx" command chown -R www-data:www-data "${OPENX_PATH}/www/admin/plugins"
Vérifiez que votre installation d'OpenX fonctionne correctement.
Si tout s'est bien passé, supprimez les fichiers utilisés pour la mise à jour:
command rm -r "/tmp/openx-${VERSION}" command rm -r "/tmp/openx.tar.gz" command rm -r "${OPENX_PATH}.old"
Optimisation
Une simple modification du code d'affichage des bannières permet un gain de réactivité non négligeable. Ajoutez l'option DELAYED à la requête INSERT INTO d'enregistrement des visites:
command sed -i -e 's/INSERT INTO/INSERT DELAYED INTO/' "/opt/${DOMAIN}/lib/OA/Dal/Delivery/mysql.php"
Résolution des problèmes
Les feuilles de styles ne se chargent pas
Si les feuilles de styles ne se chargent pas dans votre interface d'administration, il vous faut désactiver l'option de compression gzip du contenu. Cela se fait depuis le menu "Paramètres généraux -> Paramètres de l'interface utilisateur". Vous devez y décocher l'option "Utiliser la compression de contenu GZIP".
Source : Merci aux personnes ayant répondu à Css Its Not Loading To The Admin..., No style admin page.
Vérifier que le serveur de diffuse pas de code malveillant
Si votre serveur OpenX a été victime d'une faille de sécurité, vous pouvez vous assurez que le serveur ne diffuse pas de code malveillant en suivant la procédure décrite par l'article Security Update: How to Secure your OpenX installation sur le blog OpenX.
Remerciements
- Merci aux développeurs d'OpenX.
- Merci à l'auteur du guide How to install the OpenX ad server.