我创建了一个迁移 脚本,用于将 FluxBB 数据库导入 Discourse。接下来,我将分步讲解导入过程。
我使用 FluxBB v1.5.10(当前最新版本)测试了此迁移脚本。
可以导入哪些数据?
- 用户(包括个人简介/签名)
- 用户组
- 分类
权限不会被导入,所有分类默认为公开。导入后需手动设置正确的权限。 - 主题(包括置顶/固定状态)
- 帖子
- 被禁用户
在开始迁移之前,请在您的机器(或虚拟机内)搭建开发环境。请参阅 OS X 或 Ubuntu 的开发安装指南。
Discourse 需要 Ruby 3.4+ 版本。要检查您的 Ruby 版本,请运行以下命令:
ruby -v
MySQL
现在我们需要 mysql2 gem 以便 Ruby 能够连接旧的 FluxBB 数据库。运行以下命令安装 libmysqlclient-dev 依赖项和 mysql2 gem:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libmysqlclient-dev
gem install mysql2
(可选)将 MySQL 转储文件导入本地
若要安装 MySQL 客户端并将 MySQL 转储文件 (.sql) 导入到您的开发机器,请遵循以下说明:
sudo apt-get install mysql-server mysql-client
创建 MySQL 用户、授权和数据库:
mysql -u root -p mysql
mysql> CREATE USER 'fluxbb'@'localhost' IDENTIFIED BY 'fluxbb';
Query OK, 0 rows affected (0.00 sec)
.
mysql> CREATE DATABASE fluxbb;
Query OK, 1 row affected (0.01 sec)
.
mysql> GRANT ALL PRIVILEGES ON fluxbb.* TO 'fluxbb'@'localhost';
Query OK, 0 rows affected (0.00 sec)
.
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
.
mysql> exit
导入您的 FluxBB 数据库转储文件:
mysql -u fluxbb -p fluxbb < myfluxbb.sql
BBCode 转 Markdown
导入脚本会自动处理 BBCode 到 Markdown 的转换。无需安装额外的 gem。
安装 mysql2 后,进入您的 Discourse 安装目录并打开 Gemfile 进行编辑。
cd ~/discourse
sudo nano Gemfile
现在在文件末尾插入以下行,将 mysql2 gem 添加到 Discourse 中:
gem 'mysql2'
在运行导入脚本之前,请逐行将以下代码粘贴到您的 shell 中。(使用方向键编辑值)
export FLUXBB_HOST="localhost"
export FLUXBB_DB="fluxbb"
export FLUXBB_USER="root"
export FLUXBB_PW=""
export FLUXBB_PREFIX=""
现在可以运行导入脚本了。运行以下命令开始迁移:
RAILS_ENV=production bundle exec ruby script/import_scripts/fluxbb.rb
等待导入完成。如果进度变得极慢,您可以重新启动它。
完成后,恭喜! 您的数据库已成功从 FluxBB 迁移到 Discourse ![]()
启动您的 Discourse 实例:
bundle exec rails server
启动 Sidekiq 并让它开始工作:
bundle exec sidekiq -q critical,4 -q default,2 -q low
根据论坛规模,这可能需要较长时间。您可以在 http://localhost:3000/sidekiq 监控进度。
现在,从管理员页面 /admin/backups 备份数据,并将其导入到您的在线 Discourse 网站中。