geoserverwmsmapserver

How I can get a wms-Layer from mapserver like we do with a geoserver?


My question is not very clear but I will try to explain it.. When we call a wms layer from geoserver in Qgis for example we write http://adresse/geoserver/wms? and we find all layers which we have published.. I'd like to do the same: write a mapserver_adresse and get layers which I publish with mapserver (I do not want to write the mapfile name in the adresse).. Is-it possible and where I should start? Thanks


Solution

  • You have to write a script in the same location in which is the executable mapserv. In this script you set the variable MS_MAPFILE=/path/your/mapfile and than execute mapserv.

    On Linux this would look so:

    #! /bin/bash
    export MS_MAPFILE=/path/your/mapfile
    ./mapserv
    

    Do not forget the #! /bin/bash, otherwise mapserver will refuse to work.

    Save this script in the same location where is mapserv and make it executable, i.e:

    chmod +x /usr/lib/cgi-bin/your_script 
    

    Now you can use it as a wms server in qgis with this address:

    http://address/cgi-bin/your_script?
    

    If you want to hide the "cgi-bin" part as well, can do it with apache.

    See also all other environment variables which are recognized by mapserver:

    https://trac.osgeo.org/mapserver/wiki/EnvironmentVariables

    On Windows with Apache you can do the same using a SetEnvIf Directive like:

    SetEnvIf Request_URI "/cgi-bin/exemplars/BGS_Bedrock_Geology/wms" MS_map file=/ms4w/apps/cookbookExemplars/BGS_Bedrock_Raster_Map/onegeology.map