部署说明

准备外部环境

安装 JDKNode.jsMongoDB

修改配置文件

按照实际情况更改配置文件 configs.js

var ms    = require( 'ms' ),
    bytes = require( 'bytes' );

module.exports = {
    product: {
        name: '灵动图表',
        slogan: '企业部署版',
        company: '湃势科技'
    },
    server: {
        host: '0.0.0.0',
        port: 3000,
        cookies:   { maxAge: ms( '30day' ), secret: 'ETJXO-FEWXH-NKOPQ-VERCO' },
        restraint: { maxAge: ms( '10min' ), limit: 50 },
        vcode:     { maxAge: ms( '20min' )}
    },
    database: {
        uri: 'mongodb://localhost/lynctone',
        autoIndex: true
    },
    storage: {
        uri: 'mongodb://localhost/storage',
        uploadChunkSize: bytes( '1020 KB' ),
        accountLimit: {
            standard:  { single: bytes( '2 MB' ),  total: bytes( '10 MB' )},
            admin:     { single: bytes( '20 MB' ), total: bytes( '100 MB' )}
        },
        buckets: {
            images: { attachment: false, cache: true,  accept: '.svg, .png, .gif, .jpg, .jpeg' },
            files:  { attachment: true,  cache: false, accept: '.xls, .xlsx, .csv, .tsv, .scsv, .vbsv, .json' }
        }
    },
    passport: {
        phone: true,
        email: true,
        github: {
            clientID: clientID,
            clientSecret: clientSecret,
            callbackURL: 'https://domain.com/auth/github/callback'
        },
        qq: {
            clientID: clientID,
            clientSecret: clientSecret,
            callbackURL: 'https://domain.com/auth/qq/callback'
        }
    },
    email: {
        uri: 'smtps://username@domain.com:password@smtp.mailserver.com'
    },
    message: {
        qcloud: {
            appID: appID,
            appSecret: appSecret
        },
        template: {
            vcode: data => `【灵动图表】${ data.value } 为您的验证码`
        }
    },
    websocket: {
        pub: 'redis://localhost:6379',
        sub: 'redis://localhost:6379'
    },
    engine: {
        jubo: {
            uri: 'http://localhost:9000/jubo',
            idle: ms( '10min' )
        }
    }
};

其中 configs.passportconfigs.emailconfigs.messageconfigs.websocket 为可选项。

当不配置 configs.emailconfigs.message,服务器将不允许新用户注册,此时需要运行用户管理脚本手动添加用户。

请更改默认的 configs.server.cookies.secret,不要对外泄露,否则验证可能会被黑客伪造。

数据库结构稳定后,第二次启动时可以把 configs.database.autoIndex 设为 false,以节约无谓开销。

启动服务器

建议使用 pm2 启动服务器,让服务器处于伺服状态,安装方法如下:

npm install pm2 -g

启动命令如下(需要切换到项目目录):

pm2 start server-build.js

单机多核化可添加 -i max 参数,此时需引入 redis,并配置在 configs.websocket 中。

pm2 start server-build.js -i max

搭配 Nginx 使用

请注意信息安全,建议开启 https

请设置 X-Forwarded-For,并确保 client_max_body_size( 默认 1024 KB )大于 configs.storage.uploadChunkSize( 建议 1020 KB )。

多机横向扩展采用简单轮询即可,此时需引入 redis,并配置在 configs.websocket

用户管理脚本

脚本运行完毕后,重新登录即可生效。

node user-tools -add name@domain.com password       
node user-tools -reset name@domain.com newPassword
node user-tools -admin userID

results matching ""

    No results matching ""