部署杂谈(nodejs+负载均衡+redis共享session)
处理koa中快进的问题
部署
- NodeJs是基于V8解析引擎并执行的,所以不同于其他后端语言,需要先编译后才能在服务器运行
- node是解释型的语言,本身就能直接运行
- NodeJs自身又包含服务器,所以当启动了NodeJs的程序,就会在使用当前机器的公网IP并监听端口运行服务器
- 包含服务器的node,自己就可以跑
- 无需单独编译和服务器的支持
PM2
-
管理node项目,让其永不关闭的一个容器
-
forever(没有pm2好用)
-
保障服务器不会挂掉
-
npm i -g pm2
pm2 start ./xxx.js --name projectname
-
其他命令
-
pm2 examples // 查看常用示例 pm2 [start||restart||stop||delete] all||name||id // 重启 pm2 show name||id // 查看信息 pm2 list // 查看项目 pm2 flush // 清空日志 pm2 log name||id // 查看日志
-
nginx负载均衡
-
配置1:
-
upstream localhost { ip_hash; # nginx内置的处理 server localhost:8000 weight=1; server localhost:8001 weight=1; } #server {....... location / { proxy_pass http://localhost; }
-
查看环境变量
- linux: /etc/profile文件中 export 环境变量=值
- 执行坏境变量更新命令
source /etc/profile
- windows我的电脑-> 右键属性 -> 高级系统设置 -> 环境变量
- 或者命令行 set回车
有时IP不是固定的
- ip_hash 是解决通过IP地址来分配不同服务器的,对不同服务器以绑定的方式分解压力。
- 同时又能实现登录后,还访问其他服务器导致登录状态不一的解决方案
- 但是其并不是真正的session共享,真正的共享还是在数据库存储
redis
-
redis数据库以键值对的方式存储数据,并将数据在__内存__中以快照的方式存储,一定时间内批量写入到文件,因此__速度__及性能非常好
-
进入到目录,启动服务器 redis-server
-
安装windows服务
./redis-server –service-install ./redis.windows.conf
-
运行客户端
redis-cli
-
相关命令
- 获取帮助
help <command>
- 查询所有的key
keys *
- 添加或更新一个数据
SET key value [EX seconds] [PX milliseconds] [NX|XX]
set test 1 EX 10 NX
- 表示插入test:1数据 保存10秒
- NX 不存在数据才插入
- XX 存在数据才插入
- 表示插入test:1数据 保存10秒
- 获取value
get key
- 删除key
del key
- 插入数组
- sadd key [...values]
- 查看数组数据
- smembers key
- 获取帮助