diff --git a/.github/actions/apache/configure/action.yml b/.github/actions/apache/configure/action.yml index 88f2abe..bbc17d3 100644 --- a/.github/actions/apache/configure/action.yml +++ b/.github/actions/apache/configure/action.yml @@ -24,9 +24,6 @@ runs: ln --symbolic \ "${PWD}/etc/renderd/renderd.conf.examples" \ /etc/renderd.conf - ln --symbolic \ - "${PWD}/etc/apache2/renderd.conf" \ - /etc/httpd/conf.d/renderd.conf ln --symbolic \ "${PWD}/etc/apache2/renderd-example-map.conf" \ /etc/httpd/conf.d/renderd-example-map.conf @@ -50,9 +47,6 @@ runs: ln --symbolic \ "${PWD}/etc/renderd/renderd.conf.examples" \ /etc/renderd.conf - ln --symbolic \ - "${PWD}/etc/apache2/renderd.conf" \ - /etc/apache2/conf-enabled/renderd.conf ln --symbolic \ "${PWD}/etc/apache2/renderd-example-map.conf" \ /etc/apache2/conf-enabled/renderd-example-map.conf @@ -82,9 +76,6 @@ runs: ln --symbolic \ "${PWD}/etc/renderd/renderd.conf.examples" \ /etc/renderd.conf - ln --symbolic \ - "${PWD}/etc/apache2/renderd.conf" \ - /etc/httpd/conf.d/renderd.conf ln --symbolic \ "${PWD}/etc/apache2/renderd-example-map.conf" \ /etc/httpd/conf.d/renderd-example-map.conf @@ -108,9 +99,6 @@ runs: ln --symbolic \ "${PWD}/etc/renderd/renderd.conf.examples" \ /etc/renderd.conf - ln --symbolic \ - "${PWD}/etc/apache2/renderd.conf" \ - /etc/apache2/conf-enabled/renderd.conf ln --symbolic \ "${PWD}/etc/apache2/renderd-example-map.conf" \ /etc/apache2/conf-enabled/renderd-example-map.conf diff --git a/.github/actions/test/action.yml b/.github/actions/test/action.yml index eb2e21b..bafb01e 100644 --- a/.github/actions/test/action.yml +++ b/.github/actions/test/action.yml @@ -3,7 +3,7 @@ inputs: tile_url: description: Tile URL for testing `mod_tile` module required: false - default: http://localhost/renderd-example/tiles/9/297/191.png + default: http://localhost:8081/tiles/renderd-example/9/297/191.png tile_sha224sum: description: Tile sha224sum for testing `mod_tile` module required: false diff --git a/etc/apache2/renderd-example-map.conf b/etc/apache2/renderd-example-map.conf index 873470f..0d5b3d3 100644 --- a/etc/apache2/renderd-example-map.conf +++ b/etc/apache2/renderd-example-map.conf @@ -1,8 +1,143 @@ -Alias /renderd-example-map /var/www/example-map +Alias /renderd-example-map /usr/share/renderd/example-map - + Options +FollowSymLinks AllowOverride All order allow,deny allow from all + +Listen 8081 + + + ModTileTileDir /var/cache/renderd/tiles + + # You can manually configure each tile set with AddTileConfig or AddTileMimeConfig. + # The first argument is the URL path relative to this virtual host + # under which a tile set is served. The second argument specifies the + # name of the tile set. This is used in the communication with renderd + # and is the directory under which (meta)tiles are stored on disk. + # + # By default (AddTileConfig) mod_tile assumes you are serving png files, however, + # mod_tile can also serve arbitrary other tile types such as javascript vector tiles, + # assuming the backend render daemon can handle the file type. + # To this purpose AddTileMimeConfig takes a 3rd agument, the file extension and it + # will guess the correct mimetype from it. If the mime type is not set correctly automatically, + # you need to use the configuration file route, where you can specify the mimetype and file extension + # independently. + # + #AddTileConfig /folder/ TileSetName + #AddTileMimeConfig /folder2/ TileSetName2 js + + # Alternatively (or in addition) you can load all the tile sets defined in the configuration file into this virtual host + LoadTileConfigFile /etc/renderd.conf + + # Specify if mod_tile should keep tile delivery stats, which can be accessed from the URL /mod_tile + # The default is On. As keeping stats needs to take a lock, this might have some performance impact, + # but for nearly all intents and purposes this should be negligable and so it is safe to keep this turned on. + ModTileEnableStats On + + # Turns on bulk mode. In bulk mode, mod_tile does not request any dirty tiles to be rerendered. Missing tiles + # are always requested in the lowest priority. The default is Off. + ModTileBulkMode Off + + # Timeout before giving up for a tile to be rendered + ModTileRequestTimeout 3 + + # Timeout before giving up for a tile to be rendered that is otherwise missing + ModTileMissingRequestTimeout 10 + + # If tile is out of date, don't re-render it if past this load threshold (users gets old tile) + ModTileMaxLoadOld 2 + + # If tile is missing, don't render it if past this load threshold (user gets 404 error) + ModTileMaxLoadMissing 5 + + # Socket where we connect to the rendering daemon + ModTileRenderdSocketName /run/renderd/renderd.sock + + # Options controlling the cache proxy expiry headers. All values are in seconds. + # + # Caching is both important to reduce the load and bandwidth of the server, as + # well as reduce the load time for the user. The site loads fastest if tiles can be + # taken from the users browser cache and no round trip through the internet is needed. + # With minutely or hourly updates, however there is a trade-off between cacheability + # and freshness. As one can't predict the future, these are only heuristics, that + # need tuning. + # If there is a known update schedule such as only using weekly planet dumps to update the db, + # this can also be taken into account through the constant PLANET_INTERVAL in render_config.h + # but requires a recompile of mod_tile + + # The values in this sample configuration are not the same as the defaults + # that apply if the config settings are left out. The defaults are more conservative + # and disable most of the heuristics. + + # Caching is always a trade-off between being up to date and reducing server load or + # client side latency and bandwidth requirements. Under some conditions, like poor + # network conditions it might be more important to have good caching rather than the latest tiles. + # Therefor the following config options allow to set a special hostheader for which the caching + # behaviour is different to the normal heuristics + # + # The CacheExtended parameters overwrite all other caching parameters (including CacheDurationMax) + # for tiles being requested via the hostname CacheExtendedHostname + # + #ModTileCacheExtendedHostname cache.tile.openstreetmap.org + #ModTileCacheExtendedDuration 2592000 + + # Upper bound on the length a tile will be set cacheable, which takes + # precedence over other settings of cacheing + ModTileCacheDurationMax 604800 + + # Sets the time tiles can be cached for that are known to by outdated and have been + # sent to renderd to be rerendered. This should be set to a value corresponding + # roughly to how long it will take renderd to get through its queue. There is an additional + # fuzz factor on top of this to not have all tiles expire at the same time + ModTileCacheDurationDirty 900 + + # Specify the minimum time mod_tile will set the cache expiry to for fresh tiles. There + # is an additional fuzz factor of between 0 and 3 hours on top of this. + ModTileCacheDurationMinimum 10800 + + # Lower zoom levels are less likely to change noticeable, so these could be cached for longer + # without users noticing much. + # The heuristic offers three levels of zoom, Low, Medium and High, for which different minimum + # cacheing times can be specified. + + #Specify the zoom level below which Medium starts and the time in seconds for which they can be cached + ModTileCacheDurationMediumZoom 13 86400 + + #Specify the zoom level below which Low starts and the time in seconds for which they can be cached + ModTileCacheDurationLowZoom 9 518400 + + # A further heuristic to determine cacheing times is when was the last time a tile has changed. + # If it hasn't changed for a while, it is less likely to change in the immediate future, so the + # tiles can be cached for longer. + # For example, if the factor is 0.20 and the tile hasn't changed in the last 5 days, it can be cached + # for up to one day without having to re-validate. + ModTileCacheLastModifiedFactor 0.20 + + # Tile Throttling + # Tile scrapers can often download large numbers of tiles and overly strain tileserver resources + # mod_tile therefore offers the ability to automatically throttle requests from ip addresses that have + # requested a lot of tiles. + # The mechanism uses a token bucket approach to shape traffic. I.e. there is an initial pool of n tiles + # per ip that can be requested arbitrarily fast. After that this pool gets filled up at a constant rate + # The algorithm has two metrics. One based on overall tiles served to an ip address and a second one based on + # the number of requests to renderd / tirex to render a new tile. + + # Overall enable or disable tile throttling + ModTileEnableTileThrottling Off + + # Specify if you want to use the connecting IP for throtteling, or use the X-Forwarded-For header to determin the + # 1 - use the client IP address, i.e. the first entry in the X-Forwarded-For list. This works through a cascade of proxies. + # However, as the X-Forwarded-For is written by the client this is open to manipulation and can be used to circumvent the throttling + # 2 - use the last specified IP in the X-Forwarded-For list. If you know all requests come through a reverse proxy + # that adds an X-Forwarded-For header, you can trust this IP to be the IP the reverse proxy saw for the request + ModTileEnableTileThrottlingXForward 0 + + # Parameters (poolsize in tiles and topup rate in tiles per second) for throttling tile serving. + ModTileThrottlingTiles 10000 1 + # Parameters (poolsize in tiles and topup rate in tiles per second) for throttling render requests. + ModTileThrottlingRenders 128 0.2 + + diff --git a/etc/apache2/renderd.conf b/etc/apache2/renderd.conf deleted file mode 100644 index c26d070..0000000 --- a/etc/apache2/renderd.conf +++ /dev/null @@ -1,137 +0,0 @@ - - - Options Indexes FollowSymLinks MultiViews - AllowOverride None - Require all granted - - ModTileTileDir /var/cache/renderd/tiles - - # You can manually configure each tile set with AddTileConfig or AddTileMimeConfig. - # The first argument is the URL path relative to this virtual host - # under which a tile set is served. The second argument specifies the - # name of the tile set. This is used in the communication with renderd - # and is the directory under which (meta)tiles are stored on disk. - # - # By default (AddTileConfig) mod_tile assumes you are serving png files, however, - # mod_tile can also serve arbitrary other tile types such as javascript vector tiles, - # assuming the backend render daemon can handle the file type. - # To this purpose AddTileMimeConfig takes a 3rd agument, the file extension and it - # will guess the correct mimetype from it. If the mime type is not set correctly automatically, - # you need to use the configuration file route, where you can specify the mimetype and file extension - # independently. - # - #AddTileConfig /folder/ TileSetName - #AddTileMimeConfig /folder2/ TileSetName2 js - - # Alternatively (or in addition) you can load all the tile sets defined in the configuration file into this virtual host - LoadTileConfigFile /etc/renderd.conf - - # Specify if mod_tile should keep tile delivery stats, which can be accessed from the URL /mod_tile - # The default is On. As keeping stats needs to take a lock, this might have some performance impact, - # but for nearly all intents and purposes this should be negligable and so it is safe to keep this turned on. - ModTileEnableStats On - - # Turns on bulk mode. In bulk mode, mod_tile does not request any dirty tiles to be rerendered. Missing tiles - # are always requested in the lowest priority. The default is Off. - ModTileBulkMode Off - - # Timeout before giving up for a tile to be rendered - ModTileRequestTimeout 3 - - # Timeout before giving up for a tile to be rendered that is otherwise missing - ModTileMissingRequestTimeout 10 - - # If tile is out of date, don't re-render it if past this load threshold (users gets old tile) - ModTileMaxLoadOld 2 - - # If tile is missing, don't render it if past this load threshold (user gets 404 error) - ModTileMaxLoadMissing 5 - - # Socket where we connect to the rendering daemon - ModTileRenderdSocketName /run/renderd/renderd.sock - - # Options controlling the cache proxy expiry headers. All values are in seconds. - # - # Caching is both important to reduce the load and bandwidth of the server, as - # well as reduce the load time for the user. The site loads fastest if tiles can be - # taken from the users browser cache and no round trip through the internet is needed. - # With minutely or hourly updates, however there is a trade-off between cacheability - # and freshness. As one can't predict the future, these are only heuristics, that - # need tuning. - # If there is a known update schedule such as only using weekly planet dumps to update the db, - # this can also be taken into account through the constant PLANET_INTERVAL in render_config.h - # but requires a recompile of mod_tile - - # The values in this sample configuration are not the same as the defaults - # that apply if the config settings are left out. The defaults are more conservative - # and disable most of the heuristics. - - # Caching is always a trade-off between being up to date and reducing server load or - # client side latency and bandwidth requirements. Under some conditions, like poor - # network conditions it might be more important to have good caching rather than the latest tiles. - # Therefor the following config options allow to set a special hostheader for which the caching - # behaviour is different to the normal heuristics - # - # The CacheExtended parameters overwrite all other caching parameters (including CacheDurationMax) - # for tiles being requested via the hostname CacheExtendedHostname - # - #ModTileCacheExtendedHostname cache.tile.openstreetmap.org - #ModTileCacheExtendedDuration 2592000 - - # Upper bound on the length a tile will be set cacheable, which takes - # precedence over other settings of cacheing - ModTileCacheDurationMax 604800 - - # Sets the time tiles can be cached for that are known to by outdated and have been - # sent to renderd to be rerendered. This should be set to a value corresponding - # roughly to how long it will take renderd to get through its queue. There is an additional - # fuzz factor on top of this to not have all tiles expire at the same time - ModTileCacheDurationDirty 900 - - # Specify the minimum time mod_tile will set the cache expiry to for fresh tiles. There - # is an additional fuzz factor of between 0 and 3 hours on top of this. - ModTileCacheDurationMinimum 10800 - - # Lower zoom levels are less likely to change noticeable, so these could be cached for longer - # without users noticing much. - # The heuristic offers three levels of zoom, Low, Medium and High, for which different minimum - # cacheing times can be specified. - - #Specify the zoom level below which Medium starts and the time in seconds for which they can be cached - ModTileCacheDurationMediumZoom 13 86400 - - #Specify the zoom level below which Low starts and the time in seconds for which they can be cached - ModTileCacheDurationLowZoom 9 518400 - - # A further heuristic to determine cacheing times is when was the last time a tile has changed. - # If it hasn't changed for a while, it is less likely to change in the immediate future, so the - # tiles can be cached for longer. - # For example, if the factor is 0.20 and the tile hasn't changed in the last 5 days, it can be cached - # for up to one day without having to re-validate. - ModTileCacheLastModifiedFactor 0.20 - - # Tile Throttling - # Tile scrapers can often download large numbers of tiles and overly strain tileserver resources - # mod_tile therefore offers the ability to automatically throttle requests from ip addresses that have - # requested a lot of tiles. - # The mechanism uses a token bucket approach to shape traffic. I.e. there is an initial pool of n tiles - # per ip that can be requested arbitrarily fast. After that this pool gets filled up at a constant rate - # The algorithm has two metrics. One based on overall tiles served to an ip address and a second one based on - # the number of requests to renderd / tirex to render a new tile. - - # Overall enable or disable tile throttling - ModTileEnableTileThrottling Off - - # Specify if you want to use the connecting IP for throtteling, or use the X-Forwarded-For header to determin the - # 1 - use the client IP address, i.e. the first entry in the X-Forwarded-For list. This works through a cascade of proxies. - # However, as the X-Forwarded-For is written by the client this is open to manipulation and can be used to circumvent the throttling - # 2 - use the last specified IP in the X-Forwarded-For list. If you know all requests come through a reverse proxy - # that adds an X-Forwarded-For header, you can trust this IP to be the IP the reverse proxy saw for the request - ModTileEnableTileThrottlingXForward 0 - - # Parameters (poolsize in tiles and topup rate in tiles per second) for throttling tile serving. - ModTileThrottlingTiles 10000 1 - # Parameters (poolsize in tiles and topup rate in tiles per second) for throttling render requests. - ModTileThrottlingRenders 128 0.2 - - diff --git a/etc/renderd/renderd.conf.examples b/etc/renderd/renderd.conf.examples index 5128732..651873b 100644 --- a/etc/renderd/renderd.conf.examples +++ b/etc/renderd/renderd.conf.examples @@ -30,7 +30,7 @@ font_dir_recurse=true ; EXAMPLES FOR LAYER CONFIGURATION OPTIONS [example-map] -URI=/renderd-example/tiles/ +URI=/tiles/renderd-example XML=/var/www/example-map/mapnik.xml ;[style1] diff --git a/utils/example-map/index.html b/utils/example-map/index.html index ee48d05..1a89bfb 100644 --- a/utils/example-map/index.html +++ b/utils/example-map/index.html @@ -14,7 +14,7 @@