Début de la migration


Arrêt des services

service tinyrss stop

service apache2 stop

Sauvegarde


Ça mange pas de pain, de toute facon il faut faire des sauvegardes régulièrement et de plus c'est indiqué dans la procédure. Bref avant une mise à jour : Sauvegarde!

Sauf que tinyrss c'est installé depuis 2009 (chez moi) et ça marche tout seul depuis, j'ai jamais mis les mains dedans (et en faite j'ai jamais fait de sauvegarde, #Fail).

bon je me rappelle ou je l'ai mis :

mv /chemin/vers/tinyrss /chemin/vers/tinyrss.sav`date +%Y%m%d`

mais je me rappelle plus quel nom j'ai donnée à la table...

j'aurais pu regardé la config mais je me suis dis qu'il doit bien y avoir une commande mysql pour les DBA négligeant comme moi :

mysqlshow -u root -p'MOTDEPASSE'

et là on note que je me rappelle du mot de passe de root de mysql...

Bon la base s'appelle : TTRSS_DATABASE. On a plus qu'a la sauvegarder :

mysqldump -u root -p'MOTDEPASSE' TTRSS_DATABASE >sauvegardetinyrss.sql

on récupère la nouvelle version :

wget http://tt-rss.org/download/tt-rss-1.5.5.tar.gz

on l'extrait, le met dans le bon répertoire avec les bon droits

tar xzf tt-rss-1.5.5.tar.gz && mv tt-rss-1.5.5 /chemin/vers/tinyrss && chown -R www-data:www-data /chemin/vers/tinyrss

on récupère le fichier et le répertoire important

cp -rp /chemin/vers/tinyrss.sav`date +%Y%m%d`/icons /chemin/vers/tinyrss


cp -p /chemin/vers/tinyrss.sav`date +%Y%m%d`/config.php /chemin/vers/tinyrss/config.php.old

On récupère la configuration ancienne (enfin les options toujours d'actualité) et mets a jour le fichier config.php

pour mémoire voici un diff de la configuration actuelle et de la configuration standard de tinyrss

<     define('DB_TYPE', "mysql"); // or mysql
<     define('DB_USER', "TTRSS_USER");
<     define('DB_NAME', "TTRSS_DATABASE");
<     define('DB_PASS', "TTRSSPASSWORD");
<     define('SELF_URL_PATH', 'http://tinyrss.url');
<     define('SINGLE_USER_MODE', false);
<     define('CACHE_DIR', '/var/tmp/cache');
<     define('DAEMON_SENDS_DIGESTS', false);
<     define('MYSQL_CHARSET', '');
<     define('ALLOW_REMOTE_USER_AUTH', true);
<     define('AUTO_LOGIN', true);
<     define('AUTO_CREATE_USER', true);
<     define('LOCK_DIRECTORY', '/var/run/tinyrss');
<     define('ISCONFIGURED', true);

Les petits plus de la mise à jour


Les options ALLOW_REMOTE_USER_AUTH, AUTO_LOGIN, AUTO_CREATE_USER sont justes géniales!! elles délèguent  l'authentification a pache (qui lui délégue l'authentification a LDAP). Je n'ai juste qu'a créer un utilisateur dans mon LDAP (et avec le bon groupe) pour que celui ci ai droit a sa propre instance dans tinyrss sans autre intervention de ma part!

Bug


MYSQL_CHARSET est définie par défaut a utf8. un très bon choix quand on fait une installation "from scratch". Ce qui n'est pas mon cas, tout mes accents dans mes flux avaient des problèmes.

Le CACHE_DIR et le LOCK_DIRECTORY sont hérité de l'installation précédente, les choix par défaut aurait suffit. D'ailleurs j'ai eu un autre bug le répertoire htmlpurifier n’était pas présent (résolu par ces options) :

mkdir -p /var/tmpcache/htmlpurifier
chmod -R 777 /var/tmp/cache/htmlpurifier


Hum j'ai aussi oublié un petit pré-requis pour la nouvelle version

aptitude install php5-curl


Plus Gros Bug


bon la procédure de mise à jour est à mi-chemin...

on relance les services

service apache2 start

service tinyrss start

on se connecte au site et il lance le script db-updater.php ... et là c'est le drame!

"l'utilisateur n'as pas les droits suffisants pour exécuter ce script"

un petit tour dans le script db-updater.php et on trouve  ces lignes

if (!SINGLE_USER_MODE && $_SESSION["access_level"] < 10) {
        $_SESSION["login_error_msg"] = __("Your access level is insufficient to run this script.");
        render_login_form($link);
        exit;
    }

Bon je ne suis pas en SINGLE_USER_MODE donc il faut que ma mon utilisateur soit level 10... retour dans mysql

mysql -u root -p'MOTDEPASSE' TTRSS_DATABASE
>show tables;

# On prend la tables ttrss_users
>select * from ttrss_users;
>update ttrss_users set access_level=10 where login='nyquist';


On se reconnecte et là .... c'est long! Comme dis l'adage plus c'est long plus c'est bon ... et finalement j'arrive sur une page ou tout est OK ouf!

retour en ligne de commande sur la session mysql et on rétabli le bon access_level
>update ttrss_users set access_level=0 where login='nyquist';

Conclusion

La mise à jour est faite, effectivement c'est plus joli, un peu plus lent aussi (javascript inside) mais la partie authentification via apache est un must-have. J'ai vu que en activant la compression on gagnait un peu a tester!