感谢提供的脚本!
不过,我觉得手册相当粗糙且不清楚。我不得不参考例如 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 应该同样适用。
然后创建一个数据库:mysql → CREATE 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)”错误:
- 如果你收到错误“‘Peer authentication failed for user “discourse”’”:
- 编辑文件
/etc/postgresql/13/main/pg_hba.conf- 将所有‘peer’更改为‘trust’并保存文件
- 重新加载 postgres 服务器:
/etc/init.d/postgresql reload(或者可能是psql -U postgres -c "SELECT pg_reload_conf();",但这有时对我不起作用)
首先运行用户迁移,这可能相对较慢(根据脚本输出,约为 1.2k 用户/分钟。我有 100k 用户,所以…)。然后它会创建类别并开始迁移消息和主题(速度相同,约 1.2k/分钟),但此时你已经可以访问网站并查看它的外观了。
对于像 Phorum 这样古老的引擎来说,这似乎比我预期的要顺畅得多。似乎没有迁移私人消息(PM),但这至少对我来说不是障碍。
再次感谢脚本和付出的努力!