Migrate a phpBB3 forum to Discourse

안녕하세요,

phpBB 포럼(v3.2.10)을 아무 문제 없이 가져왔습니다(@gerhard 외 다른 분들에게도 감사드립니다)…

거의 문제없었지만 :wink: : 주제(게시물)에 답글이 없습니다.

혹시 아이디어가 있으신가요?

미리 감사합니다

1개의 좋아요

안녕하세요 @jmbeuken, import_phpbb3.sh를 여러 번 실행한 후 http://yoursite/sidekiq에서 Sidekiq가 작업을 완료했는지 확인해 보세요.

3개의 좋아요

감사합니다: 작동합니다!

2개의 좋아요

지금야 포럼 URL에서만 정규식이 작동한다는 걸 깨달았어요.

변환 후 다음처럼 사전 설정된 항목을 발견했어요

/(viewforum.php\?)(?:.*&)?(f=\d+).*/\1\2 은 완벽하게 작동하지만, /(viewtopic.php\?)(?:.*&)?(t=\d+).*/\1\2 는 주소가 변환되지 않고 그대로 https://www.mysite.com/viewtopic.php?t=123 으로 남아 있어 항상 404 오류를 반환해요.

왜 그런 걸까요? 정규식은 똑같이 보인데, 외부 링크에서 시도해 봤거든요.

UP! ( :grimacing:)

2개의 좋아요

영구 링크 정규식 정규화 문제인 것 같지는 않습니다. 정규식이 올바르게 선택되고 있기 때문이죠. 관리 → 사용자 지정 → 영구 링크에서 viewtopic.php?t=123 형태의 영구 링크를 사용 중이신가요?

2개의 좋아요

Justin님, 아니요. 이미지에서 보시는 것만 있습니다.

감사합니다

1개의 좋아요

안녕하세요, 이 팁에 감사 인사를 드리고자 잠시 들렀습니다. 약 1.3GB 용량의 SQL 덤프를 가진 다소 큰 PHPBB 3.2 포럼을 Discourse로 이식하고 있는데, 처음부터 막혀버린 줄 알았거든요!

new_categories를 빈 리스트로, category_mappings를 빈 객체로 정의하면 실제로 어떤 일이 일어나나요? 부정적인 결과가 있을까요?

1개의 좋아요

해당 설정은 기존 카테고리 구조가 있는 Discourse 포럼으로 가져올 때만 적용됩니다.

1개의 좋아요

안녕하세요,

2,518명의 사용자가 있는 phpBB3 사이트를 가져왔습니다.
"import_phpbb3.sh"를 실행한 후, 모든 것이 안정적으로 보이는 것 같습니다…
하지만 1,108명의 “레벨 0” 사용자와 1,410명의 “레벨 1” 사용자가 있다는 것을 발견했습니다: 사용자를 구분하는 기준은 무엇인가요?
그리고 다음 날, “레벨 0” 사용자가 258명만 남았다는 것을 알게 되었습니다: 이 "정리"는 어떻게 이루어진 것인가요? 게시물이 0개인가요? 활동이 없었나요?

비밀번호 이전을 시도해 보았습니다: 불행히도 많은 오류(사용자명==비밀번호, 길이 < 9, … )가 발생하고 스크립트가 매번 충돌합니다: phpBB3에서 수정(사용자 삭제 :wink: )하고 스크립트를 다시 시작합니다: 너무 고통스럽고 중단했습니다. :roll_eyes:
오류가 발생할 경우 기본 비밀번호를 설정할 방법이 있을까요? (Ruby를 잘 모르겠습니다 :pensive: )

미리 감사드립니다.

1개의 좋아요

비밀번호 길이를 확인한 후, 해당 비밀번호를 삭제하거나 9자 이상으로 늘리는 코드를 추가해야 합니다. (최소 길이가 실제로는 8자이므로 9자라는 기준에 대해선 확실하지 않습니다.)

2개의 좋아요

@pfaffman 님 감사합니다.
죄송합니다, 제 설명이 명확하지 않았네요…
phpBB3 인스턴스에서는 비밀번호 최소 길이가 6자였는데, 몇 년 전 phpBB3를 업데이트할 때 8자로 변경했습니다…
따라서 잠재적으로 Discourse의 기본값인 10자보다 짧은 비밀번호가 많이 존재할 수 있습니다.

“spec/components/validators/password_validator_spec.rb” 파일을 해킹(수정)할 수 있다고 생각하지만, 이해하는 데 어려움을 겪고 있습니다… :anguished:

감사합니다.

1개의 좋아요

그 방법을 시도해 볼 수는 있지만, 실제로 작동할지 확신할 수 없으며, 업그레이드 시 되돌려지지 않도록 하는 것도 까다롭습니다. 더 쉬운 제안을 드리자면, 너무 짧은 비밀번호는 그냥 가져오지 않는 것입니다. 어차피 그 비밀번호를 기억하지 못할 것 같거든요.

하지만 다른 분이 다른 아이디어를 가지고 계실 수도 있습니다.

1개의 좋아요

안녕하세요,

가져오기(import) 과정에서 파일 업로드에 문제가 발생하고 있습니다:

4497 / 12442 ( 36.1%)  [1122 items/min]  
Failed to create upload: No such file or directory @ rb_sysopen - /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90
Failed to upload /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90

하지만 해당 파일은 존재합니다:

root@gui2:/var/discourse/shared/standalone/import# ll data/files/89_d634760ee03ba0148d7a387a19794f90
-rw-rw-rw- 1 nwz003 48 125552 Mar  6  2012 data/files/89_d634760ee03ba0148d7a387a19794f90

그리고

“shared/standalone/import/settings.yml” 파일에는 다음과 같이 설정되어 있습니다:

phpbb_base_dir: /shared/standalone/import/data

해결책이 있을까요?

감사합니다.

1개의 좋아요

설정에서 /shared/import/data를 실행해 보세요. 컨테이너 내부에서는 /var/discourse/shared/standalone 디렉터리가 /shared에 매핑됩니다.

3개의 좋아요

@justin 고마워요: 바로 그 트릭이었네요 :slight_smile:

4개의 좋아요

방금 phpBB 3.0.12 데이터베이스 덤프에서 import_phpbb3.sh를 실행하던 중 이 문제를 겪었습니다:

creating user groups
Failed to add user 1 to group 11
PG::NotNullViolation: ERROR:  null value in column "user_id" of relation "group_users" violates not-null constraint

원인을 파악해보니 제 phpbb 데이터베이스의 phpbb_user_group 테이블에 “대기(pending)” 상태의 사용자가 있었습니다. (대기 상태의 사용자는 그룹 가입을 요청했지만 아직 승인되지 않은 사용자입니다.) user_pending 값이 1인 행을 삭제한 후, 가져오기(importer)가 정상적으로 계속 진행되었습니다.

1개의 좋아요

phpBB 3.0.12를 가져오는 또 다른 참고 사항: 첫 실행 시 게시물을 가져오는 과정에서 다음과 같은 메시지가 대량으로 표시됩니다:

    65427 / 65812 ( 99.4%)  [2238 items/min]  Parent post 68380 doesn't exist. Skipping 68382: Shuffling an At Start Stack

("Shuffling an At Start Stack"은 내 포럼에서 해당 스레드의 제목입니다.)

앱을 실행하여 가져온 내용을 확인해 보니, 각 스레드의 첫 번째 게시물만 가져와졌고 답글은 없는 상태였습니다.

아마도 가져오기 도구가 데이터베이스에 대해 두 번째 경로(즉, import_phpbb3.sh를 다시 실행하는 것)를 요구하는 것 같습니다. 두 번째 실행 시에는 모든 누락된 부모 게시물이 존재하는 것으로 보였고, 부모 게시물 누락 메시지도 더 이상 표시되지 않았습니다.

가져오기 도구를 작성하는 것은 문제 발생 후 성공적으로 재개할 수 있는 모든 작업과 마찬가지로 어려운 일인데, 여러분은 이 두 가지를 모두 해냈습니다. 훌륭합니다!

3개의 좋아요

이것은 base.rb나 lookup.rb에 문제가 있을 수 있음을 시사합니다. 제네릭 JSON 가져오기 프로그램에서도 비슷한 문제를 발견했지만, 그 프로그램 자체의 문제라고 생각했습니다. 검색(lookup) 함수가 작동하지 않는 것 같습니다. 제 추측으로는 게시글 생성(create post) 함수가 검색 함수들이 사용하는 구조에 새 게시글을 추가하지 않는 것 같습니다.

앞으로 하루 이틀 안에 살펴볼 예정입니다.

1개의 좋아요

@pfaffman 제가 진행한 임포트는 시험용이었습니다. 며칠 후에 테스트해볼 수 있는 것이 있으시면 기꺼이 테스트해 드리겠습니다. 적어도 한 번 더 진행할 가능성이 높기 때문입니다.

1개의 좋아요

음, @topics와/또는 @posts가 주제/게시글 생성자에 의해 업데이트되지 않는 것 같습니다. 제 스크립트에서는 조회 함수에 의존하기보다 코드에서 TopicCustomField를 직접 검색해 왔습니다.

코드와 최근 커밋을 확인해 보았지만, 명확한 설명을 찾지 못했습니다.

1개의 좋아요