본문 바로가기
미디어위키

Restoring MediaWiki

by 다움위키 2023. 12. 9.

Upgrading Mediawiki from Git OR Snapshot에서 언급한 것처럼, 미디어위키 1.31에서 미디어위키 1.32.0-wmf.22 이후의 버전으로 업데이트를 시도하면, 테이블 업데이트가 된 후에 개정 테이블에 문제가 발생하여, 대부분의 페이지를 표시하지 못합니다. 개정 테이블을 수정하는 방법이 있으나, 대부분의 문서에서 문제가 발생하기 때문에 수작업으로 이를 행하는 것은 엄청난 시간이 필요할 것으로 판단이 되었습니다. 한편, 스크립트 등을 이용하는 다른 방법이 있을 듯해 보이지만, 기존의 자료를 찾을 수 없었고, 새롭게 작성하기에는 많은 시간이 소모될 것으로 판단했습니다.

어쨌든, 여기서는 마지막 개정만을 최근의 미디어위키로 옮기는 방법을 소개하고자 합니다.

dumpBackup.php

먼저 미디어위키 1.31.1에서, 마지막 개정만 백업합니다.

  • cd /var/www/html/w
  • php maintenance/dumpBackup.php --current > ~/dump.xml

이렇게 백없하면 그림이나 파일 연결이 되지 않습니다.

  • php maintenance/dumpBackup.php --current --include-files --uploads > ~/dump.xml

이와 같이 백업하면 해결이 될 것으로 기대했지만, 여전히 그림과 파일의 연결이 되지 않습니다. 여전히 별도로 업로드 후에 연결을 해야 합니다. 또한, 이렇게 했을 때, 파일을 전부 포함하기 때문에, 파일 크기가 비교할 수 없을 만큼 커집니다.

그리고 디렉토리를 백업합니다.

  • cd ..
  • sudo mv w w-1.31.1

Install mediawiki

Upgrading Mediawiki from Git OR Snapshot를 참조해서, 미디어위키를 설치합니다. 그래야 현재 해당 미디어위키에 맞는 데이터베이스 테이블이 만들어지기 때문입니다. 그리고 이전 버전으로부터 필요한 파일들을 가져옵니다.

  • cd /var/www/html/w
  • sudo rm -rf images cache
  • sudo cp -a ../w-1.31.1/images .
  • sudo cp -a ../w-1.31.1/cache .
  • sudo cp -a ../w-1.31.1/LocalSettings.php .
  • sudo cp -a ../w-1.31.1/robots.txt .
  • sudo cp -a ../w-1.31.1/composer.local.json .
  • php maintenance/update.php

이 단계에서 필요한 확장과 변경된 확장에 대해 설치를 완료해야 합니다.

importDump.php

이제 텍스트 파일을 복원합니다.

  • cd /var/www/html/w
  • php maintenance/importDump.php ~/dump.xml

위에서 파일에 대한 정보를 포함하도록 덤프를 했을 때, 업로드가 이루어지기를 희망하면서, 다음과 같이 시도해 보았으나, 여전히 연결 정보가 생기지 않았습니다.

  • sudo php maintenance/importDump.php ~/dump.xml

필요한 정보를 새롭게 만들어 줍니다.

  • php maintenance/rebuildrecentchanges.php
  • php maintenance/initSiteStats.php --update

그림과 파일 정보는 별도로 업로드해야 합니다.

  • sudo php maintenance/importImages.php ../w-1.31.1/images
  • sudo php maintenance/importImages.php ../w-1.31.1/images/0 --search-recursively

0부터 시작해서 f까지 16개 디렉토리는 하위 디렉토리를 포함해서 찾아서 업로드해야 합니다.

  • sudo php maintenance/importImages.php ../w-1.31.1/images/timeline --search-recursively

그 외의 디렉토리가 있지만 업로드를 해야 하는지 정확히 판단이 되지 않는 것이 있습니다.

archive, deleted, thumb

모든 작업이 완료되도록 해야 합니다.

  • php maintenance/runJobs.php

Troubleshooting

다음 확장은 다시 설정해야 합니다.

외부 라이브러리의 업데이트가 필요한 확장들이 있습니다. 해당 확장 디렉토리로 이동한 후에 다음 명령을 내립니다.

  • sudo composer update --no-dev

Flow, Elastica, TemplateStyles, Wikibase, WikibaseLexeme