将PunBB论坛迁移到Discourse

在本教程中,我们将学习如何使用官方 导入脚本 将 PunBB 论坛迁移到 :discourse: 平台。让我们开始吧 :slight_smile:

可迁移的内容

  • 主题与回复 => 主题与帖子

  • 分类与论坛

    • 根分类 => 根分类
    • 子分类 => 子分类
    • 根论坛 => 子分类
    • 子论坛 => 子分类
  • 用户

    • 用户名
    • 姓名
    • 邮箱
    • 网站
    • 权限状态
    • 所在地
    • 加入日期
    • 管理状态
    • 封禁状态

我们的计划非常简单,只需要:

  • 设置本地开发环境(DEV ENV)。
  • 导出生产数据库。
  • 将生产数据库导入 Discourse。
  • 运行 PunBB 导入脚本。

让我们开始吧 :slightly_smiling_face:

设置本地开发环境(DEV ENV)

首先,您需要按照以下指南之一安装 Discourse 平台。如果您遇到任何问题,请参阅 此指南

安装 MySQL 数据库服务器;

MacOS

$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

通过运行以下命令检查服务状态:

$ brew services list

您应该看到类似以下内容:

mysql@5.7 started

如果没有,请运行以下命令并重新检查状态:

$ brew services start mysql@5.7

Ubuntu 18.04

运行以下命令安装 MySQL 服务器:

$ sudo apt update
$ sudo apt install mysql-server -y

安装完成后,检查其状态:

$ systemctl status mysql.service

如果未运行,请运行以下命令:

$ sudo systemctl start mysql

对于 Windows,您可以按照 安装指南 进行操作。

现在,我们的开发环境已准备就绪。我们将称之为:Discourse 服务器

导出生产数据库

通过运行以下命令导出/备份生产数据库(来自 PunBB 生产服务器):

$ mysqldump -u USER_NAME -p DATABASE_NAME > punbb.sql
  • 将此数据库转储文件复制到 Discourse 服务器

:bulb: 您可以使用 scprsync 来复制数据库。

将生产数据库导入 Discourse

Discourse 服务器 上创建一个新空数据库。为此,我们需要使用 MySQL 命令行界面(CLI):

$ mysql -u root

如果您的数据库用户有密码,请运行以下命令然后输入密码:

mysql -u root -p
mysql> CREATE DATABASE punbb;

通过运行以下命令确保数据库已成功创建:

mysql> SHOW DATABASES;

您应该看到类似以下内容:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| punbb              |
+--------------------+

我们的下一步是将生产数据库导入到这个新的空数据库中。

$ mysql -u root punbb < punbb.sql

运行 PunBB 导入脚本

首先安装导入器的依赖项。在 Discourse 服务器 上执行:

$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install

接下来,您应该配置脚本以使其正常运行。使用您喜欢的编辑器打开 script/import_scripts/punbb.rb 并进行修改。本质上,您需要做的是提供 MySQL 数据库信息:

PUNBB_DB = "DATABASE_NAME"
.
.
.
@client = Mysql2::Client.new(
  host: "localhost",
  username: "MYSQL_USERNAME",
  password: "MYSQL_PASSWORD",
  database: PUNBB_DB
)

使用干净的 Discourse 实例运行导入器:

$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/punbb.rb

导入器将连接到 MySQL 数据库,并将您的 PunBB 论坛数据库迁移到 Discourse 数据库。

导入完成后,通过运行以下命令启动 Discourse 服务器:

$ bundle exec rails server

接下来,启动后台作业处理器以处理迁移的数据:

$ bundle exec sidekiq

:bulb: 您可以在以下 URL 监控 Sidekiq 的进度:http://localhost:3000/sidekiq/queues

接下来,按照此 教程 准备您的 Discourse 生产服务器。

按照此 教程 对本地 Discourse 服务器 平台进行备份,并将其上传到您的 Discourse 生产服务器。

如果您对流程有任何疑问,我很乐意提供帮助。

祝迁移顺利 :grinning:

7 个赞