Mise à jour tinyrss 1.2.30 vers 1.5.5
Par nyquist le vendredi, juillet 22 2011, 15:32 - informatique - Lien permanent
Tags :
Un petit mémo sur ce que j'ai du faire pour la mise à jour de l'application tinyrss vers sa nouvelle version sorti récemment
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
Bon je ne suis pas en SINGLE_USER_MODE donc il faut que ma mon utilisateur soit level 10... retour dans mysqlif (!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;
}
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';