pm2 管理nodejs集群,同时使用redis共享session

pm2 管理nodejs集群,同时使用redis共享session

月光魔力鸭

2019-09-16 11:19 阅读 1700 喜欢 0 redis express pm2 集群

通过pm2来实现nodejs应用的集群,不过我之前没做session共享,导致.. 登录不上啊 啊啊啊,无奈,又重新对redis进行了集成。

以下记录下自己集成redis 以及实现pm2 的集群管理的过程。

自己项目的整体结构是这样组成的: nodejs + express + mysql + pm2 (乱写的)

背景

最开始的时候是使用的express-session ,然后就没了。

app.use(session({
    resave: false, //添加 resave 选项
    saveUninitialized: true, //添加 saveUninitialized 选项
    secret: '***', // 建议使用 128 个字符的随机字符串
    cookie: { maxAge: 24 * 60 * 60 * 1000,secure : true }
}));

不过因为现在项目启动要检查文件,导致变慢,更新的时候会有那么十几秒失联.. 很郁闷,准备上pm2cluster ,却发现session丢失,登录不上系统了。

redis 改造

redis 安装

安装redis 直接到官网下载即可。https://redis.io/download 我是直接按照官网的步骤来的,也没有做其他的配置啥的,可以参考:https://www.cnblogs.com/xyinjie/p/9444280.html

安装步骤,点击查看

项目改造
npm install redis connect-redis --save 
var session = require('express-session');
var redis = require('redis');
var redisClient = redis.createClient();
var RedisStore = require('connect-redis')(session);

app.use(session({
    resave: false, //添加 resave 选项
    saveUninitialized: true, //添加 saveUninitialized 选项
    secret: '0b8d3104f46ce1ce884d3c494fac1b64', // 建议使用 128 个字符的随机字符串
    // cookie: { maxAge: 24 * 60 * 60 * 1000,secure : true },
    store : new RedisStore({client : redisClient}) // redis 存储session
}));

我中间出了一个问题,session 每次都是最新的,后来发现把cookie 注释掉,就好了.. 嘿

启动项目

pm2 start ./bin/www --name xxx -i max

启动后再更新就可以一个一个来更新了..(如果项目启动快其实直接全部更新也没啥问题我是小站没人看。)

转载请注明出处: https://chrunlee.cn/article/nodejs-pm2-redis-express.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
当我们做爬虫或其他的一些应用的时候,如果需要一些短信验证,但是又没有那么多手机号,又不能放人在那里一直输入的时候?怎么办?
开始入手webpack ,直接看的官方文档和demo,对于自动刷新这部分还是希望通过express 加载插件来控制,但是文档没有提供,经过参考github上其他高玩的套路,最终整理了一个基础的配置版本。
分享一个自动抓取静态站资源的小工具,可以在抓取某个静态站点的时候方便很多,尤其是如果页面比较多的话,会很难受,而且会自动将资源进行归类,如果一个页面一个页面的保存的话,那就比较费劲了。
最近又回归了下DNF ,玩了一段时间,感觉也挺没意思的,关键是平时更没意思,想着不行搞个自动刷图吧(先说结论,没成)
通过imap 来接收邮箱新邮件,类似客户端系列,不过比较简单的,目前只有新邮件,后续也可以通过这个来做一个自己的邮件客户端。
尝试下使用nodejs下开源图像识别库来识别图像状态。
今天想在服务器上跑下自己自动签到的程序,需要安装puppeteer ,结果出错。 permission denied, mkdir '/root/.nvm/versions/node/v9.11.1/lib/node_modules/
前段时间做了个微信小程序反编译的小东西,不过因为功能不全,没加分包处理,正好处理下加上,又考虑到后续可能的更新情况,准备上手增加下更新功能。