이 긴 여정(이 포스트보다 훨씬 긴)을 요약하면 다음과 같습니다:
참고: 이 과정은 가상 머신에서 실행되는 Kubuntu 배포판을 사용했으므로, 다른 OS나 배포판에서는 결과가 다를 수 있음을 유념해 주세요.
0. Discourse 개발 환경 설치
이 포스트를 참고하고, 해당 포스트에 링크된 이 스크립트를 다음을 사용하여 실행합니다.
`bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)`
```\n그곳에 설명된 대로 소스 코드를 클론합니다.
git clone GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub ~/discourse
### 1. MySQL 데이터베이스 준비
스레드 상단에 설명된 대로 원래 `mybb` 데이터베이스의 덤프를 가져옵니다:
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
그리고 이를 새로 설정된 개발 환경으로 복사/이동합니다.
MySQL 서버를 설치합니다.
$ sudo apt-get install mysql-server
최근 버전에서 MySQL 인증 방식이 변경되었습니다. 이제 MySQL에서 root 권한을 사용하려면 호스트에서도 root 권한이 있어야 하므로
$ sudo mysql
을 사용해야 하며, 이전처럼
$mysql -u root
을 사용할 수 없습니다.
물론 먼저 "sudoer"(관리자) 권한이 있어야 합니다.
$ sudo mysql
mysql> CREATE DATABASE mybb;
mysql> SHOW DATABASES;
mysql> CREATE USER ‘nonrootuser’@‘localhost’ IDENTIFIED BY ‘password’;
mysql> GRANT ALL PRIVILEGES ON mybb.* TO ‘nonrootuser’@‘localhost’;
mysql> quit
$ mysql -unonrootuser -ppassword mybb < mybb_dump.sql
<여기서는 커맨드 라인에 비밀번호를 제공하지 않는 것이 현명하지 않다는 경고가 나옵니다>
$ sudo mysql
mysql> USE mybb;
mysql> SHOW TABLES;
<여기서 모든 테이블이 존재하는지 확인하세요 - 원래 포스트 참조>
mysql> quit
### 2. Ruby gems 설치
현재 소스에서 `Gemfile`을 확인해 보면
$ echo “gem ‘mysql2’, require: false” >> Gemfile
이 실제로는 필요하지 않음을 알 수 있습니다. 환경 변수 `IMPORT`를 `1`로 설정하는 것만으로도 충분합니다.
필요한 것은 MySQL 클라이언트용 개발 파일이며, 아래 첫 번째 줄이 바로 그 목적입니다.
$ sudo apt-get install libmysqlclient-dev
$ cd ~/discourse
$ IMPORT=1 bundle install
### 2. Discourse 준비 (PostgreSQL 데이터베이스)
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ export DB_PW=“password”
$ export DB_USER=“nonrootuser”
### 3. 실제 가져오기 실행
다음 줄은 `mybb.rb` 가져오기 스크립트에서 오랫동안 비추천되어 현재는 이미 제거된 메서드 호출을 수정합니다. 작성 시점에는 여전히 존재하며, 이미 수정된 경우에도 아무것도 변경되지 않습니다.
$ sed -i.original ‘s/File.exists?/File.exist?/’ script/import_scripts/mybb.rb
이제 Redis가 여전히 실행 중인지 확인합니다. Rails 설치 스크립트는 Redis를 시작하지만 영구 서비스로 활성화하지 않으므로 재부팅, 충돌 등에서는 유지되지 않습니다.
$ ps -aux |grep redis
silverdr 2808 0.3 0.3 89972 14512 ? Ssl 05:25 2:04 redis-server *:6379
[…]
위와 같은 줄이 보이지 않는다면 다음을 실행하세요.
$ redis-server --daemonize yes
이는 처음 설치할 때 위의 Rails 설치 스크립트가 사용했던 것과 정확히 동일한 명령입니다.
마지막으로 :pray: 기도를 올리고
$ IMPORT=1 bundle exec ruby script/import_scripts/mybb.rb
이 시점에 스크립트가 YAE(또 다른 에러)로 중단되지 않았다면 그 병을 따고 마실 때입니다 :champagne:
#### 남은 몇 가지 사항
* OK - 가장 눈에 띄는 누락 부분은 사용자 비밀번호입니다. 두 애플리케이션 모두 해시와 솔트를 저장하지만, 해시 길이를 보면 "mybb"는 더 오래된 해싱 알고리즘을 사용하는 것으로 보입니다. 따라서 이는 이해할 수 있는 부분이며 치명적인 장애 요인은 아닙니다. 누구나 처음에는 비밀번호를 재설정할 수 있어야 합니다.
* 일부 bbcode가 변환되지 않습니다. 예를 들어 코드 블록에는 모노스페이스 Courier 폰트 등을 설정하는 태그가 있어 문제가 발생합니다. 이 부분을 더 자동화하려는 기력이 남아있지 않습니다. 만약 해결 방법을 찾으신다면 저/여기에 알려주세요! :man_bowing: