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;
}