doc:appunti:linux:sa:debian_11_12_mapserver_upgrade
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:linux:sa:debian_11_12_mapserver_upgrade [2023/11/23 17:46] – niccolo | doc:appunti:linux:sa:debian_11_12_mapserver_upgrade [2023/11/23 18:11] (current) – [MAP:TRANSPARENT not longer valid] niccolo | ||
---|---|---|---|
Line 5: | Line 5: | ||
One change that deserves a dedicated page is the upgrade from **MapServer 7.6.2** shipped with Debian 11 to **MapServer 8.0.1** shipped with Debian 12; in fact it happened that almost all the MapServer based applications stopped working. | One change that deserves a dedicated page is the upgrade from **MapServer 7.6.2** shipped with Debian 11 to **MapServer 8.0.1** shipped with Debian 12; in fact it happened that almost all the MapServer based applications stopped working. | ||
- | ===== A mapserver.conf | + | ===== Mandatory /etc/mapserver.conf ===== |
In version 8 it became mandatory to have a configuration file, the default location of which is **/ | In version 8 it became mandatory to have a configuration file, the default location of which is **/ | ||
+ | |||
+ | ==== CONFIG:MAPS aliases ==== | ||
In the past I used to have some CGI-Mapserver services (as native MapServer or as WMS service) where the service URL contained **the full path of the mapfile**, something like this: | In the past I used to have some CGI-Mapserver services (as native MapServer or as WMS service) where the service URL contained **the full path of the mapfile**, something like this: | ||
Line 15: | Line 17: | ||
</ | </ | ||
- | It is not a good practice to accept from the internet a parameter that is the full path to a local file. MapServer 8 requires that you declare at least a pattern that the received mapfile must obey to. Better than that, you can define several aliases (short names pointing to the mapfiles wherever they resied) and **accept from the client only that aliases**, disallowing the requests for a full path mapfile. I opted for the latter mode: | + | It is not a good practice to accept from the internet a parameter that is the full path to a local file. MapServer 8 requires that you declare at least a pattern that the received mapfile must obey to ('' |
< | < | ||
Line 40: | Line 42: | ||
http:// | http:// | ||
</ | </ | ||
+ | |||
+ | ===== MAP: | ||
+ | |||
+ | In MapServer 8 mapfiles the **TRANSPARENT** identifier is not longer accepted inside the MAP object, you have to move it into the **OUTPUTFORMAT** object; something like this: | ||
+ | |||
+ | < | ||
+ | OUTPUTFORMAT | ||
+ | NAME agg_png | ||
+ | DRIVER " | ||
+ | MIMETYPE " | ||
+ | IMAGEMODE RGBA | ||
+ | EXTENSION " | ||
+ | TRANSPARENT ON | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | ===== Name change of CGI parameters ===== | ||
+ | |||
+ | One of the biggest problem of the upgrade is the change of the name of some CGI parameters; notably the **map_size** option is not longer supported. | ||
+ | |||
+ | I had web application based on OpenLayers 2.11, which included a MapServer bitmap layer. The JavaScript code automatically generates the request URL, something like this (parameters are split on different lines for readability): | ||
+ | |||
+ | < | ||
+ | / | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | & | ||
+ | </ | ||
+ | |||
+ | Unfortunately the **map_size** option is not longer accepted and the resulting PNG image has the default size declared into the MAP:SIZE object of the mapfile, instead of the requested 1446x2274 pixels. This causes a **totally distorted map** image into the web application! | ||
+ | |||
+ | This problem cannot be easily fixed, because the URL options are hard-coded into the OpenLayers code. So I had to replace all the OpenLayers 2.x code with the current **OpenLayers 8.x**, which required a total refactory of the code. | ||
+ | |||
doc/appunti/linux/sa/debian_11_12_mapserver_upgrade.1700758006.txt.gz · Last modified: 2023/11/23 17:46 by niccolo