修复博客Twikoo评论系统、Artitalk说说系统、Github贡献插件无法正常访问问题
前言
最近因为受未知神秘力量影响,本博客的评论系统、说说系统、首页的Github贡献,均无法从大陆ip正常访问,最近抽空进行了一波修复,顺便记录一下,分享给有需要的人。
环境
- Twikoo评论系统(基于Vercel部署)
- Artitalk说说系统(基于国际版LeanCloud)
- Github贡献插件(Github Calendar)
本文就以上环境下无法在大陆ip正常访问的情况进行修复,若不是以上环境,可能对你帮助不大。
其中Twikoo和Github Calendar均因为Vercel无法正常访问,而Artitalk则因为国际版LeanCloud不再向大陆ip提供服务。
Twikoo评论系统
因为博主本身有一个云服务器,Vercel失效后,转为使用自己的云服务器做私有部署。部署步骤主要参考文档Twikoo私有部署。
文档钦定使用8080端口,但我尝试了一下似乎不行,没搞明白什么原因,自行更换了其他的端口后正常工作。
可能用到的命令
1 | tkserver # 启动服务 |
部署完成后,可以尝试在浏览器输入地址访问,服务端地址(包含 http://
和端口号,例如 http://12.34.56.78:8080
),若显示以下文本,则部署成功
{“code”:100,“message”:“Twikoo 云函数运行正常,请参考 https://twikoo.js.org/quick-start.html#前端部署 完成前端的配置”,“version”:“1.6.7”}
注意Linux服务器需要使用nohup tkserver >> tkserver.log 2>&1 &
这个指令来后台启动,否则关闭终端窗口后,服务便停止,另外要注意!!使用这个指令启动服务后,需要使用exit命令来退出终端,否则服务也同样会被停止!!!
部署完成后把上面的地址(例:http://12.34.56.78:8080
)填入主题_config文件下的twikoo的envId字段即可。
修改配置后本地hexo s启动测试没问题,但是正式部署到博客上却访问失败,检查了一下服务地址云函数是在正常运行的,按F12发现有报错This request has been blocked; the content must be served over HTTPS.
。这是因为我正式博客域名是有SSL证书的,可通过https访问,而这个云函数却是通过http访问的,这会被浏览器拦截了。
那么解决方法应该是想办法让这个云函数可以通过我的域名访问,而不是通过ip+端口访问,这样我们就可以通过https来访问这个云函数,我们需要一个方法把域名地址映射到这个ip+端口地址上,因为本人是个纯纯的web小白,在我折腾了半天未解决后,求助我可爱的大学同学得出以下解决方案。
找到nginx配置文件,如果你跟我一样使用了宝塔,可以在网站设置中找到这里修改配置,我们在默认的server块中添加一个location块:
1 | location /abc/ |
假设你的域名是www.abc.com
,则现在可以通过https://www.abc.com/abc
来访问http://12.34.56.78:8080
了,然后把_config配置中的envId字段换成https://www.abc.com/abc
,正式博客即可正常访问新的评论系统。
注意以上步骤相当于部署了一个新的评论系统服务,我们需要把旧的评论数据迁移过来,而因为Twikoo只提供了导入功能,没提供导出功能,导出过程参考Twikoo 评论数据导出教程,通过文中给的官方链接下载MongoDB的工具,使用其中mongoexport.exe来导出。
链接文中提到的命令如下,并把复制的地址后面的参数(包括?
和?
后面部分)
1 | mongoexport --uri 这里换成刚才复制的地址 --collection comment --type json --out twikoo-comments.json |
我实测导出的时候会报错认证失败,最后通过以下命令成功导出
1 | mongoexport --uri 这里换成刚才复制的地址?authsource=admin --collection comment --type json --out twikoo-comments.json |
最后在博客的评论区打开管理面板,导入刚才导出的json文件即可。
不要忘记把新部署的评论系统的后台配置(消息邮件提醒等)重新设置好。
Artitalk说说系统
官方文档是强烈推荐使用国际版LeanCloud的,现在因为国际版不再为大陆ip提供服务了,我们可以换回中国版LeanCloud重复一次文档步骤搭建说说环境即可,步骤几乎一致。
需要注意配置完appId和appKey后,要把REST API服务器地址也配置到serverURL字段中,完成后即可正常使用说说系统。
同样不要忘记迁移原本的说说数据到新环境哦,这里迁移比较简单直接,本文不赘述了。
Github贡献插件
因为vercel无法正常访问,而这个github插件的api是挂在vercel下的,自然就无法正常使用了。这个修复比较简单,参考官方给出的文档python_github_calendar_api。
我们只需要把_config配置(注意这个是hexo的_config,不是主题的)中githubcalendar的api换成新的https://gitcalendar.zfe.space/api
公共域名即可,也可以根据文中部署自用的api。
结语
换回国内服务后,这几个系统访问速度也快了很多,enjoy it。