리버티게임:관리자 가이드/백엔드 관리 가이드

리버티게임, 모두가 만들어가는 자유로운 게임

리버티게임이 새로운 독립 서버로 이주할 때 DB를 통째로 옮기는 것 외에 XML 내보내기 및 가져오기로 문서 파일을 옮겨야 할 상황이 올 수 있습니다.

이 문서는 그런 상황에서 서버 개발자가 해야 하는 작업을 다룹니다. 미디어위키 공식 서버 이주 방법을 풀어쓰면 이렇습니다.

  1. 기존 서버에서 먼저 특수:버전을 방문해 현 사이트가 어떤 확장기능을 쓰고 있는지 파악해야 합니다.
    1. 이때 미디어위키에 기본 포함된 확장기능들은 제외합니다.
  2. 확장 기능을 설정하고 각 확장 기능마다 필요한 설정을 합니다.
    1. 여기에는 기본적으로 어떤 유저에게도 자신과 관련된 권한을 주지 않는 확장 기능의 경우가 해당합니다. Interwiki 확장 기능과 CheckUser, Gadgets 등이 대표적입니다.
    2. Gadgets의 경우 인터페이스 관리자에게 수동으로 편집 권한을 주어야 합니다.
    3. UserFunctions, MyVariables, ParserFunctions는 리버티게임: 특수 함수와 관련된 확장기능이므로 별도의 세팅을 추가로 해야 해당 문서에 명시된 대로 작동합니다.
  3. 이제 서버에 SSH로 접속한 다음, MySQL로 위키의 데이터베이스에 접근해 계정 정보를 sql 파일로 빼냅니다.
  4. 미디어위키가 설치된 경로에서 maintenance를 찾아 DumpBackup.php로 문서 덤프를 빼냅니다.
    1. --filter=namespace:xx 옵션으로 xx 부분에 이름공간 ID를 넣어 이름공간 별로 덤프를 빼낼 수 있습니다.
  5. 서버에 업로드된 멀티미디어 파일(이미지, 음악 파일 같은 것들)은 미디어위키 설치 경로의 images 폴더를 그냥 압축해버리면 되나, 그 전에 16진수로 0~F까지의 숫자명으로 된 폴더를 제외한 폴더는 제거하고 압축해야 합니다.
  6. 새 서버를 먼저 연 뒤 LocalSettings.php를 위키의 초기 세팅 웹 페이지가 하라는 대로 하면서(단 확장 기능 설정까지 추가로 하는 경로로 해야 합니다) 받는 작업을 합니다. DB명은 기존 서버와 동일하게 설정하는 걸 권장하지만 반드시 DB명이 같아야 할 필요는 없어서 새 서버에 CUI로 DB를 옮길 때 파라미터로 어느 DB에 옮길지 추가로 명시한다면 상관 없습니다.
  7. SQL 서버에 계정 정보 등이 든 sql 파일을 통째로 쿼리로 보냅니다.
  8. DumpBackup.php를 사용하되, --no-updates 옵션을 꼭 주고 문서를 이식해야 합니다.
    1. 해당 옵션을 주지 않고 덤프 이식을 하면 링크 테이블 갱신이 병행되어 RAM 부족으로 서버가 강제 종료될 수 있습니다.
  9. images 폴더의 압축본을 새 폴더에 푼다음, importImages.php로 가져오되, --search-recursively 옵션을 줍니다.
  10. 이제 rebuildtextindex.phprebuildrecentchanges.php를 실행합니다.
  11. 그 다음 refreshLinks.php를 실행하되 반드시 다음과 같이 실행합니다.
> php refreshLinks.php --e (x+1500) -- x
  1. 여기서 x는 문서 ID로, 위 명령어는 1500개의 문서를 대상으로 문서 ID x부터 x+1500까지 링크 테이블을 갱신합니다. 이 작업은 잘못하면 서버 크래시를 낼 정도로 RAM을 엄청나게 소모하기 때문에 반드시 x를 0부터 1500개 단위로 늘리면서 반복적으로 실행하여야 합니다.

이제 사용자 그룹(user, autoconfirmed, sysop, bureaucrat 등)에 기능 권한을 적절히 추가로 세팅하면 위키 이주가 완료됩니다. 그 이후에는 common.js나 가젯 등에 있는 외부 연결 URL 등을 구 서버로 연결되는 것을 새 서버로 연결되도록 수정하면 됩니다.