Discourse is on the way


#1

本贴更新迁移论坛到 discourse 系统的相关事宜。

目前的进展:

  1. @guoyunhe 解决了 discourse 的中文用户名问题:https://github.com/openSUSE-zh/discourse-username-localization,全部实现插件化。
  2. 我买了个阿里云。成功升级到了 tumbleweed。SDB:Upgrade Aliyun ECS - openSUSE
  3. discourse 搭建完。SDB:Discourse without Docker - openSUSE
    2.1 postgresql 完成
    2.2 redis 完成
    2.3 discourse 完成。使用的是 home:darix:apps 源里的 discourse。主要由 openSUSE 的 infrastructure manager 也就是 SA @darix 维护,我负责维护其中的 rubygem-libv8 部分。
  4. 把 phpbb 3.0 论坛的用户帖子什么的迁移过去,测试成功。
  5. ruby 手写几个转换器:
    4.1 把 mysql 数据库中的金币按照公式转换成 discourse 的 trust level
    4.2 把 mysql 数据库中的感谢转换成 discourse 的 likes
    4.3 把 mysql 数据库中的徽章转换成 discourse 的徽章。

TODO:

  1. 测试无误后,关站进行实际转换。
    5.1 转换本身大概需要两到三天,我要先把数据灌到阿里云,然后用 discourse 的备份功能备份出来,再联系凤凰把现在的 VPS 内存加大,然后在现在的 VPS 上搭建 discourse,再灌回去。

#2

苏姐威武,,,看着有点复杂,希望不会跳票,哈哈! :heart_eyes:


#3

更新:discourse 已经搭建成功,但是阿里云不让我用 80 端口,必须备案,我暂时用的 87 端口。但是激活管理员账户的邮件点一下,回来发现那个激活账户的 button 不让点。暂时不知道原因。


#4

用阿里海外服务器吧,不然备案是绕不过的。或者把 suse.org.cn 备案成个普通网站,这样所有子域名就都能在阿里的服务器绑定了。


#5

我以前做实验的时候碰到过同样的事情,当时是按照 http://blog.csdn.net/u012973744/article/details/18910381,这里的方法解决的。时间很久了,不知道现在还是否有效,您可以试试哈!


#6

换了 Chrome 浏览器,之前的问题解决了,现在 discourse 已经完全跑起来了。

从现有的论坛导出了今天的数据,明天准备跑测试看看带着插件的数据能不能运行,否则就要重新导出数据库,去掉插件的数据表。


#7

发来贺电,如果需要帮助请绰我 Telegram (相同 ID)
话说突然想起来之前说把数据库备份弄出来测试迁移一直忘了发…


#8

更新:在跑测试了。思路是如果有错误,就回这边编辑帖子让它能在不损失内容的情况下通过转换。有两个特别长的贴 log 的帖子完全无法转换,原因还没 debug。现在 debug 的是似乎用了 quote 的帖子就无法转换,我居然在 v8 里 debug javascript…

从我的 iPhone 发送,使用 Tapatalk


#9

更新,帖子测试完毕,全部都能够迁移。但是头像没过去,原因不明。


#10

更新:

头像没过去的原因找到了,中文名插件的问题,明天修复。

另外迁移感谢到 likes 的脚本已经开始写了

从我的 iPhone 发送,使用 Tapatalk


#11

看来真正迁移的时候得让 @phoenixlzx 把服务器内存暂时加大到 8G…2G sidekiq 总卡死……

头像的问题还需要 debug,插件修好了也不行

从我的 iPhone 发送,使用 Tapatalk


#12

头像是小问题,没必要在这上边浪费太多时间,大不了都自己再设置下就是了


#13

头像问题解决了,是 app/models/optimized_image.rb 函数里面调用 Imagemagick 进行 resize,TW 的版本高,bicubic 这个 interpolate 参数变成了 catrom 导致的。

从我的 iPhone 发送,使用 Tapatalk


#14

现在就剩下几个转换器没写,预计一个礼拜写好一个。另外 discourse 内置的 bbcode to markdown 转换器 very buggy,是用 sidekiq 作业,超级卡,在后台会影响主站的访问。准备自己写一个 rubygem 再套一个 script 来直接把 mysql 数据库的数据先行转换成 markdown,这样上线后会很平稳。预计还有四个礼拜吧。

从我的 iPhone 发送,使用 Tapatalk


#15

OT: 今天更新 SSL 证书的时侯发现论坛域名的解析配置不对,AAAA 记录指向的是 loopback 地址… 机器上实际没有 IPv6 地址,所以 AAAA 记录应该留空,或者貌似 Vultr 需要在后台选一下启用 IPv6 然后手工配来着

@marguerite 苏姐我木有 DNS 和 Vultr 后台的权限,得你有空了去搞下


#16

@AstroProfundis 好像因为以前有,再不就是以前用什么软件搞出过 IPv6 因为教育网……我周一看看。DNS 是我自己域名的 cloudns 我有后台,Vultr 我也没有只有 @phoenixlzx 才有

从我的 iPhone 发送,使用 Tapatalk


#17

更新:帖子预处理引擎 rubygem-bb2md 完成

从我的 iPhone 发送,使用 Tapatalk


#18

更新:discourse-phpbb3-posts 完成。能够把处理好的帖子灌回 mysql 数据库了。另外还做了两个插件,rubygem-SUSE_typo,专门改一些英文名词的写法的,rubygem-latincjk,专门给中英文加空格的。


#19

@AstroProfundis 我把 IPv6 的记录删除了。


#20

更新:thanks mod 的转换,目前已经能够把 thanks 数据从 mysql 数据库中提出来并 map 成 postgresql 数据库表中对应的值了。下面要做的是用这些值去更新 discourse 的 likes。

discourse 的 likes 机制是这样的:用户点击 like 按钮,发起一个 post action 去向 post_actions 表写入一个类型为 2 的 action,对应去更新 daily likes count 和 posts 表,post 表有 like_count,like_score,score 和 percent_rank 四个值需要去添,其中 percent_rank 比较难填,需要模拟 sql 算法或者直接用 sql 做。接着更新 topics 和 top_topics,前者跟 posts 差不多,后者有一些算法。最后是发起一个 user_action 去更新 user_stats,就是你收了多少 likes 又给出多少。然后是 directory items 就是用户汇总页。还有 badge_posts 里面对应的值。

从我的 iPhone 发送,使用 Tapatalk