返回介绍

上线部署

发布于 2020-11-08 04:46:34 字数 2204 浏览 923 评论 0 收藏 0

当我们的应用开发完毕,就需要考虑上线部署事宜,除了线上 Node.js 运行时的环境准备外,还有一些 YOG2 的参数需要调整。

环境变量

  • YOG_DEBUG

    必须设置为 false 或者不设置,这点非常重要,否则会在线上开启开发调试功能,从而引发非常严重的安全隐患。

  • YOG_ENV

    可以设置为自定义的线上状态比如 prod 或者不设置,不可以设置为 dev 一类开发环境,避免加载了错误的测试环境配置。

系统配置

  • /conf/plugins/log.js

    intLevel 建议设置为4,只输出必要的日志

  • /conf/plugins/http.js

    module.exports.static.options.maxAge 如果静态资源使用了 MD5 戳,可以将此值设置为 864000000 ,开启24小时的强缓存,优化前端性能。

Cluster模式

由于 YOG2 没有内置 cluster 模式,如果希望使用 cluster 模式运行应用,可以使用 PM2 来管理应用。

如果不希望引入 PM2 ,也可以考虑使用 cluster 模块对 app.js 进行改造。

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
var yog = require('yog2-kernel');

if (cluster.isMaster) {
    require('os').cpus().forEach(function () {
        cluster.fork();
    });
    cluster.on('exit', function (worker, code, signal) {
        console.log('worker ' + worker.process.pid + ' died');
    });
}
else {
    var app = yog.bootstrap({
        rootPath: __dirname
    }, function () {
        console.log('plugins load completed');
    });

    app.set('port', process.env.PORT || 8085);
    app.disable('x-powered-by');

    var server = yog.server = app.listen(app.get('port'), function () {
        console.log('Yog server listening on port ' + server.address().port);
    });

    server.on('connection', function (socket) {
        // disable nagle
        socket.setNoDelay(true);
    });

    // 仅在 Node.js 6.x开启这个功能 https://github.com/nodejs/node/issues/7126
    if (parseInt(process.versions.node.split('.')[0], 10) >= 6) {
        server.on('clientError', function (err, socket) {
            socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
        });
    }
}

进程守护

可以使用 PM2 作为守护进程,保证 Node.js 应用一旦 Crash ,会立刻重新启动应用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文