Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Divers / Installer le serveur de campagnes publicitaires OpenX sur Debian

Installer le serveur de campagnes publicitaires OpenX sur Debian

Par Pierre-Yves Landuré Dernière modification 26/11/2016 09:39

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:

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