IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Pb de fonctionnement d'un script fcgi selon le dossier d'exécution


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut Pb de fonctionnement d'un script fcgi selon le dossier d'exécution
    Bonjour,

    Je cherche à faire tourner une application web produite par le framework perl dancer2.
    La commande "perl dancer2 -a myapp" crée le squelette d'un site web minimal, avec un script dispatch.fcgi dans le sous-dossier
    public pour le fonctionnement en fcgi.

    1) Si je lance cette commande ("perl dancer2 -a myapp") en tant que root dans le dossier /var/www, et que je configure un virtualhost adapté à cet emplacement (avec par ex comme nom de serveur "myapp.fr), en utilisant le module fcgi d'apache, la page d'acceuil s'affiche correctement, avec les 2 images qui y sont incluses si je demande dans un navigateur :
    myapp.fr

    2) Si je lance cette commande dans le dossier /home/user/public_html, et que je place la directive
    UserDir public_html
    dans le fichier apache2.conf, alors la page d'accueil s'affiche également, mais les 2 images présentes sur la pages ne sont pas visibles, si je demande dans le navigateur :
    localhost/~user/public_html/myapp/public/dispatch.fcgi

    Il y a un problème de chemins de fichiers, comme s'il cherchait les images dans /var/www/images, alors qu'elles sont dans /home/user/myapp/public/images.

    Dans le fichier /var/log/apache2/access.log les messages liés à cette connexion au serveur sont :

    127.0.0.1 - - [21/Mar/2016:21:51:18 +0100] "GET /~chris/myapp/public/dispatch.fcgi HTTP/1.1" 200 2030 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    127.0.0.1 - - [21/Mar/2016:21:51:19 +0100] "GET /~chris/myapp/public/dispatch.fcgi/css/style.css HTTP/1.1" 200 1216 "http://localhost/~chris/myapp/public/dispatch.fcgi" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    127.0.0.1 - - [21/Mar/2016:21:51:19 +0100] "GET /images/perldancer-bg.jpg HTTP/1.1" 404 509 "http://localhost/~chris/myapp/public/dispatch.fcgi/css/style.css" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    127.0.0.1 - - [21/Mar/2016:21:51:19 +0100] "GET /images/perldancer.jpg HTTP/1.1" 404 509 "http://localhost/~chris/myapp/public/dispatch.fcgi/css/style.css" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    Dans le fichier /var/log/apache2/error.log on trouve :

    [myapp:7596] core @2016-03-21 21:51:19> looking for get in /usr/local/share/perl/5.10.1/Plack/Middleware/RemoveRedundantBody.pm l. 14
    [myapp:7596] core @2016-03-21 21:51:19> Entering hook core.app.before_request in /usr/local/share/perl/5.10.1/Dancer2/Core/App.pm l. 1232
    [myapp:7596] core @2016-03-21 21:51:19> Entering hook core.app.after_request in /usr/local/share/perl/5.10.1/Dancer2/Core/App.pm l. 1189
    [Mon Mar 21 21:51:19 2016] [error] [client 127.0.0.1] File does not exist: /var/www/images, referer: http://localhost/~chris/myapp/public/dispatch.fcgi/css/style.css
    [Mon Mar 21 21:51:19 2016] [error] [client 127.0.0.1] File does not exist: /var/www/images, referer: http://localhost/~chris/myapp/public/dispatch.fcgi/css/style.css
    Merci d'avance à tous ceux qui me permettront d'y voir plus clair.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 240
    Points : 15 542
    Points
    15 542
    Par défaut
    l'image est appelée dans le fichier css/style.css donc regardez comment se fait cet appel

  3. #3
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Merci mathieu de t'intéresser à mon problème.
    Dans le fichier css/style.css les images sont appelées de la façon suivante :

    background-image: url("/images/perldancer.jpg"); pour la section header
    background-image: url("/images/perldancer-bg.jpg"); pour la section body

    Comme la structure du dossier public est :

    public
    |--css
    |--images

    Si je remplace les appels par :
    url("../images/perldancer.jpg");
    url("../images/perldancer-bg.jpg");

    ça fonctionne.
    Mais normalement je ne devrais pas avoir à modifier le fonctionne de ce site, puisqu'il doit être possible de le déployer de différentes façons :
    - standalone (ds le cas d'un fonctionnement local pour un test)
    - PSGI
    - scripts cgi et fastcgi
    seulement en paramétrant correctement le serveur web.

    Dans le cas 1), virtualhost avec DocumentRoot=/var/www/mywebapp, ça fonctionne tout de suite sans que j'ai besoin de modifier les 2 chemins.
    La différence est que le script fcgi est lancé grace à l'utilisation de la directive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ /public/dispatch.fcgi$1 [QSA,L]

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 240
    Points : 15 542
    Points
    15 542
    Par défaut
    Citation Envoyé par Krys006 Voir le message
    Mais normalement je ne devrais pas avoir à modifier le fonctionne de ce site, puisqu'il doit être possible de le déployer de différentes façons :
    dans ce cas c'est le fichier CSS qui ne correspond pas à ce besoin puisque il contient des chemins absolus

    je pense que si vous mettez des chemins relatifs dans le fichier CSS, le site fonctionnera avec les différentes méthodes

  5. #5
    Membre du Club
    Profil pro
    Développeur Full Stack
    Inscrit en
    Novembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Novembre 2007
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Vous avez sûrement raison. La structure de base du site n'est peut-être pas prévue pour une utilisation d'apache avec UserDir.
    Je vais quand même poser la question sur le forum de perldancer.

    J'ai juste une dernière question concernant apache. Que fait exactement la règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RewriteRule ^(.*)$ /public/dispatch.fcgi$1 [QSA,L]
    lorsqu'une requête est envoyée au serveur ?

    Krys006

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/10/2008, 07h27
  2. Script SQL selon algorithme
    Par aurelie83 dans le forum SQL
    Réponses: 13
    Dernier message: 13/05/2008, 09h34
  3. [Débutante] Problème de fonctionnement d'un script
    Par laroche1 dans le forum MATLAB
    Réponses: 16
    Dernier message: 24/10/2007, 10h10
  4. Réponses: 3
    Dernier message: 24/07/2007, 16h17
  5. Script Drop selon conditions
    Par Nergaahl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/04/2006, 09h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo