在线聊天工具tidio在hexo静态页面中用不了

1.问题描述:在使用hexo框架添加在线聊天平台tidio的时候发现点了发送请求一直转圈

2.问题分析:是按照其他教程中配置的,看了好几个反复确认过了,后来考虑可能有两个原因导致

(1)网络问题(访问国外网站也没行,排除)
(2)静态网页和动态网页问题(实际的原因)

3.解决

1.分析:之前blog是通过hexo clean && hexo g -d命令打包出来的静态页面,现在需要用hexo server命令运行在服务器上,并且单独的hexo还需要一直后台运行所以用nodejs挂载工具pm2,项目启动在3000端口,最后还需要再配置一下nginx,使443和80端口转到3000端口,当然,别忘了开防火墙。

2.pm2相关

(1)安装pm2
代码语言:javascript
复制
npm install -g pm2
(2)在项目根目录新建执行脚本hexo_run.js
代码语言:javascript
复制
const{ exec } = require('child_process')
exec('hexo server -p 3000',(error,stdout,stderr) => {
  if(error){
   console.log(`exec error: ${error}`)
   return
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
})
(3)使用pm2 start hexo_run.js命令启动

这时候报错了,一直说3000端口被占用,哪怕是手动停止了3000端口的占用也不行,发现是启动了多个线程,这就关系到pm2的启动方式有两种

1.fork模式 ,这种方式会启动多个线程,导致3000端口一直被占用,后面全都启动失败,然后还一直尝试

2.cluster模式,这种方式可以配置启动一个线程,就能暂时解决端口被占用的问题

(4)配置cluster模式,新建config.json文件
代码语言:javascript
复制
{
      "apps":[{
        "name":"test",  //名称
        "script":"hexo_run.js", //程序入口
        "cwd":"./",           //根目录
        "instances":1,
        "error_file":"./logs/error.log",//错误输出日志
        "out_file":"./logs/out.log",  //日志
        "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
        }]
    }
(5)使用 pm2 start config.json 命令,通过cluster模式启动pm2服务

3.配置nginx配置文件/etc/nginx/nginx.conf

代码语言:javascript
复制
server{
 listen 80;
 listen 443 ssl;
 server_name xiutuuu.cloud;
 ssl_certificate xxxxxx.crt;
 ssl_certificate_key xxxxxx.key;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 ssl_prefer_server_ciphers on;
 location / {

proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;

#root /var/www/hexo;
#index index.html index.htm;
}

这样就能正确使用tidio在线聊天功能了