Migrate a phpBB3 forum to Discourse

Я добавил их, но разницы нет.

Не уверен, являются ли эти проблемы результатом некорректного вставки или так они и записаны в вашем YAML-файле, но это может вызвать ошибки. (Переносы строк в конце некоторых комментариев, из-за чего появляется вторая строка без комментария)

Ваш список элементов отформатирован с неправильными отступами.

Выше должно быть:

  new_categories: 
    - forum_id: general
      name: General

Рекомендую использовать https://www.yamllint.com/ для проверки вашего конфигурационного файла.

3 лайка

Спасибо за все ваши ответы. Я быстро понял, что редактирование settings.yml вне контейнера импорта не влияет на то, что запущено. Также я разобрался с пробелами в YAML и исправил свой файл настроек. В любом случае, импорт форума phpBB прошел успешно, за исключением одного момента…

Мое имя пользователя на phpBB совпадало с именем моей учетной записи администратора в Discourse. Я не могу войти в систему, и появляется сообщение:

Все исходящие письма были глобально отключены администратором. Уведомления по электронной почте любого рода отправляться не будут.

В результате я не могу запросить письмо для сброса пароля. Это настройка базы данных? И если да, могу ли я обновить это поле, используя ограниченные ресурсы контейнера? Есть ли другие идеи?

Обратите внимание, что у меня установлен плагин migratepassword, но он, похоже, не работает (возможно, потому что мой пароль был короче 15 символов).

Вы можете включить отправку писем для администраторов через консоль Rails:

./launcher enter import
rails c
> SiteSetting.disable_emails = "non-staff"

Вы также можете сбросить свой пароль напрямую из контейнера, без использования электронной почты, выполнив:

./launcher enter import
rake admin:create
3 лайка

Могу ли я предложить несколько изменений в эту документацию (и код):

  • В этом больше нет необходимости, так как настройка disable_edit_notifications больше не существует. Настройка disable system edit notifications выполняет указанную задачу и включена по умолчанию.
  • Две строки SSL больше не закомментированы по умолчанию в app.yml, поэтому удаление этих двух символов # сделает выдержку более точной по сравнению с тем, как она должна выглядеть.
  • Этот шаблон следует обновить, чтобы пользователи не сталкивались с этой ошибкой при импорте.

  • Также это (если я где-то не ошибся, это тоже требует исправления):
    Выполнение IMPORT=1 bundle install вернуло:

    [!] Произошла ошибка при парсинге `Gemfile`: Вы не можете указывать один и тот же гем дважды с разными требованиями к версии.
    Вы указали: sqlite3 (~> 1.3, >= 1.3.13) и sqlite3 (>= 0). Bundler не может продолжить.
    
     #  из /home/root/discourse/Gemfile:249
     #  -------------------------------------------
     #  group :generic_import, optional: true do
     >    gem "sqlite3"
     #    gem "redcarpet"
     #  -------------------------------------------
    

Действительно, sqlite3 уже указан несколькими строками выше:

  # ПРИМЕЧАНИЕ: в режиме импорта версия sqlite может иметь большое значение, поэтому мы фиксируем её на конкретной
  gem "sqlite3", "~> 1.3", ">= 1.3.13"
  gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
  gem "reverse_markdown"
  gem "tiny_tds"
  gem "csv"
end

group :generic_import, optional: true do
  gem "sqlite3"
  gem "redcarpet"
end

Я использовал dev-установку для своего импорта, если это имеет значение.

5 лайков

Эту информацию следует указать в инструкции или обновить шаблон. Это заняло у меня несколько часов..

Что именно должно быть написано?

Удаление этой строки сделало успешную сборку контейнера возможной.

1 лайк

Так что вы удалили эту строку?

1 лайк

Да, это было решение.

1 лайк
4 лайка

Привет! Я успешно перенёс свой форум phpBB на Discourse, всё прошло гладко, и форум работает отлично. Однако я осознал, что не включил бинарный режим при загрузке данных phpBB по FTP, из-за чего все изображения повреждены. Я снова запустил скрипт, но изображения не были перезаписаны. Какой скрипт (желательно с указанием пути) мне нужно изменить, чтобы перезаписать повреждённые изображения и вложения?

Во втором испытании Discourse пропускает загрузки, так как они уже существуют в таблице uploads. Discourse избегает перезаписи существующих загрузок, если это явно не указано.

Вы можете попробовать добавить следующий фрагмент кода в attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) перед вызовом @uploader.create_upload. Это обеспечит удаление существующей загрузки с тем же именем файла в первую очередь, что заставит Discourse выполнить повторную загрузку.

existing_upload = Upload.find_by(original_filename: filename)
if existing_upload
  existing_upload.destroy
  puts "Удалена существующая загрузка: #{filename}"
end

upload = @uploader.create_upload(user_id, path, filename)
4 лайка

Спасибо за ваш ответ. К сожалению, изменения не дали никакого эффекта. Скрипт выполняется всего за одну минуту, но вложения не перезаписываются…

1 лайк

Скорее всего, вам потребуется очистить базу данных и запустить её снова.

1 лайк

Как это сделать?

Шаг 1: Подключитесь к серверу через SSH:

ssh username@server-address

Шаг 2: Войдите в контейнер приложения:

./launcher enter import

Совет: Выполните команду docker ps, чтобы найти имя контейнера. По умолчанию оно обычно app.

Шаг 3: Сбросьте базу данных:

RAILS_ENV=production rake db:reset
3 лайка

Привет, Canapin,

Я обновил эту часть в руководстве.

Это зависит от ситуации. При настройке контейнера для localhost они всё ещё закомментированы. Руководство предполагает использование отдельного контейнера для импорта, который недоступен из интернета, поэтому в этом случае получение сертификатов не требуется.

Запрос на слияние (PR) по этому вопросу уже был принят в основную ветку.

Мы работаем над исправлением этой проблемы, но я обновил руководство и добавил раздел FAQ о том, как её решить.

4 лайка

Когда Discourse работает в подкаталоге, например domain.org/forum, постоянные ссылки не применяются, так как они имеют вид viewtopic.php?p=XXXX, но для корректной работы должны быть forum/viewtopic.php?p=XXXX.

Прошло много лет, но я наткнулся на то, что постоянные ссылки, которые никогда не работали, всё ещё настроены в нашем случае. Есть ли способ через GUI/CLI добавить префикс ко всем постоянным ссылкам в виде элемента пути URL, или кто-то может добавить запрос PostgreSQL для этого? Это также может помочь другим, если эту информацию добавить в первый пост.