Table of Contents
Pour www.oberleiter.net, il faut le début et la fin dans event.module, donc drupal 4.6…
C'est aussi l'occasion d'essayer la localisation (interface en plusieurs langues, locale.module qui est dans core) et i18n.module qui est dans contrib.
Installation depuis les sources
Sur excalibur (UbuntuLinux Hoary).
sudo aptitude install apache2 sudo aptitude install mysql-server libapache2-mod-php4 php4-mysql sudo apt-get install drupal sudo apt-get remove drupal wget http://drupal.org/files/projects/drupal-4.6.2.tar.gz sudo tar xzf drupal-4.6.2.tar.gz -C /var/www/ sudo mv /var/www/drupal-4.6.2 /var/www/drupal
Quand je surfe dessus, erreur:
Fatal error: Call to undefined function: mysql_connect() in /var/www/drupal/includes/database.mysql.inc on line 31
cf. MySQL pour la résolution (fichier de configuration de PHP4).
Autre erreur ensuite:
Warning: mysql_connect(): Access denied for user: 'username@localhost' (Using password: YES) in /var/www/drupal/includes/database.mysql.inc on line 31 Access denied for user: 'username@localhost' (Using password: YES)
Il faut d'abord créer la base de données:
mysqladmin -u root -p create drupal
Ensuite créer l'utilisateur mysql:
GRANT ALL PRIVILEGES ON drupal.* TO drupal@localhost IDENTIFIED BY 'password'; flush privileges;
Ensuite, populer la base de données:
mysql -u drupal -p drupal < database/database.mysql
Et ça tourne…
Je crée le premier utilisateur (admin).
Quand je vais dans admin/settings, j'ai une erreur:
* The directory files does not exist. * The built-in GD image toolkit requires that the GD module for PHP be installed and configured properly. For more information see http://php.net/image.
Solutions:
créer files:
mkdir /var/www/drupal/files sudo chown www-data /var/www/drupal/files
et pour l'autre:
sudo aptitude install php4-gd
Ensuite, dans le fichier /etc/php4/apache2/php.ini, il faut décommenter (enlever le point-virgule) la ligne suivante:
; extension=gd.so
et redémarrer apache2:
sudo /etc/init.d/apache2 reload
Upgrade
Passage a v. 4.6.3 (security upgrade)
cd /var/www/drupal-4.6.2 patch -p0 -u < /home/carl/drupal4.6/xmlrpc-4.6.2.patch
Passage à v. 4.6.4
cf. ci-dessus, 3 patches à appliquer: pour dsa-2005-007, 008 et 009.
Passage à v. 4.6.5
backup:
cd /var/www/drupal-4.6.2/ cp database/updates.inc database/updates.orig.inc cp includes/common.inc includes/common.orig.inc cp includes/database.mysql.inc includes/database.mysql.orig.inc cp includes/file.inc includes/file.orig.inc cp modules/aggregator.module modules/aggregator.module.orig cp modules/filter.module modules/filter.module.orig cp modules/search.module modules/search.module.orig
Ensuite copier les fichiers correspondants de la version 4.6.5.
Passage à v. 4.6.6
cf. http://drupal.org/drupal-4.7.0-beta6
cd /home/carl/drupal4.6/ wget http://drupal.org/files/sa-2006-001/4.6.5.patch mv 4.6.5.patch 4.6.5.adv2006-001.patch wget http://drupal.org/files/sa-2006-002/4.6.5.patch mv 4.6.5.patch 4.6.5.adv2006-002.patch wget http://drupal.org/files/sa-2006-003/4.6.5.patch mv 4.6.5.patch 4.6.5.adv2006-003.patch wget http://drupal.org/files/sa-2006-004/4.6.5.patch mv 4.6.5.patch 4.6.5.adv2006-004.patch cd /var/www/drupal-4.6.2 sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-001.patch sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-002.patch sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-003.patch sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-004.patch sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-001.patch
Ça a foiré oberleiter.net parce qu'il est en multilingue (sûrement le passage à 4.6.5 oÙ j'ai recopié des fichiers qui avaient dû être patchés).
Au petit bonheur la chance, j'ai commenté 2 fonctions dans la nouvelle version de includes/bootstrap.inc parce qu'elles faisaient double emploi avec celles dans includes/common.inc:
- url
- drupal_goto
Passage à v. 4.6.7
cf. http://drupal.org/node/65351
cd /home/carl/drupal4.6/ wget http://drupal.org/files/sa-2006-005/4.6.6.patch mv 4.6.6.patch 4.6.6.adv2006-005.patch wget http://drupal.org/files/sa-2006-006/4.6.6.patch mv 4.6.6.patch 4.6.6.adv2006-006.patch cd /var/www/drupal-4.6.2 patch -p0 -u < /home/carl/drupal4.6/4.6.6.adv2006-005.patch patch -p0 -u < /home/carl/drupal4.6/4.6.6.adv2006-006.patch
Passage à v. 4.6.8
wget http://drupal.org/files/sa-2006-007/4.6.7.patch mv 4.6.7.patch 4.6.7.adv2006-007.patch http://drupal.org/files/sa-2006-008/4.6.7.patch mv 4.6.7.patch 4.6.7.adv2006-008.patch cd /var/www/drupal-4.6.2 patch -p0 -u < /home/carl/drupal4.6/4.6.7.adv2006-007.patch patch -p0 -u < /home/carl/drupal4.6/4.6.7.adv2006-008.patch
mise à jour webform
cd drupal4.6 mv webform-4.6.0.tar.gz webform-4.6.0_old.tar.gz wget http://ftp.osuosl.org/pub/drupal/files/projects/webform-4.6.0.tar.gz
Dans install.txt:
Upgrading from previous version ------------------------------- 1. Copy the new webform.module and webform.inc to the Drupal modules/ directory. 2. Go to "admin" -> "settings" -> "webform" and select the upgrade link.
Donc:
cd /var/www/drupal46/modules cp webform.inc webform.old.inc cp webform.module webform.old.module
Ensuite, s'identifier comme administrateur et aller dans administration > settings > webform > et choisir pas de cross-scripting.
Note: il a fallu retirer les .old parce qu'il y avait une double déclaration de fonction lorsque je surfais sur la page “admin/modules”
Passage à v. 4.6.9
cd drupal4.6 wget http://drupal.org//files/sa-2006-011/4.6.8.patch cd /var/www/drupal-4.6.2 patch -p0 -u < /home/carl/drupal4.6/4.6.8.patch
Passage à v. 4.6.10
cd drupal4.6 wget http://drupal.org/files/sa-2007-002/4.6.10.patch mv 4.6.10.patch 4.6.10.adv2007-002.patch cd /var/www/drupal-4.6.2/ sudo patch -p0 -u < /home/carl/drupal4.6/4.6.10.adv2007-002.patch cd drupal4.6 wget http://drupal.org/files/sa-2007-001/4.6.10.patch mv 4.6.10.patch 4.6.10.adv2007-001.patch cd /var/www/drupal-4.6.2/ sudo patch -p0 -u < /home/carl/drupal4.6/4.6.10.adv2007-001.patch
Il y a eu un petit foirage:
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.10.adv2007-001.patch (Stripping trailing CRs from patch.) patching file modules/filter.module (Stripping trailing CRs from patch.) patching file modules/system.module Hunk #1 FAILED at 24. 1 out of 1 hunk FAILED -- saving rejects to file modules/system.module.rej
J'ai été voir, c'est pas grave (enfin, je pense).
Alertes du 11/01/08
J'ai ajouté un patch, pour les autres alertes, ça n'avait aucune incidence sur le site.
Modules
Téléchargeables depuis http://drupal.org/project/Modules
flexinode
pré-requis pour event
wget http://drupal.org/files/projects/flexinode-4.6.0.tar.gz tar xzf flexinode-4.6.0.tar.gz -C /var/www/drupal/modules/ mysql -u drupal -p drupal < /var/www/drupal/modules/flexinode/flexinode.mysql
activer le module aller dans administer → settings → flexinode et corriger l'emplacement de convert:
/usr/bin/convert
installer imagemagick:
sudo aptitude install imagemagick
event
wget http://drupal.org/files/projects/event-4.6.0.tar.gz tar xzf event-4.6.0.tar.gz -C /var/www/drupal/modules/ mysql -u drupal -p drupal < /var/www/drupal/modules/event/event.mysql
- activer le module
- aller sur administer → content type → onglet configure → sous-onglet content types
- cliquer configure pour un des types
- on voit Show in event calendar: c'est cela qu'on peut modifier pour voir apparaitre dans le calendrier
locale
C'est un module déjà installé de base.
Il suffit de l'activer dans adminster → modules
Ensuite, on peut rajouter des langues: administer → localisation
Il faut d'abord rajouter une langue, ensuite importer le fichier .po qu'on aura au préalable téléchargé sur http://drupal.org/project/Translations.
Avec le français et l'italien, ça ne marche pas (il charge, puis il s'arrête).
Vu que ce sont de gros fichiers, j'ai changé dans le fichier /etc/php4/apache2/php.ini le temps d'exécution:
max_execution_time = 120 ;
Mais ça n'a rien donné.
Alors j'ai trouvé ici une autre modification à faire:
memory_limit = 32M ;
Et ça a fonctionné.
voir aussi:
internationalisation
Il faut d'abord activer le module locale (qui est dans l'installation de base, core).
wget http://drupal.org/files/projects/i18n-4.6.0.tar.gz tar xzf i18n-4.6.0.tar.gz -C /var/www/drupal-4.6.2/
Apparemment, c'est un peu plus compliqué que pour les autres modules…
Doc:
- i18n module's HOWTO? semble obsolète
- Multi language for Drupal: current approach and alteratives est fort théorique
Lorsqu'on a copie le module dans /var/www/drupal-4.6.2/modules/i18n/, il faut patcher un repertoire (/var/www/drupal-4.6.2/includes) et un fichier (/var/www/drupal-4.6.2/modules/taxonomy.module).
Les explications sur la commande patch se trouvent ici: Diff and patch.
cd /var/www/drupal-4.6.2/includes/ patch -p0 -u < ../modules/i18n/patches/i18n_includes.patch cd /var/www/drupal-4.6.2/modules/ patch < i18n/patches/i18n_taxonomy_module.patch
Il reste a modifier la base de données:
mysql -u drupal -p drupal < /var/www/drupal-4.6.2/modules/i18n/i18n.mysql
Ensuite, il faut activer le module dans administer > modules et le configurer dans administer > settings > i18n, c'est-a-dire activer les 3 types de noeuds:
- flexinode-1
- page
- story
Dans administer > block, activer languages.
Pour les alias de nom de noeud, il faut activer le module path.
Ensuite, quand un fait un alias, c'est lang/alias: Pour la page de bienvenue:
- en francais: fr/welcome
- en anglais: en/welcome
- en allemand: de/welcome
webform
wget http://drupal.org/files/projects/webform-4.6.0.tar.gz tar xzf webform-4.6.0.tar.gz mysql -u drupal -p drupal < webform.mysql cp webform.module /var/www/drupal-4.6.2/modules/ cp webform.inc /var/www/drupal-4.6.2/modules/
Activer dans administer > modules
le webform est ensuite disponible lorsqu'on ajoute du contenu.
Guestbook
wget http://drupal.org/files/projects/guestbook-4.6.0.tar.gz tar xzf guestbook-4.6.0.tar.gz cd guestbook/ mysql -u drupal -p drupal < guestbook.mysql cp guestbook.module /var/www/drupal-4.6.2/modules/
Pour accéder au guestbook pour tous le site: http://site/drupal/guestbook/0
Statistics filter
wget http://drupal.org/files/projects/statistics_filter-4.6.0.tar.gz tar xzf statistics_filter-4.6.0.tar.gz cd statistics_filter/ mysql -u drupal -p drupal < statistics_filter.mysql cp statistics_filter.module /var/www/drupal-4.6.2/modules/
Dans README.txt:
To ignore search engines, you must install and enable the browscap module.
Activer Statistics dans Administer > Modules, ensuite activer Statistics Filter.
Pour configurer, activer browscap dans Administer > Settings > Browscap, ensuite configurer statistics filter dans Administer > Settings > Statistics filter: ignorer admin et crawlers
On peut voir les logs dans Administer > Logs, il y a plusieurs entrees:
- referrers
- top pages
- top users
- recent hits
- user agents
Browscap
Pour le module Statistics filter si on veut sortir des logs les search engines.
wget http://drupal.org/files/projects/browscap-4.6.0.tar.gz tar xzf browscap-4.6.0.tar.gz -C /var/www/drupal-4.6.2/modules/ cd /var/www/drupal-4.6.2/modules/browscap/ mysql -u drupal -p drupal < browscap.mysql
Activer dans Administer > Modules
Petit probleme, quand je change les settings dans le module statistics filter, j'ai l'erreur:
user error: Duplicate entry 'Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.10) Gecko/20050716' for key 1 query: INSERT INTO browscap_statistics (parent,counter,is_crawler) VALUES('Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6', 1, 0) in /var/www/drupal-4.6.2/includes/database.mysql.inc on line 66. warning: Cannot modify header information - headers already sent by (output started at /var/www/drupal-4.6.2/includes/common.inc:320) in /var/www/drupal-4.6.2/includes/bootstrap.inc on line 701.
C'est un bug reporté: http://drupal.org/node/26868
En attendant, mettre la longueur du champ parent de la table browscap_statistics a 255;
ALTER TABLE `browscap_statistics` CHANGE `parent` `parent` VARCHAR( 255 ) NOT NULL
Customisation
Pour avoir un menu par langue: http://drupal.org/node/17829
Here is a workaround/hack for 4.6.0 to define separate user menus, one for each language. Then have them switch off and on using adminster→blocks→configure (a menu block)→“Page specific visibility settings”. Use en/* to keep an es menu from showing on the en pages, and vice versa.
Look in block.module, around line number 470 for this existing code:
// Match path if necessary if ($block['pages']) { $path = drupal_get_path_alias($_GET['q']);
then add the following below it:
// if a language is enabled, prepend it to the path // This will allow blocked page specs to match on language $lang = i18n_get_lang($name); if (strlen($lang) > 0) { $path = $lang . '/' . $path; }
I have no idea yet what side effects this may create, just got it to work, but the menus are switching nicely. YMMV