openstreetmap/mod_tile

Can not find renderd.init after compilation

bingo-soft opened this issue · 1 comments

I'm following this nice tutorial and try to install tile server. The problem I'm facing is that I can not find renderd.init after compilation. If I list what is in mod_tile folder after compilation, I see this:

AUTHORS         autogen.sh      configure      libtool         render_speedtest
CMakeLists.txt  autom4te.cache  configure.ac   ltmain.sh       renderd
COPYING         cmake           depcomp        m4              screenshot.jpg
Makefile        compile         docs           missing         src
Makefile.am     config.guess    etc            modules.mk      tests
Makefile.in     config.log      gen_tile_test  render_expired  utils
README.rst      config.status   includes       render_list
aclocal.m4      config.sub      install-sh     render_old

So, there is no debian/renderd.init in there. What may be wrong with that?

Another issues is with the way how renderd is started. In my case, I have a micro-service and multiple business projects, for each project I need to create its own tiles with its own styles. So, I can not simply renderd -f once and leave it. I need to start and stop renderd multiple times. In fact I try to do it in the context of WEB request, inside that request I'm using some library that is responsible for spawning processes. But because of this foreground nature of renderd I can not do that, at least it does not work that way. I debugged it and see that my child process goes up to this stage:

** INFO: 16:14:58.927: Rendering daemon started (version 0.6.1)
** INFO: 16:14:58.932: Initialising request queue
** INFO: 16:14:58.932: Parsing config file: /etc/renderd.conf
** INFO: 16:14:58.935: config renderd: unix socketname=/var/run/renderd/renderd.sock
** INFO: 16:14:58.935: config renderd: num_threads=4
** INFO: 16:14:58.935: config renderd: num_slaves=0
** INFO: 16:14:58.935: config renderd: tile_dir=/var/cache/renderd/tiles
** INFO: 16:14:58.935: config renderd: stats_file=/var/run/renderd/renderd.stats
** INFO: 16:14:58.935: config renderd: pid_file=/var/run/renderd/renderd.pid
** INFO: 16:14:58.935: config mapnik:  plugins_dir=/usr/lib/mapnik/3.1/input
** INFO: 16:14:58.935: config mapnik:  font_dir=/usr/share/fonts
** INFO: 16:14:58.935: config mapnik:  font_dir_recurse=0
** INFO: 16:14:58.935: config renderd(0): Active
** INFO: 16:14:58.935: config renderd(0): unix socketname=/var/run/renderd/renderd.sock
** INFO: 16:14:58.935: config renderd(0): num_threads=4
** INFO: 16:14:58.935: config renderd(0): tile_dir=/var/cache/renderd/tiles
** INFO: 16:14:58.935: config renderd(0): stats_file=/var/run/renderd/renderd.stats
** INFO: 16:14:58.935: config renderd(0): pid_file=/var/run/renderd/renderd.pid
** INFO: 16:14:58.935: Initialising unix server socket on /var/run/renderd/renderd.sock

But as a result I do not see renderd.sock inside /var/run/renderd/ folder. If however, I run renderd -f from terminal (not from my micro-service), I see two extra lines:

** INFO: 16:14:58.935: Renderd is using mapnik version 3.1.0
** INFO: 16:14:59.896: Running in foreground mode...

And renderd.sock file is in place and all commands like render_list are working. So, what is so special about running renderd -f from a child process in the context of WEB request? And can I fix it some way and run renderd in detached background mode? If yes, how can I configure renderd for this case?

Hello @bingo-soft , were you able to figure this out? You are right that using renderd -f puts the process in the foreground, simply omit -f in order to run the process in detached background mode. For your use-case, I would suggest using several map sections in the /etc/renderd.conf file rather than several renderd processes, each with its own XML style definition (see here for an example [likely disregarding all but the first few lines]).