Starting renderd with upstart.
The canonical instructions for setting up an OpenStreetMap tileserver suggest that you use init.d to start renderd on boot.
init.d is a bit gnarly and antiquated, however. upstart is much more pleasant; the config files are simpler and it's easier to chain one event off another. Which, as it happens, is what we want to do here; we want renderd to fire up once Postgres is running. Except that Postgres is started by an init.d script, not an upstart one. Gah.
So here's how to get it running:
Firstly, edit the Postgres startup script to emit init events on starting. You do this by adding
initctl emit lines to
/usr/share/postgresql-common/init.d-functions. For our purposes we only need to add
initctl emit postgresql-started
do_ctl_all start "$1" "Starting PostgreSQL $1 database server"
But if you want to add the whole suite, this posting shows how to do it.
Next, we create
/etc/init/renderd.conf as an upstart job:
# renderd description "renderd" start on postgresql-started stop on runlevel  respawn setuid osm setgid staff script renderd -f -c /usr/local/etc/renderd.conf 1>>/var/log/renderd.log 2>>/var/log/renderd.log end script
This will start renderd only after Postgres has started.
However, renderd needs to have a socket sitting within
/var/run/renderd. We could in theory create that in renderd.conf, but I prefer that to run as the osm user, and not to allow the latter to create directories. So we add a second upstart job as
# renderd socket description "Create renderd socket folder" start on starting renderd script mkdir /var/run/renderd chown osm /var/run/renderd end script
osm if your user is called something else.
Reboot, and renderd should be up and running using upstart.
Posted on Tuesday 27 August 2013. Link.