wikijs-fork/server/index.js

75 lines
1.8 KiB
JavaScript
Raw Normal View History

2017-02-08 20:52:37 -05:00
'use strict'
2016-08-16 20:56:55 -04:00
// ===========================================
// Wiki.js
2016-08-16 20:56:55 -04:00
// Licensed under AGPLv3
// ===========================================
const path = require('path')
2017-07-29 17:33:08 -04:00
const cluster = require('cluster')
let wiki = {
IS_DEBUG: process.env.NODE_ENV === 'development',
2017-07-29 17:33:08 -04:00
IS_MASTER: cluster.isMaster,
ROOTPATH: process.cwd(),
2017-07-29 17:33:08 -04:00
SERVERPATH: path.join(process.cwd(), 'server'),
configSvc: require('./modules/config')
}
global.wiki = wiki
2017-02-08 20:52:37 -05:00
process.env.VIPS_WARNING = false
// if (wiki.IS_DEBUG) {
2017-05-18 20:23:24 -04:00
// require('@glimpse/glimpse').init()
// }
2017-07-29 17:33:08 -04:00
wiki.configSvc.init()
// ----------------------------------------
// Init Logger
// ----------------------------------------
wiki.logger = require('./modules/logger').init()
2017-03-28 20:19:01 -04:00
2016-08-16 20:56:55 -04:00
// ----------------------------------------
2017-07-29 17:33:08 -04:00
// Init DB
2016-08-16 20:56:55 -04:00
// ----------------------------------------
2017-07-29 17:33:08 -04:00
wiki.db = require('./modules/db').init()
2016-08-16 20:56:55 -04:00
// ----------------------------------------
2017-07-29 00:11:22 -04:00
// Start Cluster
// ----------------------------------------
2017-07-29 00:11:22 -04:00
const numCPUs = require('os').cpus().length
2017-07-29 17:33:08 -04:00
let numWorkers = (wiki.config.workers > 0) ? wiki.config.workers : numCPUs
if (numWorkers > numCPUs) {
numWorkers = numCPUs
}
2017-07-29 00:11:22 -04:00
if (cluster.isMaster) {
2017-08-06 21:05:10 -04:00
wiki.logger.info('=======================================')
wiki.logger.info('= Wiki.js =============================')
wiki.logger.info('=======================================')
2016-08-16 23:56:08 -04:00
2017-08-02 23:47:11 -04:00
require('./master').then(() => {
// -> Create background workers
for (let i = 0; i < numWorkers; i++) {
cluster.fork()
}
2017-08-02 23:47:11 -04:00
// -> Queue post-init tasks
wiki.queue.uplClearTemp.add({}, {
repeat: { cron: '*/15 * * * *' }
})
})
2017-07-29 00:11:22 -04:00
cluster.on('exit', (worker, code, signal) => {
2017-08-02 23:47:11 -04:00
wiki.logger.info(`Background Worker #${worker.id} was terminated.`)
2017-05-18 20:23:24 -04:00
})
2017-07-29 00:11:22 -04:00
} else {
2017-08-02 23:47:11 -04:00
wiki.logger.info(`Background Worker #${cluster.worker.id} is initializing...`)
2017-07-29 17:33:08 -04:00
require('./worker')
2017-07-29 00:11:22 -04:00
}