将Phorum论坛迁移到Discourse

感谢提供的脚本!

不过,我觉得手册相当粗糙且不清楚。我不得不参考例如 Xenforo 迁移指南 来真正理解你在这里的建议。让我添加一些缺失的步骤:

  • 运行 Discourse
  • 从原始 Phorum 创建 mysqldump - 一切都很清楚,一切都很好。
  • 将数据库转储复制到 Discourse 文件夹 docker cp /path/to/backup/phorum_db.sql.gz app:/shared/phorum_db.sql.gz(假设 app 是标准的容器名称)
    这里是缺失的部分:
  • 实际进入 Discourse Docker 容器并在那里安装 MySQL:
docker exec -it app bash
apt-get update && apt-get upgrade
# pv 仅用于方便显示进度,lsb-release 是某些东西必需的
apt-get install -y lsb-release pv mariadb-server mariadb-client libmariadb-dev
service mariadb start

请注意,MySQL 安装有点棘手,但 Mariadb 应该同样适用。

然后创建一个数据库:mysqlCREATE database phorum

然后从备份中填充它:pv phorum_db.sql.gz | gunzip | mysql phorum(如果你的转储是纯 sql,则不需要 gunzip)。

为 Ruby 添加 MySql 支持:

cd /var/www/discourse/
echo "gem 'mysql2'" >>Gemfile
bundle config unset deployment
bundle install --no-deployment

修改迁移脚本中的数据(数据库凭据、前缀、永久链接):

nano /var/www/discourse/script/import_scripts/phorum.rb

然后回到原始帖子的指南,一切都很好:

运行带有干净 Discourse 实例的导入器:

git config --global --add safe.directory /var/www/discourse
bundle exec ruby script/import_scripts/phorum.rb

如果你的 Discourse 数据库不是很干净,最好事先用 bundle exec rake db:drop db:create db:migrate 清理它。

如果出现“PG::ConnectionBad: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: FATAL: Peer authentication failed for user “discourse” (PG::ConnectionBad)”错误:

  1. 如果你收到错误“‘Peer authentication failed for user “discourse”’”
  2. 编辑文件 /etc/postgresql/13/main/pg_hba.conf
  3. 将所有‘peer’更改为‘trust’并保存文件
  4. 重新加载 postgres 服务器:/etc/init.d/postgresql reload(或者可能是 psql -U postgres -c "SELECT pg_reload_conf();",但这有时对我不起作用)

首先运行用户迁移,这可能相对较慢(根据脚本输出,约为 1.2k 用户/分钟。我有 100k 用户,所以…)。然后它会创建类别并开始迁移消息和主题(速度相同,约 1.2k/分钟),但此时你已经可以访问网站并查看它的外观了。

对于像 Phorum 这样古老的引擎来说,这似乎比我预期的要顺畅得多。似乎没有迁移私人消息(PM),但这至少对我来说不是障碍。

再次感谢脚本和付出的努力!