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 :

.jsp qui s'affiche en code source


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut .jsp qui s'affiche en code source
    Bonjour,
    Apres avoir fait toute sorte de tutoriel qui n'ont pas marches dans mon cas je me tourne vers vous...
    Excusez-moi d'avance pour le manque d'accent (clavier qwerty...) Edit : quoi que avec le correcteur je peux les mettre
    Donc pour commencer les données :
    Je suis sous CentOs 5.2
    Tomcat 6 est installe (ce n'est pas moi qui l'ai fait et tout marchait bien de ce cote donc deja on peut partir du principe que ca ne vient pas de la configuration initiale de Tomcat)
    J'ai installe Apache 2.2.3 et tomcat-connectors-1.2.28.
    Apparemment tout va bien...sauf quand j'essaie d'afficher sur mon webrowser un fichier.jsp..
    A la place "d'exécuter" son contenu, il se contente d'afficher le code source.
    J'en déduis que Apache ne redirige pas bien les fichiers .jsp vers tomcat mais je ne vois pas ou est le problème...
    Je suis actuellement en stage dans une entreprise et c'est pas évident parce qu'on m'a embarque la-dedans alors que j'ai pas fait la config de tomcat (et donc que je ne m'y connait pas du tout en java et servlet), et que mon chef de projet est trop "busy" pour répondre a mes questions..
    Je me tourne donc humblement vers vous en espérant avoir une réponse.

    Peut est-il mieux que je mette des extraits de ma config :
    httpd.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Listen 80
    ...
    LoadModule jk_module modules/mod_jk.so
    ...
    JkWorkersFile "/etc/httpd/conf/workers.properties"
    JkLogFile "/etc/httpd/logs/mod_jk.log"
    JkLogLevel info
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
    JkMount /servlet/* ajp13
    JkMount /usr/local/tomcat/webapps/ROOT/*.jsp ajp13
    ...
    ServerAdmin root@localhost
    ServerName 127.0.0.1:80
    ..
    DocumentRoot "/usr/local/tomcat/webapps/ROOT"
    ...
    <Directory /usr/local/tomcat/webapps/ROOT>
    Options FollowSymlinks Includes
    DirectoryIndex index.jsp index.html index.html.var
    AddHandler server-parsed shtml
    Order allow,deny
    Allow from all
    </Directory>
    <Location /usr/local/tomcat/lib>
    #I'm not sure about that..
    <Limit POST>
    Order deny,allow
    Deny from all
    Allow from localhost
    Satisfy any
    </Limit>
    </Location>
    J'ai aussi cree un fichier workers.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    workers.tomcat_home=/usr/local/tomcat
    workers.java_home=/usr/java/jdk1.6.0_064
    ps=/
    ...
    worker.list=ajp12, ajp13
    ...
    worker.ajp13.port=8009
    worker.ajp13.host=localhost
    worker.ajp13.type=ajp13
    worker.ajp13.lbfactor=1
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=ajp12, ajp13
    worker.inprocess.type=jni
    worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parallel_charting.jar
    worker.inprocess.cmd_line=start
    Voila...
    J'espère avoir mis toute les informations qu'il vous faut pour m'aider, sinon n'hesitez pas a me demander.
    Merci beaucoup,
    Saita

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Y a deux choses qui ne vont pas : la valeur de DocumentRoot et surtout les JkMount. Ce qu'il se passe c'est qu'Apache ne comprend pas que tu demandes un truc à Tomcat, donc il sert ce qu'il a dans son document root qui correspond au répertoire de l'appli Tomcat et donc te renvoie le code JSP.

    Il faut donc avant tout t'assurer des valeurs des JkMount : le premier paramètre correspond au chemin qui doit déclencher Tomcat. Tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JkMount /servlet/* ajp13
    JkMount /usr/local/tomcat/webapps/ROOT/*.jsp ajp13
    ce qui signifie qu'Apache va aller interroger Tomcat uniquement si tu demandes un truc du genre http://.../servlet/xyz ou http://...//usr/local/tomcat/webapps...mportequoi.jsp. Ce n'est pas tellement ce que tu veux, j'imagine.

    Si tu veux absolument tout (mais vraiment absolument tout) renvoyer sur Tomcat, mets simplement ceci à la place de tes 2 JkMount actuels :

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut
    Merci beaucoup Mac de me prêter assistance
    Alors j'ai change le JkMount en ca :
    parce qu'il me semblait que c'etait plus ce qui correspondait a ce que je voulais faire mais..ca ne marche pas.
    Donc j'ai mis ce que tu as dit
    Mais sans succes non plus.
    Par ailleurs j'ai aussi verifier avec un script perl..Je ne sais pas si c'est lie mais meme resultat : je n'obtiens que le code source..
    Tu m'as dit que quelquechose n'allait pas avec Mon DocumentRoot, peut me dire quoi plus en detail ? Le chemin que j'ai mis correspond au dossier ou sont ranges les scripts que j'essaie d'afficher.
    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut
    Si ca peut aider quand je vais voir dans mod_jk.log j'ai ces erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     tail mod_jk.log
    [Thu Jul 09 11:21:31 2009][29421:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.jvm_lib' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29421:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.stdout' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29421:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.stderr' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29421:2934478176] [info] init_jk::mod_jk.c (3183): mod_jk/1.2.28 initialized
    [Thu Jul 09 11:21:31 2009][29422:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.class_path' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29422:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.cmd_line' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29422:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.jvm_lib' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29422:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.stdout' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29422:2934478176] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.inprocess.stderr' is deprecated - please check the documentation for the correct replacement.
    [Thu Jul 09 11:21:31 2009][29422:2934478176] [info] init_jk::mod_jk.c (3183): mod_jk/1.2.28 initialized
    Je ne suis pas vraiment sure que ca ait un rapport mais apparement il n'aime pas ce que j'ai mis dans workers.propertie

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Je disais que le document root n'était pas correct dans le sens où il pointe sur le répertoire de Tomcat et c'est ce qui cause le problème a priori. Le plus simple c'est quand même de le faire pointer sur un autre répertoire, ça éliminera au moins cette piste.

    Pour les warnings, c'est parce que ton worker.properties est trop "vieux" : il faut le corriger pour y mettre des paramètres qui correspondent avec ta version de mod_jk. Ca peut aussi être ça, le problème : la conf est incomplète pour mod_jk, il ne sait pas quoi faire et donc il ne se passe rien.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut
    Ok.... C'est le bazar dans ma tete !
    Mon fichier workers.properties est trop vieux...Je viens de le faire hier XD Mais je suppose que ce n'est pas le sens de cette phrase (je veux dire pas le sens creation mais une histoire de version peut etre..)Pourtant il est issue du fichier exemple fournit avec JK-connector qui est il me semble une des versions les plus recente.
    Quand au DocumentRoot..Je suis vraiment dslee Tu m'excuseras Mac mais je ne vois pas ou le faire pointer a part sur ce dossier.
    Ne faut-il pas qu'il pointe la ou les scripts html, jsp ...sont ?
    En faisant d'autre recherche cette apres midi je suis tombee sur un livre disant que pour Apache 2.2.x il vaut mieux utiliser mod_proxy.. Peut etre cette piste est-elle a etudier.
    Merci beaucoup d'essayer de m'aider. D'apres ce que tu me dis, j'ai l'impression que quasiment tout ce que j'ai fait est faux et/ou a (re)faire.. C'est un peu décourageant.. Mais bon en persistant je suis sure d'y arriver...un jour ! lol

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    A priori oui, il faut garder le Reverse. Peut-être que ProxPassMatch n'aime pas les URL ajp, à vérifier.

    On peut essayer ceci : remettre le ProxyPass en place, supprimer le ProxyPassMatch et mettre tout ça dans un bloc <FilesMatch> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <FilesMatch "\.jsp$">
        ProxyPass / ajp://localhost:8009/
        ProxyPassReverse / ajp://localhost:8009/
    </Files>

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut
    Bonjour,
    Un petit message d'erreur pour bien commencer la journee.
    [root@satm-dev1-sonia1 ~]# /etc/init.d/httpd start
    Starting httpd: Syntax error on line 19 of /etc/httpd/conf.d/proxy_ajp.conf:
    ProxyPass|ProxyPassMatch can not have a path when defined in a location.
    [FAILED]
    Par contre je ne comprend pas trop le message...
    Je te met ce que j'ai mis dans proxy_ajp.conf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
     
    #
    # When loaded, the mod_proxy_ajp module adds support for
    # proxying to an AJP/1.3 backend server (such as Tomcat).
    # To proxy to an AJP backend, use the "ajp://" URI scheme;
    # Tomcat is configured to listen on port 8009 for AJP requests
    # by default.
    #
     
    # 
    # Uncomment the following lines to serve the ROOT webapp
    # under the /tomcat/ location, and the jsp-examples webapp
    # under the /examples/ location.
    #
    #ProxyPass /tomcat/ ajp://localhost:8009/
    <FilesMatch "\.jsp$">
            ProxyPass / ajp://localhost:8009/
            ProxyPassReverse / ajp://localhost:8009/
    </FilesMatch>
    J'ai mis </FilesMatch> car sinon il me mettait une erreur.
    A propos des servlets..C'est encore un objet bien obscure pour moi... Comment dire a Tomcat que ca le concerne aussi ?.. D'apres ce que je crois savoir, ce ne sont pas des fichiers speciaux... Donc pas de possibilite de trier par extension de fichier comme avec les .jsp... Mais au final ca fait quoi les servlets ?

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut
    J'ai navigue un peu sur internet ce matin et voici ce qui ressort de mes recherches :
    Un moyen de faire passer les servlets par Tomcat serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass /servlets http://localhost:8080/servlets
    ProxyPassReverse /servlets http://localhost:8080/servlets
    Plusieurs remarques : que signifie /servlets => comment savoir par quoi je dois le remplacer ?
    le port 8080 doit etre remplace par le port 8009, non ?
    Et enfin pourquoi le ajp a ete remplace par http ?
    J'ai aussi lu autre chose que je n'ai pas compris mais qui d'apres les commentaires semblerait faire ce que je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteEngine on
    RewriteCond %{REQUEST_URI} /(.*).jsp(.*)
    RewriteRule ^/(.*) ajp://localhost:8010/$1 [P]
     
    RewriteCond %{REQUEST_URI} /servlet/url/
    RewriteRule ^/(.*) ajp://localhost:8010/$1 [P]
    Je suppose que je dois changer aussi les ports 8010 en 8009, surement la partie aussi /servlet/url en ??
    Pourrais-tu m'expliquer ce que font ces instructions, si elles correspondent bien a ce que je cherche ?
    Merci

    Edit : J'ai trouve autre chose d'interessant sur cette page http://www.novell.com/support/viewCo...4935&sliceId=1
    At this point, restarting Apache should enable mod_proxy and mod_proxy_ajp when loading. We now need to configure the web application handling mechanism. First, determine if Apache will be serving images and HTML, but tomcat serves JSP files all from inside of the same directory. If this is not the case, configuration is easily done by changing the

    JkMount /webapplication/* ajp13

    configuration line to

    ProxyPass /webapplication/ ajp://localhost:8009/webapplication/

    And restart apache. If a single directory contains both HTML and JSP files, the ProxyPass directive will not handle the *.jsp mechanism. Instead, the rewrite module (step 7 in enabling the appropriate modules) is required, and a special RewriteRule directive is used. The syntax for the RewriteRule directive :

    RewriteRule REQUEST_URI TARGET [FLAGS]

    For example :

    JkMount /gw/*.jsp ajp13

    Would be rewritten as :

    RewriteRule ^/gw(.*\.jsp)$ ajp://localhost:8009/gw/$1 [P]

    This rule simply enables the proxy module using RewriteRule for anything that matches the parameter (the [P] flag). The example above will send anything hit with /gw/*.jsp and forward it to tomcat using the ajp protocol on port 8009 for the localhost.

    Once the configuration is set up, restart Apache, and it should now be communicating with Tomcat.
    Qu'en penses-tu ? Ca a bien l'air de correspondre a ce que j'avais deja trouve ci dessus.. A quoi sert le [P] flag ? Et dans ce cas, que deviennent les servlets ?
    Une question tres importante : une fois que tout marchera ( j'ai hate que ce moment vienne !) Comment savoir quelles fichiers passent bien par Tomcat et lesquels passent pas Apache ?
    Ps : Desolee de mettre des textes en Anglais mais malheureusement, beaucoup de documentations et de site sur le sujet sont en Anglais...

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Par défaut
    Je me parle a moi-meme ... lol...
    Enfin bref, j'ai essaye cette config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ProxyPass /servlets http://localhost:8009/servlets
    ProxyPassReverse /servlets http://localhost:8009/servlets
     
    RewriteEngine on
    RewriteRule ^/(.*\.jsp)$ ajp://localhost:8009/$1 [P]
    Mais je ne sais pas pourquoi quand je tape http://serveur.com/index.jsp il me redirige vers http://10.1.9.50/otrs/index.pl (??)
    Je me disais que ce otrs me disais quelquechose : il s'agit du repertoire DocumentRoot que l'on a change (/opt/otrs/var/httpd/htdocs)...
    Mais en plus il m'a change le .jsp en .pl (???) et naturellement j'ai une erreur car index.pl n'existe pas..
    Pourquoi cette redirection ?
    Voila ce que donne error_log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Mon Jul 13 10:59:03 2009] [error] [client 10.1.4.96] File does not exist: /opt/otrs/var/httpd/htdocs/otrs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Code C# qui affiche son code source
    Par Zechiron dans le forum C#
    Réponses: 7
    Dernier message: 22/04/2008, 19h13
  2. Réponses: 9
    Dernier message: 04/03/2008, 11h04
  3. Safari affiche le code source de ma page html
    Par yep007 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2007, 11h12
  4. afficher son code source
    Par blackbird1 dans le forum Delphi
    Réponses: 3
    Dernier message: 21/08/2006, 10h57
  5. [Sécurité] Afficher le code source PHP
    Par tigzirt dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2006, 08h42

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