이 튜토리얼에서는 공식 Importer 스크립트를 사용하여 PunBB 포럼을
플랫폼으로 마이그레이션하는 방법을 배웁니다. 시작해 보겠습니다. ![]()
마이그레이션 가능한 항목
-
토픽 및 답변 => 토픽 및 게시물
-
카테고리 및 포럼
- 루트 카테고리 => 루트 카테고리
- 하위 카테고리 => 하위 카테고리
- 루트 포럼 => 하위 카테고리
- 하위 포럼 => 하위 카테고리
-
사용자
- 사용자 이름
- 이름
- 이메일
- 웹사이트
- 권한 상태
- 위치
- 가입일
- 관리자 상태
- 금지 상태
우리의 계획은 매우 간단하며, 필요한 작업은 다음과 같습니다:
-
로컬 개발 환경(DEV ENV) 설정.
-
프로덕션 데이터베이스 내보내기.
-
프로덕션 데이터베이스를 Discourse로 가져오기.
-
PunBB 임포터 스크립트 실행.
시작해 보겠습니다. ![]()
로컬 개발 환경 설정
우선, 다음 가이드 중 하나를 따르도록 Discourse 플랫폼을 설치해야 합니다. 문제가 발생하면 이 가이드를 참조하세요.
MySQL 데이터베이스 서버를 설치합니다.
MacOS:
$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
다음 명령을 실행하여 서비스 상태를 확인합니다.
$ brew services list
다음과 같은 내용을 확인해야 합니다.
mysql@5.7 started
그렇지 않으면 다음을 실행하고 상태를 다시 확인하세요.
$ brew services start mysql@5.7
Ubuntu 18.04:
다음 명령을 실행하여 MySQL 서버를 설치합니다.
$ sudo apt update
$ sudo apt install mysql-server -y
MySQL 설치 완료 후 상태를 확인합니다.
$ systemctl status mysql.service
실행 중이지 않다면 다음을 실행하세요.
$ sudo systemctl start mysql
Windows의 경우 설치 가이드를 따를 수 있습니다.
이제 개발 환경(DEV ENV)이 준비되었습니다. 이를 Discourse 서버라고 부르겠습니다.
프로덕션 데이터베이스 내보내기
다음 명령을 실행하여 프로덕션 데이터베이스(PunBB 프로덕션 서버에서)를 내보내기/백업합니다.
$ mysqldump -u USER_NAME -p DATABASE_NAME > punbb.sql
- 이 데이터베이스 덤프를 Discourse 서버로 복사합니다.
![]()
scp또는rsync를 사용하여 데이터베이스를 복사할 수 있습니다.
프로덕션 데이터베이스를 Discourse로 가져오기
Discourse 서버에서 새로운 빈 데이터베이스를 생성합니다. 이를 위해 MySQL CLI를 사용해야 합니다.
$ mysql -u root
DB 사용자가 비밀번호를 가지고 있다면 다음을 실행한 후 비밀번호를 입력해야 합니다.
mysql -u root -p
mysql> CREATE DATABASE punbb;
다음 명령을 실행하여 데이터베이스가 성공적으로 생성되었는지 확인합니다.
mysql> SHOW DATABASES;
다음과 같은 내용을 확인해야 합니다.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| punbb |
+--------------------+
다음 단계는 프로덕션 데이터베이스를 이 새로운 빈 데이터베이스로 가져오는 것입니다.
$ mysql -u root punbb < punbb.sql
PunBB 임포터 스크립트 실행
우선 임포터의 종속성을 설치합니다. Discourse 서버에서:
$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install
다음으로, 스크립트가 올바르게 실행되도록 구성해야 합니다. 원하는 편집기로 script/import_scripts/punbb.rb 파일을 열고 변경합니다. 기본적으로 필요한 작업은 MySQL 데이터베이스 정보를 제공하는 것입니다.
PUNBB_DB = "DATABASE_NAME"
.
.
.
@client = Mysql2::Client.new(
host: "localhost",
username: "MYSQL_USERNAME",
password: "MYSQL_PASSWORD",
database: PUNBB_DB
)
깨끗한 Discourse 인스턴스에서 임포터를 실행합니다:
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/punbb.rb
임포터는 MySQL DB에 연결하여 PunBB DB 포럼을 Discourse DB로 마이그레이션합니다.
임포터가 완료되면 다음 명령을 실행하여 Discourse 서버를 시작합니다.
$ bundle exec rails server
다음으로, 마이그레이션된 데이터를 처리하기 위해 백그라운드 작업 프로세서를 시작합니다.
$ bundle exec sidekiq
이 URL에서 sidekiq 진행 상황을 모니터링할 수 있습니다:
http://localhost:3000/sidekiq/queues.
다음으로, 이 튜토리얼을 따라 Discourse 프로덕션 서버를 준비합니다.
이 튜토리얼을 따라 로컬 Discourse Server 플랫폼의 백업을 수행하고 Discourse 프로덕션 서버에 업로드합니다.
프로세스에 대해 질문이 있으시면 기꺼이 도와드리겠습니다.
마이그레이션이 순조롭게 이루어지기를 바랍니다. ![]()