Base de données 2.6
Tables
- ox_zones (primary key: zoneid)
- ox_ad_zone_assoc (primary key: ad_zone_associ_id, fk: zone_id (ox_zones.zoneid), ad_id (ox_banners.bannerid)
liste des liens entre les zones et les bannières - ox_banners (primary key: bannerid)
Contient le code HTML de la bannière: ox_banners.htmlcache + ox_banners.append - ox_data_summary_zone_impression_history
table qui contient le plus de données... - ox_data_raw_ad_impression
select * from ox_ad_zone_assoc; ad_zone_assoc_id | zone_id | ad_id | priority | link_type | priority_factor | to_be_delivered select count(*) from ox_data_summary_zone_impression_history; select min(interval_start) from ox_data_summary_zone_impression_history; select * from ox_banners where append != '';
Maintenance
Script cron à toutes les heures: /etc/cron.d/openx
0 * * * * www-data /usr/bin/php /var/www/vhost/ads.server.com/scripts/maintenance/maintenance.php ads.server.com
Upgrade 2.4 vers 2.8.11
Environnement: php5, postgresql 8.1, serveur: ads.server.com
1. BACKUP
# mkdir -p /backup/ads.server.com/ && chmod 700 /backup cd /var/www/vhost/ tar czvf /backup/ads.server.com/{date}.tgz ads.server.com # conf cp ads.server.com/var/ads.server.com.conf.php /backup/ads.server.com/ # se connecter sur le serveur de base de données, en postgres et faire un backup de la base de données $ sudo su - postgres $ pg_dump -f /tmp/adsserver.{date}.sql adsserver # mkdir -p /backup/ads.server.com && chmod 700 /backup/ads.server.com/ # cp /tmp/adsserver.{date}.sql /backup/ads.server.com/
2. Vérification
Vérifier que le nom d'usager mot de passe administrateur fonctionne sur le site web (les usagers sont dans: ox_users : select * from ox_users) . Le mot de passe encodé se trouve dans cette table.
3. installer code
wget http://www.opensource.be/openx/files/openx-2.8.11.tar.gz tar xzvf openx-2.8.11.tar.gz mv openx-2.8.11 openx cp ads.server.com/var/ads.server.com.conf.php openx/var/ cp ads.server.com/www/images/*.jpg openx/www/images/ cp ads.server.com/www/images/*.jpeg openx/www/images/ cp ads.server.com/www/images/*.gif openx/www/images/ cp ads.server.com/www/images/*.swf openx/www/images/ chmod 750 openx chown -R wwwserveruser:www-data openx chown wwwserveruser:www-data openx/var/ads.server.com.conf.php chmod 775 openx/var/templates_compiled # don't seem to work (installer) chmod 775 openx/var/cache chmod 775 openx/var/plugins chmod 775 openx/www/images chown www-data openx/www/images/*.* # instruction from install #================== chmod -R a+w /var/www/vhost/openx/var chmod -R a+w /var/www/vhost/openx/var/cache chmod -R a+w /var/www/vhost/openx/var/plugins chmod -R a+w /var/www/vhost/openx/plugins chmod -R a+w /var/www/vhost/openx/www/admin/plugins # PHP INN vim /etc/php5/apache2/php.ini memory_limit = 128M date.timezone = America/Montreal /etc/init.d/apache2 restart #==================
4. Patch nécessaire - prévenir problème d'installation avec postgresql 8.1
Erreur 1: ALTER SEQUENCE name OWNED BY user.
La syntaxe OWNED BY est disponible seulement dans postgresql 8.2. En 8.1, dans le fichier openx/etc/core.pgsql.php
, il faut effacer les lignes:
EXECUTE 'ALTER SEQUENCE ' || s_old || ' OWNED BY NONE'; EXECUTE 'ALTER SEQUENCE ' || s_old || ' OWNED BY ' || t_old || '.' || c; # erreur: [Native message: ERROR: syntax error at or near "OWNED" at character 36 QUERY: ALTER SEQUENCE ox_zones_zoneid_seq OWNED BY None
Erreur 2 : utilisation d'un alias dans un UPDATE
(disponible en postgresql 8.2). En 8.1, dans le fichier openx/etc/changes/postscript_openads_upgrade_2.8.2-rc8.php
, il faut modifier les lignes:
ac.bannerid = b.bannerid AND ac.type LIKE 'deliveryLimitations:Time:%' AND ac.data NOT LIKE '%@%' {$tblAcls} ac par: {$tblAcls}.bannerid = b.bannerid AND {$tblAcls}.type LIKE 'deliveryLimitations:Time:%' AND {$tblAcls}.data NOT LIKE '%@%' {$tblAcls} # erreur: UPDATE "ox_acls" ac SET data = data || '@' || COALESCE(p.value, 'America/New_York') FROM "ox_banners" b JOIN "ox_campaigns" ca USING (campaignid) JOIN "ox_clients" cl USING (clientid) JOIN "ox_agency" a USING (agencyid) LEFT JOIN "ox_account_preference_assoc" p ON (p.account_id = a.account_id AND p.preference_id = 15) WHERE ac.bannerid = b.bannerid AND ac.type LIKE 'deliveryLimitations:Time:%' AND ac.data NOT LIKE '%@%' ] Failure in upgrade postscript postscript_openads_upgrade_2.8.2-rc8.php
Erreur 3 : duplicate key
Peut-être erreur de revert, si cette erreur apparaît, il faut effacer les insert dans les fichiers:
- open/etc/changes/postscript_openads_upgrade_2.7.12.php
- open/etc/changes/postscript_openads_upgrade_2.7.30-beta-rc5.php
- open/etc/changes/postscript_openads_upgrade_2.7.31-beta-rc4.php
- open/etc/changes/postscript_openads_upgrade_2.8.1-rc10.php
# open/etc/changes/postscript_openads_upgrade_2.7.12.php INSERT INTO "ox_application_variable" ( name, value ) VALUES ( 'mse_process_raw', '1' ) [Native message: ERROR: duplicate key violates unique constraint "ox_application_variable_pkey"] script returned false OA_UpgradePostscript_2_7_12_dev # open/etc/changes/postscript_openads_upgrade_2.7.30-beta-rc5.php INSERT INTO "ox_preferences" (preference_name, account_type) VALUES('campaign_ecpm_enabled', 'MANAGER') [Native message: ERROR: duplicate key violates unique constraint "ox_preferences_preference_name"] script returned false OA_UpgradePostscript_2_7_30_beta_rc5 # open/etc/changes/postscript_openads_upgrade_2.7.31-beta-rc4.php INSERT INTO "ox_preferences" (preference_name, account_type) VALUES('contract_ecpm_enabled', 'MANAGER') [Native message: ERROR: duplicate key violates unique constraint "ox_preferences_preference_name"] script returned false OA_UpgradePostscript_2_7_31_beta_rc4 # open/etc/changes/postscript_openads_upgrade_2.8.2-rc10.php INSERT INTO "ox_application_variable" ( name, value ) VALUES ( 'mse_process_raw', '1' ) [Native message: ERROR: duplicate key violates unique constraint "ox_application_variable_pkey"]
Erreur 4: erreur lors de revert
Il est possible que le revert échoue car la séquence ox_campaigns_campaignid_seq existe.
Solution, dans le client psql: drop sequence ox_campaigns_campaignid_seq;
5. Déplacer
Déplacer l'ancien répertoire vers le nouveau
mv ads.server.com oldads.server.com mv openx ads.server.com
6. installation
dans le navigateur, ouvrir le serveur pour poursuivre l'installation: http://ads.server.com/
7. effacer l'installeur
rm ads.server.com/www/admin/install.php
Erreur OpenX 2.8.11 avec Postgresql pour les images dans la base de données
Si vous avez des images de bannières dans la base de données (table ox_images), la version 2.8.11 a enlevé une ligne importante qui permet de décoder les données de Postgresql.
Dans les fichier lib/OA/Dal/Delivery.php, www/delivery/ai.php, www/delivery/avw.php, etc, il faut modifier la fonction OA_Dal_Delivery_getCreative pour ajouter la ligne suivante (entre les deux commentaires). Cette ligne est présente en 2.6.
function OA_Dal_Delivery_getCreative($filename) { $conf = $GLOBALS['_MAX']['CONF']; $rCreative = OA_Dal_Delivery_query(" SELECT contents, t_stamp FROM ".OX_escapeIdentifier($conf['table']['prefix'].$conf['table']['images'])." WHERE filename = '".OX_escapeString($filename)."' "); if (!is_resource($rCreative)) { return (defined('OA_DELIVERY_CACHE_FUNCTION_ERROR')) ? OA_DELIVERY_CACHE_FUNCTION_ERROR : null; } else { $aResult = OA_Dal_Delivery_fetchAssoc($rCreative); // patch for psql : progysm@gmail.com $aResult['contents'] = pg_unescape_bytea($aResult['contents']); // end of patch $aResult['t_stamp'] = strtotime($aResult['t_stamp'] . ' GMT'); return ($aResult); } }
Configuration
# important dans la conf [database] type=pgsql host="IP.IP.IP.IP" port=5432 username=username password=*********** name=databasename [store] webDir="/var/www/vhost/ads.server.com/www/images" [email] fromName=bla fromAddress="bla@server.com" fromCompany="bla@server.com"
Migration postgresql 8.1 vers postgresql 9.1
Si on fait un dump SQL de la base de données de 8.1, il faut ajouter des guillemets doubles dans les CREATE TABLE et INSERT pour le champ window de la table ox_data_bkt_a car "window" est devenu un mot réservé en 8.3.
Erreur champ "window"
CREATE TABLE ox_data_bkt_a ( server_conv_id bigserial NOT NULL, server_ip character varying(16) DEFAULT ''::character varying NOT NULL, tracker_id integer NOT NULL, date_time timestamp without time zone, action_date_time timestamp without time zone, creative_id integer NOT NULL, zone_id integer NOT NULL, ip_address character varying(16) DEFAULT ''::character varying NOT NULL, "action" integer, "window" integer, status integer ); INSERT INTO ox_data_bkt_a ... (..."window"...)
Erreur \' au lieu de ''
PHP Fatal error: Unsupported operand types in www/delivery/ajs.php on line 3762
ligne 3762 : $aZoneLinkedAdInfos += $aZoneInfo;
Cette erreur est causée par une mauvaise requête qui retourne une chaîne de caractères (OA_DELIVERY_CACHE_FUNCTION_ERROR) dans aZoneLinkedAdInfos au lieu d'un tableau et on ne peut pas additionner un tableau à une chaîne de caractère.
# ... define ('OA_DELIVERY_CACHE_FUNCTION_ERROR', 'Function call returned an error'); # ... # Remplacer la ligne .OX_Dal_Delivery_regex("d.htmlcache", "src\\s?=\\s?[\\'\"]http:")." AS html_ssl_unsafe, " # par la ligne .OX_Dal_Delivery_regex("d.htmlcache", "src\\s?=\\s?[''\"]http:")." AS html_ssl_unsafe, " # car postgres ne supporte plus les \' (barre oblique inversé + guillemet simple) et exige les guillemets simples doubles ''.
Erreur static
lib/pear/PEAR.php : ajouter static pour isError lib/pear/Net/IPv4.php : ajouter static à ip2double, ipInNetwork, parseAddress init.php: utiliser error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED & ~E_STRICT); Source: http://www.teslina.com/en/tutorials/openx/fehlermeldungen-problemlosungen/
Erreur "Call-time pass-by-reference has been removed"
lib/OA/Admin/Statistics/Delivery/CommonEntity.php # Enlever le caractère & pour les deux lignes: $oPlugin->mergeZones($this->childrendata['zone_id']); $oPlugin->mergeAds($this->childrendata['ad_id']); lib/OA/Admin/Statistics/Delivery/CommonHistory.php # enlever le caractère & ligne 160
Zone Google Adsense vide en SSL
Dans le fichier /delivery/ajs.php, fonction _adSelectCheckCriteria, remplacer la ligne
(($aAd['adserver'] != 'max' && $aAd['adserver'] != '3rdPartyServers:ox3rdPartyServers:max') || $aAd['html_ssl_unsafe'])) {
Par
(!in_array($aAd['adserver'], array('max','3rdPartyServers:ox3rdPartyServers:max','3rdPartyServers:ox3rdPartyServers:google')) || $aAd['html_ssl_unsafe']) != 'f') {
Note que postgresql retourne "f" si c'est faux.
Étape de vérification
{site}/www/delivery/ajs.php?zoneid={ZONEID}&cb={RAND}&charset=UTF-8&loc={SITE} - code vide {site}/www/admin/banner-edit.php?clientid={CLIENTID}&campaignid={CAMPAIGNID}&bannerid={BANNERID} - champ de formulaire - adserver = 3rdPartyServers:ox3rdPartyServers:google (select) - type = html (hidden) plugins/3rdPartyServers/ox3rdPartyServers/google.class.php - réécriture si "googlesyndication.com" - rien pour ssl..
Hyperliens...
Dernière modification: 2016-04-15 09:38:34 par Yan Morin
Hébergé par ProgYSM