Appearance
node项目部署
Cookie的跨域问题
Cookie是不能跨域使用的,所以在前后端分离开发的时候,我们当前的代码就会出现问题
跨域(同源协议):
什么是跨域?
协议/一级域名/二级域名/端口号 有一个不同就是跨域
如何解决跨域问题
- 正向代理
代理服务器是为用户服务,我们称之为正向代理
例如:访问谷歌
如果访问不了谷歌,但是我们可以访问一台海外的服务器,这台海外的服务器又可以访问谷歌 ,那么用户就可以先访问海外的服务器,在通过海外的服务器访问谷歌,这就是正向代理
- 用途:
- 访问原来无法访问的资源,如google
- 对客户端访问授权,上网认证
- 反向代理
反向代理服务器是为服务器服务,我们称之为反向代理
- 用途:
- 负载均衡,通过反向代理服务器来优化网站负载
- 前后端分离,统一请求地址
PM2配置线上环境
安装
shell
npm i -g pm2
使用
shell
# 查看当前项目的版本
pm2 --version
# 启动项目
pm2 start app.js
常用指令
shell
# 启动程序
pm2 start app.js|config
# 列出启动的所有应用程序
pm2 list
# 重启应用程序
pm2 restart appName|appId
# 查看应用程序的详细信息
pm2 info appName|appId
# 显示指定应用程序的日志
pm2 log appName|appId # 如果是通过pm2来启动Node项目,那么会自动将console.log的内容记录到自定义日志
# 监控应用程序
pm2 monit appName|appId
# 停止应用程序
pm2 stop appName|appId
# 删除关闭应用程序
pm2 delete appName|appId
进程守护
问题
- 服务器的稳定性,不会因为程序的某个错误或异常导致项目停止
- 线上日志记录,除了记录访问日志以外,我们还需要记录错误日志和自定义日志
- 充分利用服务器资源,Node是单线程的,服务器是多喝的,一台服务器只能运行一个Node程序太浪费资源
解决
通过Pm2
- PM2的进程守护可以在程序崩溃后自动重启
- PM2自带日志记录功能,可以很方便的记录错误日志和自定义日志
- PM2能够启动多个Node进程,充分利用服务器资源
配置
自定义配置pm2配置文件
json
{
"apps":{
"name":"appName",
"script":"app.js",
// 是否需要监听报错重启
"watch":true,
// 那些文件不需要监听
"ignore_watch":[
"node_modules",
"logs"
],
// 配置错误日志的目录和文件
"error_file":"logs/error.log",
// 配置自定义日志的目录和文件
"out_file":"logs/custom.log",
// 配置日志显示输出年月日时分秒
"log_date_format":"YYYY-MM-DD HH:mm:ss"
}
}
- 启动项目
shell
# 通过配置文件来启动项目
pm2 start pm2.config.json
负载均衡
在配置文件中开启多进程
json
{
"apps":{
"name":"appName",
"script":"app.js",
// 是否需要监听报错重启
"watch":true,
// 那些文件不需要监听
"ignore_watch":[
"node_modules",
"logs"
],
// 配置错误日志的目录和文件
"error_file":"logs/error.log",
// 配置自定义日志的目录和文件
"out_file":"logs/custom.log",
// 配置日志显示输出年月日时分秒
"log_date_format":"YYYY-MM-DD HH:mm:ss",
// 配置多进程
"instances":4
}
}
注意:
服务器几核就配置几个进程,不要超过服务器的内核数量