2019-04-15 10:13:17 +00:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
const http = require('http');
|
2019-04-15 15:58:58 +00:00
|
|
|
const { assign, toLower } = require('lodash');
|
|
|
|
|
|
|
|
|
|
const config = require('./config');
|
|
|
|
|
const { express, logger, models } = require('./core');
|
|
|
|
|
|
|
|
|
|
const currentState = assign({
|
|
|
|
|
launchedAt: Date.now(),
|
|
|
|
|
appPath: process.cwd(),
|
|
|
|
|
host: process.env.HOST || process.env.HOSTNAME || 'localhost',
|
|
|
|
|
port: process.env.PORT || 1337,
|
|
|
|
|
environment: toLower(process.env.NODE_ENV) || 'development',
|
|
|
|
|
connections: {}
|
|
|
|
|
}, config);
|
|
|
|
|
|
|
|
|
|
function stop(server) {
|
|
|
|
|
// Destroy server and available connections.
|
|
|
|
|
if (server) {
|
|
|
|
|
server.close();
|
2019-04-15 10:13:17 +00:00
|
|
|
}
|
|
|
|
|
|
2019-04-15 15:58:58 +00:00
|
|
|
process.send('stop');
|
|
|
|
|
// Kill process.
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
2019-04-15 10:13:17 +00:00
|
|
|
|
2019-04-15 15:58:58 +00:00
|
|
|
const server = http.createServer(express);
|
|
|
|
|
server.on('connection', conn => {
|
|
|
|
|
const key = conn.remoteAddress + ':' + conn.remotePort;
|
|
|
|
|
currentState.connections[key] = conn;
|
|
|
|
|
|
|
|
|
|
conn.on('close', () => {
|
|
|
|
|
delete currentState.connections[key];
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
server.on('error', err => {
|
|
|
|
|
if (err.code === 'EADDRINUSE') {
|
|
|
|
|
logger.debug(`⛔️ Server wasn't able to start properly.`);
|
|
|
|
|
logger.error(`The port ${err.port} is already used by another application.`);
|
|
|
|
|
stop(server);
|
|
|
|
|
return;
|
2019-04-15 10:13:17 +00:00
|
|
|
}
|
|
|
|
|
|
2019-04-15 15:58:58 +00:00
|
|
|
console.error(err);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
models.sequelize.sync().then(() => {
|
|
|
|
|
// Launch server.
|
|
|
|
|
server.listen(currentState.port, (err) => {
|
|
|
|
|
if (err) {
|
|
|
|
|
logger.debug(`⚠️ Server wasn't able to start properly.`);
|
|
|
|
|
logger.error(err);
|
|
|
|
|
return stop(server);
|
2019-04-15 10:13:17 +00:00
|
|
|
}
|
|
|
|
|
|
2019-04-15 15:58:58 +00:00
|
|
|
logger.info('Time: ' + new Date());
|
|
|
|
|
logger.info('Launched in: ' + (Date.now() - currentState.launchedAt) + ' ms');
|
|
|
|
|
logger.info('Environment: ' + currentState.environment);
|
|
|
|
|
logger.info('Process PID: ' + process.pid);
|
|
|
|
|
//logger.info(`Version: ${this.config.info.strapi} (node v${this.config.info.node})`);
|
|
|
|
|
logger.info('To shut down your server, press <CTRL> + C at any time');
|
|
|
|
|
logger.info(`⚡️ Server: http://${currentState.host}:${currentState.port}`);
|
2019-06-21 08:40:28 +00:00
|
|
|
|
2019-04-15 15:58:58 +00:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
} catch (err) {
|
|
|
|
|
logger.debug(`⛔️ Server wasn't able to start properly.`);
|
|
|
|
|
logger.error(err);
|
|
|
|
|
console.error(err);
|
|
|
|
|
stop(server);
|
2019-04-15 10:13:17 +00:00
|
|
|
}
|