Reload configuration on SIGHUP

This commit is contained in:
Tim Schaub 2017-04-26 08:55:02 -06:00
parent c03b0a12f8
commit e88b786073
2 changed files with 33 additions and 8 deletions

View file

@ -19,8 +19,10 @@
"test": "mocha test/**.js" "test": "mocha test/**.js"
}, },
"dependencies": { "dependencies": {
"async": "2.2.0", "@mapbox/mapbox-gl-native": "3.4.4",
"@mapbox/sphericalmercator": "1.0.5",
"advanced-pool": "0.3.2", "advanced-pool": "0.3.2",
"async": "2.2.0",
"base64url": "2.0.0", "base64url": "2.0.0",
"canvas": "1.6.5", "canvas": "1.6.5",
"clone": "2.1.1", "clone": "2.1.1",
@ -29,6 +31,7 @@
"express": "4.15.2", "express": "4.15.2",
"glyph-pbf-composite": "0.0.2", "glyph-pbf-composite": "0.0.2",
"handlebars": "4.0.6", "handlebars": "4.0.6",
"http-shutdown": "^1.2.0",
"mbtiles": "0.9.0", "mbtiles": "0.9.0",
"morgan": "1.8.1", "morgan": "1.8.1",
"node-pngquant-native": "1.0.4", "node-pngquant-native": "1.0.4",
@ -38,9 +41,7 @@
"request": "2.81.0", "request": "2.81.0",
"sharp": "0.17.2", "sharp": "0.17.2",
"tileserver-gl-styles": "1.1.1", "tileserver-gl-styles": "1.1.1",
"vector-tile": "1.3.0", "vector-tile": "1.3.0"
"@mapbox/mapbox-gl-native": "3.4.4",
"@mapbox/sphericalmercator": "1.0.5"
}, },
"devDependencies": { "devDependencies": {
"should": "^11.2.0", "should": "^11.2.0",

View file

@ -10,6 +10,7 @@ var fs = require('fs'),
var base64url = require('base64url'), var base64url = require('base64url'),
clone = require('clone'), clone = require('clone'),
cors = require('cors'), cors = require('cors'),
enableShutdown = require('http-shutdown'),
express = require('express'), express = require('express'),
handlebars = require('handlebars'), handlebars = require('handlebars'),
mercator = new (require('@mapbox/sphericalmercator'))(), mercator = new (require('@mapbox/sphericalmercator'))(),
@ -28,7 +29,7 @@ if (!isLight) {
serve_rendered = require('./serve_rendered'); serve_rendered = require('./serve_rendered');
} }
module.exports = function(opts) { function start(opts) {
console.log('Starting server'); console.log('Starting server');
var app = express().disable('x-powered-by'), var app = express().disable('x-powered-by'),
@ -359,12 +360,35 @@ module.exports = function(opts) {
this.address().address, this.address().port); this.address().address, this.address().port);
}); });
process.on('SIGINT', function() { // add server.shutdown() to gracefully stop serving
process.exit(); enableShutdown(server);
});
return { return {
app: app, app: app,
server: server server: server
}; };
}
module.exports = function(opts) {
var running = start(opts);
process.on('SIGINT', function() {
process.exit();
});
process.on('SIGHUP', function() {
console.log('Stopping server and reloading config');
running.server.shutdown(function() {
for (var key in require.cache) {
delete require.cache[key];
}
var restarted = start(opts);
running.server = restarted.server;
running.app = restarted.app;
});
});
return running;
}; };