#my_webapp mauvaise URL pour charger les .js

Mon serveur YunoHost

Matériel: VPS chez OVH
Version de YunoHost: 11.2.5
J’ai accès à mon serveur : En SSH | Par la webadmin | en SFTP
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non
Si oui, expliquer:
Si votre requête est liée à une applicatio, précisez son nom et sa version: my_webapp 1.0~ynh15

Description du problème

Bonjour, j’essaye d’héberger moi-même un site fait maison sur yunohost via l’application my_webapp : PARCEL - Accueil
On peut voir dans la console du navigateur firefox plein d’erreur de chargement de fichiers *.js
Par exemple au lieu d’aller chercher les fichiers à l’URL :

https://lebasic.nohost.me/parcel/assets/js/range.js

Il tente de les trouver sur l’URL

https://lebasic.nohost.me/assets/js/range.js

Dans le code html, ce fichier est référencé comme ceci:

<script src="../assets/js/range.js"></script>

La subtilité est que dans le dossier racine du code du site, il y a deux dossiers : ‘partials-pages’ et ‘partials’, avec ‘partials-pages’ qui doit être le dossier ‘public’.
Je n’ai pas vu comment préciser ça à l’application my_webapp, à part en changeant la configuration de nginx.
J’ai donc modifié la valeur de ‘alias’ dans le fichier de configuration nginx /etc/nginx/conf.d/lebasic.nohost.me.d/my_webapp.conf qui ressemble maintenant à :

 rewrite ^/parcel$ /parcel/ permanent;
location /parcel/ {

    # Path to source
    alias /var/www/my_webapp/www/partials-pages/;

    # Default indexes and catch-all
    index index.html index.php;
    try_files $uri $uri/ /parcel/index.php?$args;

    # Prevent useless logs
    location = /parcel/favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /parcel/robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Deny access to hidden files and directories
    location ~ ^/parcel/(.+/|)\.(?!well-known\/) {
        deny all;
    }

    include conf.d/lebasic.nohost.me.d/my_webapp.d/*.conf;

    # Include SSOWAT user panel.
    include conf.d/yunohost_panel.conf.inc;
}

Ce sont mes premiers pas avec nginx, et je suppose que c’est là qu’est la clé du problème, mais je ne sais pas trop comment bien le configurer

En espérant que quelqu’un·e puisse m’aider, merci d’avance.
Léonard.

Si je me souviens bien (ça fait longtemps que je n’y ai pas touché, et pas le temps de le faire la tout de suite), mais l’appli my_webapp gère justement ça.

Elle est déployée dans /var/www/my_webapp/www/ qui est justement le dossier public, et tu peux mettre des choses dans le dossier parent.
Et si dans le code il y a besoin que le fichier public s’appelle partials-pages tu peux le feinter avec un lien symbolique (quel que soit le sens, ça ne devrait pas poser de problèmes).

Du coup tu aurai quelquechose du genre :

  • /var/www/my_webapp/partial-pages
  • /var/www/my_webapp/www → partial-pages
  • /var/www/my_webapp/partials

Et tout ça en laissant la conf nginx par défaut.
(après selon comment tu déploie et comment c’est codé, peut-être qu’il n’y a pas besoin de faire quoi que ce soit au niveau de nginx si tu renomme partial-pages en www)

Bonsoir, merci pour cette bonne idée, j’ai mis mon code dans le dossier parent de ‘www’ et fait un lien symbolique. Je préfère ça que de devoir toucher à la configuration nginx à la main. C’est toujours ça de pris :slight_smile:
Par contre ça ne résout pas le problème du mauvais path utilisé pour les fichier .js :frowning:

Une autre idée peut-être? :pleading_face:

Dans le fichier de configuration généré par my_webapp, il y a la ligne :

    try_files $uri $uri/ /parcel/index.php?$args;

est-ce qu’il ne faut pas que j’ajoute une ligne du genre pour ajouter ‘parcel/’ à toutes les requêtes de fichiers, et pas que index.php?

Je dis ça mais j’imagine qu’il doit y avoir une solution plus simple que modifier la conf car j’imagine que je ne suis pas le seul a avoir des path relative dans mon code, et ne pas servir mon site sur la racine de mon domaine.

Pour tester, j’ai configuré mon application de cette manière :


Et ça fonctionne.
Et quand je l’ai reconfigurée de cette manière :

Ajouter parcel dans le champ de droite, et ne pas mettre l'application par défaut

Et ben ça fonctionne toujours!!!

Donc je ne sais pas trop ce qui a changé entre les 2. C’est peut-être un bug de my_webapp qui ne fait pas tout bien du premier coup? Si j’arrive à reproduire ça vaut le coup de faire une issue sur le projet de l’application ou pas d’après vous/toi?

Ça m’étonne que dans le fichier généré ça parle de parcel alors que c’est spécifique à ton déploiement.

Je ne suis pas assez au point sur la conf nginx pour pouvoir t’aider plus par contre :frowning_face:

Ça parle de parcel dans le fichier de config, car via l’interface web de gestion/paramétrage de l’application my_webapp, j’avais précisé que je voulais que le site soit accessible via la sous-URL /parcel.

Ah du coup oui, désolé, ça appuie ma dernière phrase comme quoi je ne suis pas assez calé sur nginx :frowning_face:
(Il faudrait que je me forme, la je galère dessus depuis 2 jours au boulot :scream: )

Je ne suis pas assez calé avec nginx, mais cela me rappelle une config un peu spéciale que l’on avait du mettre en place pour une app… Peut-être un truc du genre:

try_files $uri $uri/ parcel/parcel/index.php?$query_string;

  location ~ \.php$ {
    if (!-e $request_filename) {
      rewrite ^parcel/?(.*)$ parcel/index.php?/$1 last;
      break;
    }
  
  }

Ça n’a peut-être rien à voir, mais si ça peut t’aider par miracle…

Ah mais attends…
Dans la conf de la webapp (interface YunoHost), il y a aussi un supbath ? Il n’y en a pas dans ta capture d’écran.

Est ce que tu pourrait tout fliguer, désinstaller l’application (la sauvegarder avant quand même au cas où), puis la ré-installer et repartir sur l’organisation des fichiers comme ça :

Avec la webapp qui soit configurée juste sur ton-domaine.nohost.me à la racine.

La si je comprends bien, tu as dit à YunoHost que c’était à la racine, mais tu es allé configurer nginx pour que ce n’y soit pas.
(Ou alors je n’ai rien compris hein, je ne suis pas au point sur nginx)

Salut Mamie, en fait j’ai testé les deux configurations : l’application à la racine ou avec ‘parcel’ comme subpath. Quand c’est à la racine ça marche, quand c’est dans un subpath ça ne marche plus :frowning:
Maintenant j’ai aussi installé une autre application dans un subpath qui fait tourner une API en python avec le framework FastAP, et gunicorn, et j’ai le même problème avec le subpath : l’application reçoit des demandes incluant le subpath, et pas uniquement ce qui suit le subpath. Du coup ça me fait 2 cas pratiques pour comprendre comment marchent les redirections (rewrite ou alias) de nginx, et faire un bon paramétrage. Souhaitez-moi bon
courage :slight_smile:
Si je m’en sors, j’écrirai ici ce que j’ai fait et ce que j’ai compris, pour les prochain·es :slight_smile:

1 Like

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.