前言

最近因为受未知神秘力量影响,本博客的评论系统、说说系统、首页的Github贡献,均无法从大陆ip正常访问,最近抽空进行了一波修复,顺便记录一下,分享给有需要的人。

环境

  • Twikoo评论系统(基于Vercel部署)
  • Artitalk说说系统(基于国际版LeanCloud)
  • Github贡献插件(Github Calendar)

本文就以上环境下无法在大陆ip正常访问的情况进行修复,若不是以上环境,可能对你帮助不大。

其中Twikoo和Github Calendar均因为Vercel无法正常访问,而Artitalk则因为国际版LeanCloud不再向大陆ip提供服务。

Twikoo评论系统

因为博主本身有一个云服务器,Vercel失效后,转为使用自己的云服务器做私有部署。部署步骤主要参考文档Twikoo私有部署

文档钦定使用8080端口,但我尝试了一下似乎不行,没搞明白什么原因,自行更换了其他的端口后正常工作。

可能用到的命令

1
2
3
4
tkserver # 启动服务
nohup tkserver >> tkserver.log 2>&1 & # 后台启动服务
kill $(ps -ef | grep tkserver | grep -v 'grep' | awk '{print $2}') # 停止服务
netstat -apn # 查看端口占用情况

部署完成后,可以尝试在浏览器输入地址访问,服务端地址(包含 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
2
3
4
location /abc/ 
{
proxy_pass http://12.34.56.78:8080/;
}

假设你的域名是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说说系统

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。