YunoHost-Apps / garradin_ynh

Logiciel libre de gestion associative pour YunoHost
https://garradin.eu/
GNU General Public License v3.0
7 stars 8 forks source link

Can't Upgrade to 1.2 version #50

Closed BenoitCier closed 2 years ago

BenoitCier commented 3 years ago

This version require php7.4 version. This version is not available on debian buster.

We need to install php from an external repository. https://packages.sury.org/php/

I don't find example of app who use this repository.

rodinux commented 3 years ago

I have already the surry packages on my servers since this fact (en français): "Le dépot sury a été installé, il me semble, au moment d’une montée de version de Nextcloud pour avoir du PHP7.3 (non présent dans stretch). Mais j’ai l’impression qu’une fois qu’on a installé un paquet qui avait besoin d’une version supérieure, elle reste installée, même si on supprime le paquet après." But I can try to see how add this extra_dependencies. Perhaps wee need also a pinning or preferences for apt ? Is it the branch 1.1 where you are working for this update ?

rodinux commented 3 years ago

Do we need first update the app to 1.1.0 and then 1.1.1 or can we straight update from 1.0.7 to 1.2 ? Ok, I realize we need php7.4 since 1.1

rodinux commented 3 years ago

I have begin on the branch 1.1 to add the sury repo copying some instructions viewed in old nextcloud_ynh commits , I successfully upgraded to 1.1 my garradin on local (virtualbox), but with an error 403 for the configuration page ! Pherhaps more dependencies to add... or a nginx.conf to edit ?

rodinux commented 3 years ago

Ok, I can install, but stil an error with the configuration page, here a error.log:

2021/04/17 23:53:24 [error] 11134#11134: *115 access forbidden by rule, client: 192.168.0.13, server: yunohost.test, request: "GET /garradin/admin/config/ HTTP/2.0", host: "yunohost.test", referrer: "https://yunohost.test/garradin/admin/"
2021/04/17 23:54:09 [error] 11134#11134: *115 access forbidden by rule, client: 192.168.0.13, server: yunohost.test, request: "GET /garradin/admin/config/ HTTP/2.0", host: "yunohost.test", referrer: "https://yunohost.test/garradin/admin/docs/"
2021/04/17 23:59:37 [error] 11134#11134: *115 access forbidden by rule, client: 192.168.0.13, server: yunohost.test, request: "GET /garradin/admin/config/ HTTP/2.0", host: "yunohost.test", referrer: "https://yunohost.test/garradin/admin/"
rodinux commented 3 years ago

Also, I have try an update from last stable version (with some datas and configuration), it was successfull expect the same error 403 with the configuration page. So I have try remove it and backup the old version, but it was broken on the admin page with some php $categories ? I don't remember the error message.... Stil need progress, but we will found...

BenoitCier commented 3 years ago

Do we need first update the app to 1.1.0 and then 1.1.1 or can we straight update from 1.0.7 to 1.2 ? Ok, I realize we need php7.4 since 1.1

I speak about 1.1 version, the 1.2 version don't exit yet

BenoitCier commented 3 years ago

Is it the branch 1.1 where you are working for this update ?

I just create a branch

rodinux commented 3 years ago

Is it the branch 1.1 where you are working for this update ?

I just create a branch

Ok, have tou seen my commits or try this branch 1.1 ? It is not already 100% efficient, but it works for the update or the install with php7.4... But as I sais before, there's a mistake with the config page (also onh a fresh install), I think perhaps something wrong on the nginx.conf, and some problems if an update fails with the backup script... I have used the old commits from nextcloud_ynh to see how used the sury php packages...

BenoitCier commented 3 years ago

there's a mistake with the config page

I see some mistake like this on aide@garradin.fr, you can directly update to 1.1.3. it's could fix the problem.

P.S.: je fait du C/C++ en ce moment , trop compliqué pour moi de changer de language mon cerveau n'aime pas ça, je regarde quand j'ai fini

rodinux commented 3 years ago

I see some mistake like this on aide@garradin.fr, you can directly update to 1.1.3. it's could fix the problem.

Same problem with 1.1.3

rodinux commented 3 years ago

En fait, je viens de comprendre; après une install ou une upgrade, l'utilisateur admin (si création ou même après upgrade) n'a pas les permissions admin, juste les permissions de se connecter, c'est ce qui bloque et je ne comprends pas par quel mystère ceci arrive !!

BenoitCier commented 3 years ago

J'ai tester la branch 1.1 et cela fonctionne chez moi sur une install fraiche, je n'arrive pas a voir ou est ton problème avec la page configuration.

Suite a la dernière réunion yunohost, il faudrait vérifié les droit sur les fichiers, je pense que l'on est un peu généreux avec le 755 (750 voir 700 a tester)

bohwaz commented 3 years ago

Pour les droits je recommande 400 sur tous les fichiers (lecture seule) et 500 (lecture + X) sur répertoires sauf 700 (lecture + écriture) sur le répertoire data et ses sous-répertoires, 600 sur les fichiers de ces répertoires.

Je recommande aussi de créer le fichier config.local.php à l'installation par le paquet, et de le mettre ensuite en lecture seule.

Ce fichier doit contenir :

<?php

namespace Garradin;

const SECRET_KEY = 'xxxx';

avec xxx une valeur aléatoire. Si ce n'est pas le cas, Garradin essaiera de le créer et du coup s'il n'y a pas le droit d'écrire ça fera une erreur.

Voici une manière de générer ce fichier depuis un script bash :

cat > src/config.local.php <<EOF
<?php

namespace Garradin;

const SECRET_KEY = '`tr -dc A-Za-z0-9 </dev/urandom | head -c 64`';
EOF
rodinux commented 3 years ago

J'ai tester la branch 1.1 et cela fonctionne chez moi sur une install fraiche, je n'arrive pas a voir ou est ton problème avec la page configuration.

Suite a la dernière réunion yunohost, il faudrait vérifié les droit sur les fichiers, je pense que l'on est un peu généreux avec le 755 (750 voir 700 a tester)

Salut, en es-tu certain ? pour moi une install marche, mais, je n'arrive pas à la page Configuration... Pourquoi ? Par contre, ce n'est pas un problème de droits du premier utilisateur créé comme je pensais, je pense plutôt à un soucis avec la configuration de nginx peut-être encore ?? mystéreux, car tout le reste fonctionne...

rodinux commented 3 years ago

Pour les droits je recommande 400 sur tous les fichiers (lecture seule) et 500 (lecture + X) sur répertoires sauf 700 (lecture + écriture) sur le répertoire data et ses sous-répertoires, 600 sur les fichiers de ces répertoires.

Je recommande aussi de créer le fichier config.local.php à l'installation par le paquet, et de le mettre ensuite en lecture seule.

Ce fichier doit contenir :

<?php

namespace Garradin;

const SECRET_KEY = 'xxxx';

avec xxx une valeur aléatoire. Si ce n'est pas le cas, Garradin essaiera de le créer et du coup s'il n'y a pas le droit d'écrire ça fera une erreur.

Voici une manière de générer ce fichier depuis un script bash :

cat > src/config.local.php <<EOF
<?php

namespace Garradin;

const SECRET_KEY = '`tr -dc A-Za-z0-9 </dev/urandom | head -c 64`';
EOF

Bonjour, ça n'a pas l'air si évident avec yunohost pour jouer ainsi sur les permissions, mais on essaiera d'améliorer un peu... Sinon, il y a déjà un script d'installation qui créé une clé aléatoire dans le fichier local.config.php, ainsi que que la constante WWW.URI.

rodinux commented 3 years ago

Question: est-il possible qu'il manque un module particulier de php7.4 que nécessiterait uniquement la page .../admin/config ? C'est juste cette page qui me renvoi une erreur 403 Forbidden

rodinux commented 3 years ago

J'ai tester la branch 1.1 et cela fonctionne chez moi sur une install fraiche, je n'arrive pas a voir ou est ton problème avec la page configuration.

Suite a la dernière réunion yunohost, il faudrait vérifié les droit sur les fichiers, je pense que l'on est un peu généreux avec le 755 (750 voir 700 a tester)

Là, je n'y arrive vraiment pas dès que je change ces droits, j'ai des erreur 500

bohwaz commented 3 years ago

Question: est-il possible qu'il manque un module particulier de php7.4 que nécessiterait uniquement la page .../admin/config ? C'est juste cette page qui me renvoi une erreur 403 Forbidden

S'il manquait un module PHP tu aurais une erreur 500 ou une erreur Garradin. 403 signifie un problème de configuration au niveau du serveur web je pense.

Regarde déjà ce que dis le log de ton serveur web ?

rodinux commented 3 years ago

J'ai trouvé où se trouve la coquille, encore un soucis avec la configuration de nginx. Quand je veux aller dans la page /garradin/admin/config/ il ne trouve pas le bon chemin, mais si je tape /garradin/admin/config/index.php, ça marche. Pareil pour d'autres adresses comme par exemple pour les sauvegardes, il cherche /garradin/admin/config/backup/ et renvoi erreur 403 mais si j'ajoute /garradin/admin/config/backup/index.php ça marche... bref toutes les adresses suite à /garradin/admin/config/ On a du faire des configurations un peu particulières la dernière fois pour que les redirections des pages web publiques fonctionnent !

if ($scheme = http) {
    rewrite ^ https://$server_name$request_uri? permanent;
  }

  index index.php /_route.php;
  try_files $uri $uri/ __PATH__/__PATH__/_route.php?$query_string;

  location ~ \.php$ {
        if (!-e $request_filename) {
            rewrite ^__PATH__/?(.*)$ __PATH__/_route.php?/$1 last;
            break;
        }
        fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $request_filename;
  }
BenoitCier commented 3 years ago

Je vais retester mais je n'ai pas le problème sur la branch 1.1

rodinux commented 3 years ago

Je vais retester mais je n'ai pas le problème sur la branch 1.1

Tu n'as pas de soucis avec la page Configuration ? C'est juste cette page qui ne répond pas Ou est-ce que ce serait que en testant sur mon Yunohost en local avec virtualbox que ça ne marche pas ?? par contre j'ai tester sur un raspberry, ça ne fonctionne pas, la bibliothèque sury n'est peut-être pas compatible avec arm...

rodinux commented 3 years ago

Ok, j'ai fait un test sur un serveur et bonne nouvelle, oui, ça marche ! en fait, je pense que c'est à cause de mes test en local avec virtualbox que j'ai cette erreur, sûrement à cause des dns pas vraiment configurés ! Au fait sur la branche 1.1 c'est la version 1.1.4

rodinux commented 3 years ago

Je crois que je vais essayer un Pull Request vers la branche testing du coup. Par contre, j'avoue que tout ce qui est ajouté dans le fichier _common.sh pour mettre en place php7.4 est surtout inspiré et copier-coller d'anciens scripts de nextcloud_ynh pour utiliser le dépôt surry, j'espère que ce n'est pas trop superflu, car il y a pas mal de lignes de codes...

rodinux commented 3 years ago

Autre chose, j'ai l'impression que les mails ne sont pas envoyés... faut-il ajouter un module php7.4 dans les dépendances de l’application ??

bohwaz commented 3 years ago

Non, mais il faut un serveur de mail installé sur ta machine… Ou alors il faut configurer un SMTP dans config.local.php.

rodinux commented 3 years ago

Bon, finalement ça fonctionne, je ne sais plus trop... ou un problème de limites d'envoi si j'envoie à une longue liste (une catégorie) ? Mais je ne suis plus très sûr...

rodinux commented 3 years ago

Pour les droits je recommande 400 sur tous les fichiers (lecture seule) et 500 (lecture + X) sur répertoires sauf 700 (lecture + écriture) sur le répertoire data et ses sous-répertoires, 600 sur les fichiers de ces répertoires.

Je regarde quel droits je peux modifier sans tout casser... déjà je me rends compte que je suis obligé de garder le dossier wwwavec un chmod 755 ainsi que son sous-dossier www/admin... Je pense que peut-être aussi le problème vient aussi des permissions de l'utilisateur/groupe créé qui n'est pas admin...

rodinux commented 3 years ago

voici le mieux que j'ai pu faire pour les fichiers et dossiers sans tout casser :

# Set permissions on app files
chown -R $app:$app $final_path
chmod 400 $final_path/config.dist.php $final_path/index.php $final_path/sous-domaine.html $final_path/VERSION
chmod 644 $final_path/config.local.php
find $final_path/scripts -type d -exec chmod 500 {} +
find $final_path/scripts -type f -exec chmod 400 {} +
find $final_path/templates -type d -exec chmod 500 {} +
find $final_path/templates -type f -exec chmod 400 {} +
find $final_path/include -type d -exec chmod 500 {} +
find $final_path/include -type f -exec chmod 400 {} +
find $final_path/data -type d -exec chmod 700 {} +
find $final_path/data -type f -exec chmod 600 {} +
find /var/www/garradin/www -type d -exec chmod 755  {} +
find /var/www/garradin/www -type f -exec chmod 644  {} +

En gros, je dois garder le dossier (et sous-dossier) www avec une permission 755 avec les fichiers 644, ainsi que le fichier à la racine config.local.php pour qu'il puisse être en écriture... Ou bien je dois peut-être jouer avec des chown pour que certeins fichiers ou dossiers appartiennent à root ou au groupe root pour y arriver ??

rodinux commented 3 years ago

J'ai pousser le code avec la version 1.1.5 sur la branche testing... Peut-être bientôt un PR vers la branche master ?

rodinux commented 3 years ago

Ah, sinon, je crois avoir trouvé une autre set de permissions possible ou cette fois le dossier www (et ses sous-dossiers) ont une valeur 505 c'est à dire dr-x---r-x et les fichiers appartenant à ces dossiers 405 c'est à dire -r-----r-x, quoi que 644 serait plus souhaitable pour les fichiers -rw-r--r--

bizarre tout de même....

chmod 400 $final_path/config.dist.php $final_path/index.php $final_path/sous-domaine.html $final_path/VERSION chmod 644 $final_path/config.local.php find $final_path/scripts -type d -exec chmod 500 {} + find $final_path/scripts -type f -exec chmod 400 {} + find $final_path/templates -type d -exec chmod 500 {} + find $final_path/templates -type f -exec chmod 400 {} + find $final_path/include -type d -exec chmod 500 {} + find $final_path/include -type f -exec chmod 400 {} + find $final_path/data -type d -exec chmod 700 {} + find $final_path/data -type f -exec chmod 600 {} + find $final_path/www -type d -exec chmod 505 {} + find $final_path/garradin/www -type f -exec chmod 405 {} +

rodinux commented 3 years ago

Je continue de monter les versions dans la branche 1.1 et je les merge dans la branche testing. 1.1.10 à ce jour. Pour mon problème d'envois mails, il me semble que ce soit peut-être à cause de mon environnement sur un serveur Yunohost ou j'ai ajouté une extension mail à Nextcloud, ce qui doit créer des erreurs... Est-ce que l'on ne fermerait pas cette issue ?