Twikoo私有化部署教程–迁移腾讯云

作者:小牛呼噜噜 | https://xiaoniuhululu.com
计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」

给我的小破站,换了许多独立的评论系统,twikoo还是用的最舒服的。

可是该评论系统 一直用的是腾讯的云开发CloudBase免费版的,2022-08-08 腾讯收费模式正式,变成了收费,再也白嫖不了,看了下价格 每月39.9每月19.9,提价太高,有点吃不消,后面可能还会继续提价,像微信读书一样。

Twikoo私有化部署教程--迁移腾讯云

正好twikoo作者也放出了私有化部署的版本,那就连夜进行迁移, 结果坑不少呢,笔者花了3天才搞好,故简单记录一下

Twikoo私有化部署教程--迁移腾讯云

备份数据

决定迁移前,得先把腾讯云开发CloudBase的聊天数据备份下来

  1. 登录腾讯云
  2. 打开云开发 CloudBase;
  3. 选择要导出的环境;
  4. 点击左侧的数据库,点击 comment 集合,点击导出按钮;
  5. 导出格式选择 JSON(推荐,如果想用 Excel 等软件查看,可以选择 CSV),字段不填;

Twikoo私有化部署教程--迁移腾讯云

私有化部署

创建容器

由于之前的博客已迁移到腾讯云服务器上,顺便把评论系统也迁过来

可以参考: 博客迁移腾讯云 https://mp.weixin.qq.com/s/O_-dAgKxk64hiClul0vDQw

由于已安装docker ,那我就选中twikoo docker版 安装

  1. 拉取镜像
docker pull imaegoo/twikoo
  1. 创建并启动容器
docker run -p 8099:8080 -v /root/twikoo/data:/app/data -d imaegoo/twikoo
  1. 别忘了,把服务器的防火墙 8099端口放开
  2. 测试容器是否正常工作

我博客使用 Hexo+Next来生成的,直接修改主题配置文件

twikoo:
  enable: true
  visitor: true
  envId: xxxxxxxxxxxxxxx #将 envId 从之前的腾讯云开发 ID 换成 http://ip地址:port

然后 hexo clean;hexo g;hexo s启动本地hexo测试环境,就可以连上了

导入数据

第一次打开twikoo面板,需要设置密码

然后选择导入按钮

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

  1. 方案一:通过一个域名、一个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提示一切正常

Twikoo私有化部署教程--迁移腾讯云

但坑爹的是,把将 envId 从之前的腾讯云开发 ID 换成 https://xxx.com/twi后,发现twikoo 不支持 这样的写法,这样其会无法获取 accessToken, 就是这个值强行塞进去,还是绕不开内部的校验,所以花了许多时间,但只能放弃

Twikoo私有化部署教程--迁移腾讯云
  1. 方案二 :通过多个域名、多个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私有化部署教程--迁移腾讯云

终于把twikoo成功私有化部署了!完结撒花~~

参考资料:
https://www.imaegoo.com/2022/twikoo-data-export/

本篇文章到这里就结束啦,很感谢你能看到最后,如果觉得文章对你有帮助,别忘记关注我!更多精彩的文章

Twikoo私有化部署教程--迁移腾讯云

Original: https://www.cnblogs.com/xiaoniuhululu/p/16719508.html
Author: 小牛呼噜噜
Title: Twikoo私有化部署教程–迁移腾讯云

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577848/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python之面向对象-反射

    一、什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问,检测和修改它本省状态或行为的一种能力(自省)。这一概念的提出很快引发了计算机科学领域关于应用反…

    Linux 2023年6月14日
    0113
  • 统计算法_数值/线性关系度量

    继续统计算法,这次也没什么特别的,还没到那么深入,也是比较基础的1、方差-样本2、协方差(标准差)-样本3、变异系数4、相关系数 依然是先造个list,这次把这个功能写个函数,方便…

    Linux 2023年6月6日
    0158
  • 一篇文章Shell脚本快速入门

    Shell脚本基础入门 Bash注释 Bash只支持单行注释,使用 #开头的都被当作注释语句: 整行注释 echo hello world # 行尾注释 通过Bash的一些特性,可…

    Linux 2023年5月28日
    074
  • nginx禁止直接ip、未配置域名访问配置

    问题背景 最近偶然对线上域名配置的nginx IP进行直接访问后,发现http居然是可以通的,而https直接IP访问浏览器会报证书不安全的提示,点击详细查看发现是固定返回了ngi…

    Linux 2023年6月6日
    0214
  • Redis的快照持久化-RDB与AOF

    Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。 数据保存到硬盘的过程就称为&#822…

    Linux 2023年5月28日
    0109
  • Linux Centos 打开和关闭防火墙

    systemctl status firewalld.service # 查看防火墙状态 systemctl start firewalld.service # 开启防火墙 sys…

    Linux 2023年6月13日
    0119
  • Windows安装Mysql.zip

    设定环境变量并新建配置文件 在系统环境变量 Path中新建刚刚下载的文件并解压的路径 E:\mysql-8.0.29-winx64\bin. 新建配置文件请参考以下文件, 将文件更…

    Linux 2023年6月7日
    0108
  • 理想汽车 x JuiceFS:从 Hadoop 到云原生的演进与思考

    理想汽车在 Hadoop 时代的技术架构 首先简单回顾下大数据技术的发展,基于我个人的理解,将大数据的发展分了4个时期: 第一个时期: 2006 年到 2008 年。2008 年左…

    Linux 2023年6月14日
    0102
  • ubuntu redis 集群配置

    1.下载并编译redis 去http://download.redis.io/releases/查看自己想要下载的redis,右键复制一下链接我的原始目录:/root wget h…

    Linux 2023年6月7日
    0113
  • centos进入rescue 失败

    环境:centos7 在机械盘 win10在固态盘 场景:centos7 中/etc/grub.d/下的30_os_prober 脚本删掉后导致 grub2 列举不出别的磁盘上系统…

    Linux 2023年6月6日
    0103
  • Android下获取FPS的几种方法

    FPS(Frames Per Second)是关乎Android用户体验最为重要的指标之一,而在VR中更是如此。为了评估VR系统、VR SDK及Unity应用的性能,通常会实时获取…

    Linux 2023年6月7日
    0101
  • 常见网络安全设备

    一、防火墙定位:访问控制类产品,网络出现后的第一类安全产品。功能:隔离内网、外网以及DMZ区(业务系统对外发布区,Web应用服务器,邮件服务器等)并控制用户访问。部署方式:通常部署…

    Linux 2023年6月14日
    091
  • Java动态脚本Groovy获取Bean(奇淫技巧操作)

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 背景: 在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配…

    Linux 2023年6月14日
    0111
  • POJ1475(Pushing Boxes)–bbffss

    假设只有一个箱子。游戏在一个R行C列的由单位格子组成的区域中进行,每一步, 你可以移动到相邻的四个格子中的一个,前提是那个格子是空的;或者,如果你在箱子旁边,你也可以推动箱子前进一…

    Linux 2023年6月7日
    0109
  • 复杂任务中,流程的解耦设计

    做事不能急,得一步异步的来; 一、业务场景 在系统开发的过程中,必然存在耗时极高的动作,是基于请求响应模式无法解决的问题,通常会采用解耦的思维,并基于异步或者事件驱动的方式去调度整…

    Linux 2023年6月14日
    074
  • Python 批处理sql插入 %s 占位符报错

    语法错误 在查询表达式 ‘%s’ 中。 (-3100) (SQLPrepare)”) 语法错误 在查询表达式 ‘%s’ …

    Linux 2023年6月7日
    0120
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球