Twikoo私有化部署教程--迁移腾讯云
作者:小牛呼噜噜 | https://xiaoniuhululu.com
计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」
给我的小破站,换了许多独立的评论系统,twikoo还是用的最舒服的。
可是该评论系统 一直用的是腾讯的云开发CloudBase免费版的,2022-08-08 腾讯收费模式正式,变成了收费,再也白嫖不了,看了下价格 每月39.9每月19.9,提价太高,有点吃不消,后面可能还会继续提价,像微信读书一样。
正好twikoo作者也放出了私有化部署的版本,那就连夜进行迁移, 结果坑不少呢,笔者花了3天才搞好,故简单记录一下
备份数据
决定迁移前,得先把腾讯云开发CloudBase的聊天数据备份下来
- 登录 腾讯云;
- 打开云开发 CloudBase;
- 选择要导出的环境;
- 点击左侧的数据库,点击 comment 集合,点击导出按钮;
- 导出格式选择 JSON(推荐,如果想用 Excel 等软件查看,可以选择 CSV),字段不填;
私有化部署
创建容器
由于之前的博客已迁移到腾讯云服务器上,顺便把评论系统也迁过来
可以参考: 博客迁移腾讯云 https://mp.weixin.qq.com/s/O_-dAgKxk64hiClul0vDQw
由于已安装docker ,那我就选中twikoo docker版 安装
- 拉取镜像
docker pull imaegoo/twikoo
- 创建并启动容器
docker run -p 8099:8080 -v /root/twikoo/data:/app/data -d imaegoo/twikoo
别忘了,把服务器的防火墙
8099
端口放开测试容器是否正常工作
我博客使用Hexo+Next
来生成的,直接修改主题配置文件
twikoo:
enable: true
visitor: true
envId: xxxxxxxxxxxxxxx #将 envId 从之前的腾讯云开发 ID 换成 http://ip地址:port
然后hexo clean;hexo g;hexo s
启动本地hexo测试环境,就可以连上了
导入数据
第一次打开twikoo面板,需要设置密码
然后选择导入按钮
将刚刚从腾讯云开发上下载的文件导入进去即可
重新配置twikoo面板设置
导入的数据只是评论内容,需要照着线上腾讯云开发的管理面板,把设置重新配一下
其中比较烦的就是邮件通知,需要从邮箱商重新获取SMTP_PASS
引入前端CDN
<script src="https://cdn.staticfile.org/twikoo/1.6.4/twikoo.all.min.js"></script>
这样基本上twikoo评论系统就迁移过来了,下面讲讲最重要的nginx https反代http
Nginx https反代http
由于twikoo本身不支持https, 而如今http 传输数据还是不够安全的,需要我们通过nginx来实现 https反向代理http
由于我博客本身,已经用了ssl正式了,我需要再加一个端口8099
- 方案一:通过一个域名、一个ssl证书、来用https再代理一个端口
这个方案 目前网上没有特别好的方法,笔者查遍了中文、英文相关的博客,没有特别好的办法,最后想出了个折中的办法
nginx.conf:
upstream twi { #需要配置upstream
server xxxx.com:8099; #你的域名+加端口
}
server {
listen 443 ssl;
server_name xxx.com;#你的域名
ssl_certificate /etc/nginx/ssl/com_bundle.crt;#证书
ssl_certificate_key /etc/nginx/ssl/com.key;#证书.key
# ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html/hexo;
index index.html index.htm;
}
location /twi/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass_header Set-Cookie;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
add_header Access-Control-Allow-Credentials true;
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 128;
#proxy_pass http://localhost:8099/;
proxy_pass http://twi; # 这边只能这样写,不然服务转发不过去
}
}
这样达到的效果是 访问https://xxx.com/twi
nginx 会将转发到http://xxx.com:8099
,访问一下,twikoo提示一切正常
但坑爹的是,把将 envId 从之前的腾讯云开发 ID 换成 https://xxx.com/twi
后,发现twikoo 不支持 这样的写法,这样其会无法获取 accessToken, 就是这个值强行塞进去,还是绕不开内部的校验,所以花了许多时间,但只能放弃
- 方案二 :通过多个域名、多个ssl证书、来用https再代理一个端口
突然小牛灵感一闪,可以申请子域名啊(这个去域名提供商再添一条解析规则即可,笔者这里是阿里云),这样也不用再额外花钱啦,又去阿里云又申请了一个免费ssl证书(腾讯只能免费申请一个ssl证书,阿里可以免费申请20个呢!!!)
nginx.conf: 添加下面配置
upstream twi {#需要配置upstream
server xxxx.com:8099; #你的域名+加端口
}
server {
listen 443 ssl;
server_name twikoo.xxx.com; #子域名
ssl_certificate /etc/nginx/ssl/twikoo.xxx.com/twikoo.xxx.com.pem;
ssl_certificate_key /etc/nginx/ssl/twikoo.xxx.com/twikoo.xxx.com.key;
# ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
#proxy_pass http://localhost:8099;
#proxy_pass http://twi; #这种方法,会导致twikoo邮件通知出现bug:getaddrinfo ENOTFOUND!!!
proxy_pass http://xxx.com:8099;#建议这种写法,和主域名保持一致
# add_header Access-Control-Allow-Origin "*" always; #这个不要加
# add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
# add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
}
}
发现这样是最快最稳的写法!
注意的是add_header Access-Control-Allow-Origin "*" always;
这个跨越设置不要加,好像nginx会默认将一个子域名对顶级域名放开跨域限制,加了的话,会提示only allow one
异常
这样就实现了:访问https://twikoo.xxx.com
nginx 会将转发到http://xxx.com:8099
把将 envId 从之前的腾讯云开发 ID 换成 https://twikoo.xxx.com
后,发现twikoo一切正常
终于把twikoo成功私有化部署了!完结撒花~~
参考资料:
https://www.imaegoo.com/2022/twikoo-data-export/
本篇文章到这里就结束啦,很感谢你能看到最后,如果觉得文章对你有帮助,别忘记关注我!更多精彩的文章
Twikoo私有化部署教程--迁移腾讯云的更多相关文章
- Django线上部署教程:腾讯云+Ubuntu+Django+Uwsgi(转载)
网站名称: 向东的笔记本 本文链接: https://www.eastnotes.com/post/29 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议.转载请注明出处! ...
- 【重学Node.js 第5篇】部署项目到腾讯云服务器
课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...
- Spire.Cloud 私有化部署教程(二)- Ubuntu 18.04 系统
本教程主要介绍如何在Ubuntu 18.04系统上实现Spire.Cloud私有化部署.CentOS 7系统部署请参考 这篇教程. 详细步骤如下: 一.环境配置 1.关闭防火墙 1)首先查看防火墙状态 ...
- Spire.Cloud 私有化部署教程(一) - CentOS 7 系统
Spire.Cloud支持的Linux服务器系统包括CentOS和Ubuntu(推荐使用CentOS 7和Ubuntu 18版本),本教程主要介绍如何在CentOS 7系统上实现Spire.Cloud ...
- Spire.Cloud 私有化部署教程(三) - Windows 系统
本教程主要介绍如何在 Windows 系统上实现 Spire.Cloud 私有化部署. 详细步骤如下: 一.安装依赖 我们的私有部署的依赖有 Nodejs.MySQL.Redis 和 RabbitMQ ...
- weiphp的相关部署教程以及新浪云Sae安装技巧
WeiPHP在Sae上的部署图文教程 进来微信开发挺火的,so 越来越多人开始做起微信开发了,如果从头开发的话挺费时间和精力的,况且市场上已经有一款比较成熟的产品,那就是WeiPHP 不过告诉大家个坏 ...
- 项目迁移腾讯云后,用户反馈,https证书不匹配。
腾讯云大禹高防大禹BGP同一IP绑定多个证书,用户反馈无法匹配我们域名对应证书.但是浏览器是支持的.定位为客户端不支持sni在运维检查lb及高防证书关联无误,定位发现是用户端httpclient没有设 ...
- 本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效)
本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效) 随着业务量的增加,本地的ES集群服务器性能和磁盘空间有点不够使用,项目组考虑使用腾讯云服务器,以下是我测试的使用_reindex ...
- 来腾讯云开发者实验室 学习.NET Core 2.0
腾讯云开发者实验室为开发者提供了一个零门槛的在线实验平台,开发者实验室提供的能力: 零门槛扫码即可免费领取实验机器,支持使用自有机器参与,实验完成后支持保留实验成果: 在线 WEB IDE 支持 sh ...
随机推荐
- NC14662 小咪买东西
NC14662 小咪买东西 题目 题目描述 小咪是一个土豪手办狂魔,这次他去了一家店,发现了好多好多( \(n\) 个)手办,但他是一个很怪的人,每次只想买 \(k\) 个手办,而且他要让他花的每一分 ...
- Oracle创建用户和表空间
一.概述 1.数据库实际管理中,不同业务系统需要使用'不同的用户'进行管理维护和使用,这样做把业务数据和系统数据独立分开管理,利于数据库系统管理: 2.在数据库中创建业务系统用户时候,建议为用户创建指 ...
- Tapdata 肖贝贝:实时数据引擎系列(六)-从 PostgreSQL 实时数据集成看增量数据缓存层的必要性
摘要:对于 PostgreSQL 的实时数据采集, 业界经常遇到了包括:对源库性能/存储影响较大, 采集性能受限, 时间回退重新同步不支持, 数据类型较复杂等等问题.Tapdata 在解决 Pos ...
- SpringMVC指定配置文件位置和名称,控制Servlet的加载时间
1. 2.
- 数据结构-二叉树(Binary Tree)
1.二叉树(Binary Tree) 是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根节点和两棵互不相交的,分别称为根节点的左子树和右子树的二叉树组成. 2.特数二 ...
- [ 1 x 1 ] Convolution-1*1卷积的作用
一.卷积神经网络中的卷积(Convolution in a convoluted neural network) 具体内容亲参考<深度学习>. 二.1*1卷积(one by one con ...
- 博客从 CloudBase 迁移至云主机
迁移起因 原来的博客 其实从很久以前就想要写博客,但总是断断续续的,一直都没有认真地开始. 最终,决定使用静态博客工具作为自己博客的承载体.在多种工具的比较下,最终选择了 Hugo 并部署到 Gith ...
- day01 Java_基础
1.类型 int:整数 long:长整数 double:浮点数 char:字符型--单引号只能有一个 boolean:布尔型--真假 string : 字符串--双引号,可以0-多个 2.算数运算符: ...
- 什么新东西值得学「GitHub 热点速览 v.22.29」
上周 18k+ 的项目 bun 这周又获得 7k+ star,是时候了解下它背后的编程语言 zig 了,它并不是一门新的语言,伴随着 bun 的风靡,zig 本周也上了 GitHub 热榜.同样,可以 ...
- go交叉编译,部署到linux上出现cannot execute binray file的解决方案
写在前面: 了解过常见的项目部署方式后,打算先从最简单的方式开始.没想到踩了大坑.先说下整个部署的过程. 博主是在window上生成linux上的可执行文件.. 具体过程: 1.首先按照网上说的 ...