#1 Thu 12 April 2007 12:32
- Mobilotek
- Participant occasionnel
- Lieu: Toulouse
- Date d'inscription: 17 Oct 2006
- Messages: 26
[Mapserver/Apache]
Bonjour!
Je viens de mettre en place un server wms (en intranet pour l'instant). J'ai donc crée mon mapfile ("test_wms.map"), placé à la racine de c:/
J'aimerai que au lieu d'apeller mon serveur par
Code:
http://192.168.1.99/cgi-bin/mapserv.exe?map=/test_wms.map&
, qui est un peu "barbarde", y acceder par (par exemple):
Code:
http://192.168.1.99/mywms
je pense que c'est possible grace à
Code:
SetEnvIf Request_URI "/cgi-bin/mywms" MS_MAPFILE=/path/to/mymapfile.map
De ce fait, j'ai renommé mon mapserv.exe en mywms.exe, et dans C:\ms4w\Apache\conf\httpd.conf y est mis :
Code:
SetEnvIf Request_URI "/cgi-bin/mywms" MS_MAPFILE=/test_wms.map
pour etre sur, j'ai copié mywms.exe dans le dossier appache (on sait jamais...)
Mais lors de l'appel par l'url :
Code:
http://192.168.1.99/mywms
ou meme
Code:
http://192.168.1.99/mywms.exe
ou
Code:
http://192.168.1.99/mywms/cgi-bin/mywms
meme en rajoutant & ou ? à la fin...
Ca ne marche pas, il ne trouve pas la page.
ni dans dans arcview, avec le plugin wms, il ne trouve pas d'url valide...(sauf
Code:
http://192.168.1.99/cgi-bin/mapserv.exe?map=/test_wms.map&
)
comment faire??
Hors ligne
#2 Thu 12 April 2007 13:31
Re: [Mapserver/Apache]
Bonjour,
Ce n'est pas forcément que l'url est batarde, c'est surtout qu'ainsi on a accès à votre mapfile et donc à vos données
Moi j'aurais fait comme cela :
Code:
MS_MAPFILE=c:/apache/www/test_wms.map export MS_MAPFILE SetEnvIf Request_URI "c:/apache/cgi-bin/mapserv"
appeler ce fichier mywms et le placer dans /cgi-bin/
Sous linux, ceci fonctionne :
Code:
MS_MAPFILE=/var/local/blabla/project/vmap.map /var/www/cgi-bin/mapserv
Ou bien :
Code:
#! /bin/sh MS_MAPFILE=/var/local/project/vmap.map export MS_MAPFILE /var/www/cgi-bin/mapserv
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Fri 13 April 2007 13:47
- Mobilotek
- Participant occasionnel
- Lieu: Toulouse
- Date d'inscription: 17 Oct 2006
- Messages: 26
Re: [Mapserver/Apache]
re,
je sais pas si j'ai bien fait, mais j'ai placé
#! /bin/sh
MS_MAPFILE=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&REQUEST=getmap&LAYERS=georoute4000&SERVICE=WMS&VERSiON=1.1
export MS_MAPFILE
SetEnvIf Request_URI "C:/ms4w/Apache/cgi-bin/mapserv.exe"
dans mywms qui est dans cgi-bin (d'ailleur, quelle extension il lui faut? .cgi?)
je suis sous windows...
en tout cas quand j'apelle http://192.168.1.99/wms, il m'affiche "No query information to decode. QUERY_STRING is set, but empty." , car dans httpd.conf j'y es mis:
ScriptAlias /wms "C:/ms4w/Apache/cgi-bin/mapserv.exe"
logiquement, il devrait lancer la requette associée au mapfile qui est declarée dans /cgi-bin/mywms ? n'est pas?
Hors ligne
#4 Fri 13 April 2007 14:08
- Mobilotek
- Participant occasionnel
- Lieu: Toulouse
- Date d'inscription: 17 Oct 2006
- Messages: 26
Re: [Mapserver/Apache]
bon, il existe une autre solution, apparament,
et celle là est pour windows...
dans httpd.conf, placer :
SetEnvIf Request_URI "/cgi-bin/mswms.exe" MS_MAPFILE=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&
(mswms.exe correspond à une copie du mapserv.exe)
donc, logiquement, a l'apel de http://192.168.1.99/cgi-bin/mswms.exe , il devrait lancer une url equivalante à:
http://192.168.1.99/cgi-bin/mswms.exe?m … s.map&
qui retourne comme message dans ie:
"mapserv(): Web application error. No template provided."
or, quand je lance http://192.168.1.99/cgi-bin/mswms.exe , il m'affiche "No query information to decode. QUERY_STRING is set, but empty. "
Hors ligne
#5 Fri 13 April 2007 14:13
Re: [Mapserver/Apache]
or, quand je lance http://192.168.1.99/cgi-bin/mswms.exe , il m'affiche "No query information to decode. QUERY_STRING is set, but empty. "
Normal. Votre serveur WMS fonctionne mais il faut lui demander les couches que vous désirez. Voici une url correcte :
http://192.168.1.99/cgi-bin/mswms.exe?L … -90,180,90
Le dernier paramètre est optionnel, il me semble.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Fri 13 April 2007 15:23
- Mobilotek
- Participant occasionnel
- Lieu: Toulouse
- Date d'inscription: 17 Oct 2006
- Messages: 26
Re: [Mapserver/Apache]
je suis d'accord, pour avoir une image dans ie, on est obligé de spécifier un layer.
Mais je fait mes tests dans dans arcview avec l'outil wms, qui lui requiert une url du type
Code:
http://192.168.1.99/cgi-bin/mswms.exe?map=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&
pour offir la liste de toutes les couches disponnibles dans le mapfile.
Mais, qu'importe, de toute façon, que je mette:
SetEnvIf Request_URI "/cgi-bin/mswms.exe" MS_MAPFILE=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&
ou
SetEnvIf Request_URI "/cgi-bin/mswms.exe" MS_MAPFILE=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&REQUEST=getmap&LAYERS=georoute4000&SERVICE=WMS&VERSiON=1.1
ça ne change rien lors de l'apel http://192.168.1.99/cgi-bin/mswms.exe
par deduction setevenif est inactif. pourquoi? ya t-il un endroit particulier où le placer dans le httpd.conf?
------------------------
lors du test de cette requete dans ie(d'apres votre proposition):
Code:
http://192.168.1.99/cgi-bin/mswms.exe?LAYERS=srtm&VERSION=1.1.0&REQUEST=GetMap&SERVICE=WMS
l'erreur suivant apparait:
msEvalRegex(): Regular expression error. String (c:/ms4w/Apache/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map/cgi-bin/mswms.exe) failed expression test.
1) pourquoi concatene t-il "/cgi-bin/mswms.exe" à la fin de la chaine?
2) pourquoi parle t'il de mapserv.exe?
Hors ligne
#7 Fri 13 April 2007 16:02
Re: [Mapserver/Apache]
1) pourquoi concatene t-il "/cgi-bin/mswms.exe" à la fin de la chaine?
2) pourquoi parle t'il de mapserv.exe?
... Réfléchissez bien à ce que vous voulez faire et vous comprendrez que votre configuration est totalement illogique, en gros c'est le serpent qui se mange la queue.
Ce que vous voulez faire :
appellez un script qui va s'occuper de mettre en relation le mapfile avec mapserv.
Ici, mapserv est le véritable serveur WMS !
L'ordre du process est le suivant :
* appel de votre script
* votre script met en relation mapserv et le mapfile
* renvoit de l'image
Votre script doit contenir deux choses :
* l'adresse du mapfile
* la localisation de mapserv
Conclusion :
Code:
SetEnvIf Request_URI "/cgi-bin/mswms.exe" MS_MAPFILE=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&
est incorrecte.
Code:
SetEnvIf Request_URI "/cgi-bin/mapserv.exe" MS_MAPFILE=c:/ms4w/Apache/htdocs/serveur_wms/test_wms.map&
Devrait mieux fonctionner.
Y.
PS : je tiens à préciser une chose, je n'ai pas l'habitude de windows, sous linux ceci fonctionne (à quelques adaptations près).
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#8 Mon 16 April 2007 17:49
- Mobilotek
- Participant occasionnel
- Lieu: Toulouse
- Date d'inscription: 17 Oct 2006
- Messages: 26
Re: [Mapserver/Apache]
Bon, ben pour ceux que ça interresse, j'ai trouvé une solution simple:
1)copier et renomer mapserv.exe en NomDeVotreChoix (sans extension ça marche aussi)
2)Dans httpd, à la section <IfModule alias_module> ajouter:
ScriptAlias /NomDeVotreChoix "C:/ms4w/Apache/cgi-bin/NomDeVotreChoix"
SetEnvIf Request_URI "/NomDeVotreChoix" MS_MAPFILE=chemin/vers/mapfile/test_wms.map
3)Et voilà, votre serveur est dispo à l'adresse:
http://VotreServeur/NomDeVotreChoix?
on peut mettre cette url dans le "wms_onlineresource" du mapfile pour plus de discretion, lors du getcapabilities
Merci Yves pour ton attention.
Dernière modification par Mobilotek (Mon 16 April 2007 17:51)
Hors ligne
#9 Mon 16 April 2007 18:24
Re: [Mapserver/Apache]
Bon, ben pour ceux que ça interresse, j'ai trouvé une solution simple:
1)copier et renomer mapserv.exe en NomDeVotreChoix (sans extension ça marche aussi)
2)Dans httpd, à la section <IfModule alias_module> ajouter:
ScriptAlias /NomDeVotreChoix "C:/ms4w/Apache/cgi-bin/NomDeVotreChoix"
SetEnvIf Request_URI "/NomDeVotreChoix" MS_MAPFILE=chemin/vers/mapfile/test_wms.map
3)Et voilà, votre serveur est dispo à l'adresse:
http://VotreServeur/NomDeVotreChoix?
on peut mettre cette url dans le "wms_onlineresource" du mapfile pour plus de discretion, lors du getcapabilities
Merci Yves pour ton attention.
Bonjour,
Pourquoi vouloir à tout pris renommer mapserv !!!! Si NomDeVotreChoix=mapserv, l'étape 1 et une partie de l'étape 2 n'est plus nécessaire. Il suffit de placer mapser dans un endroit inaccessible (si vous voulez à tout pris empecher son utilisation de l'extérieur) et de l'appeler dans votre script qui, lui, est accessilbe dans /cgi-bin/.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#10 Fri 07 January 2011 15:06
- Clicgauche
- Participant occasionnel
- Lieu: MOISSAC
- Date d'inscription: 19 Mar 2008
- Messages: 40
- Site web
Re: [Mapserver/Apache]
Bonjour,
Je me gratte la tête pour changer l'URL "online resource" d'un serveur WMS que je suis en train de mettre en place :
Environnement Linux :
- emplacement de mapserv : /usr/lib/cgi-bin/mapserv
- emplacement de mon mapfile : /web/mapfile/wms_config.map
J'ai donc tenter de créer un fichier "wms" dans /usr/lib/cgi-bin/
contenant :
Code:
#! /bin/sh MS_MAPFILE=/web/mapfile/wms_config.map export MS_MAPFILE /usr/lib/cgi-bin/mapserv
ensuite j'ai fais un chmod u+x wms (pour mettre les droits d'exécution)
finalement en me connectant avec http://sous.domaine.fr/cgi-bin/wms j'obtiens une page blanche
Merci de vos éclairages...
Hors ligne
#11 Fri 07 January 2011 20:20
- tbonfort
- Participant actif
- Date d'inscription: 11 Oct 2007
- Messages: 87
Re: [Mapserver/Apache]
Bonjour,
Je me gratte la tête pour changer l'URL "online resource" d'un serveur WMS que je suis en train de mettre en place :
Environnement Linux :
- emplacement de mapserv : /usr/lib/cgi-bin/mapserv
- emplacement de mon mapfile : /web/mapfile/wms_config.map
J'ai donc tenter de créer un fichier "wms" dans /usr/lib/cgi-bin/
contenant :Code:
#! /bin/sh MS_MAPFILE=/web/mapfile/wms_config.map export MS_MAPFILE /usr/lib/cgi-bin/mapservensuite j'ai fais un chmod u+x wms (pour mettre les droits d'exécution)
finalement en me connectant avec http://sous.domaine.fr/cgi-bin/wms j'obtiens une page blanche
Merci de vos éclairages...
l'utilisation d'un script comme proposé est loin d'etre optimal, car cela oblige de lancer 2 processus cgi sur le serveur. il vaut mieux utiliser des rewriterules (penser a activer le module rewrite si ce n'est pas deja fait)
Code:
RewriteEngine On <Location /wms> SetEnv MS_ERRORFILE "/chemin/vers/mapserver-error.log" SetEnv PROJ_LIB "chemin vers le repertoir contenant le fichier epsg" #facultatif </Location> RewriteRule ^/wms/carto?(.*) /cgi-bin/mapserv?map=/chemin/vers/carto.map&$1 [PT,QSA]
a+,
thomas
Hors ligne