오늘 아침 워드프레스에 접속해 보니 6.6 업데이트가 있어서 업데이트를 클릭했습니다. 그런데 시간이 조금 지나 “설치 실패”라는 내용이 보이더군요. 등에서 식은 땀이 났습니다. 보통 이런 경우 사이트 접속이 되지 않는 것을 몇 번 경험을 했기 때문입니다. 이 글에서는 AWS Lightsail에서 워드프레스 업데이트 설치에러로 사이트 접속이 안될 경우 긴급 해결 방법 긴급 해결 방법에 대해 알아보겠습니다.
AWS Lightsail에서 워드프레스 업데이트 설치에러로 사이트 접속이 안될 경우 긴급 해결 방법
오늘 아침 워드프레스 6.6 업데이트가 실패하면서 사이트가 접속되지 않는 긴급 상황이 발생했습니다. 얼굴에서는 열이 나고 등에서는 식은 땀이 나더군요. 워드프레스 플러그인으로 백업은 해 두었지만, 워드프레스 자체가 접속이 안 되니 그것도 사용할 수 없었기 때문입니다. Lightsail SSH 터미널을 통해 어떻게든 문제를 파악해서 빨리 해결해야 한다는 생각밖에 들지 않았고 다행히 1시간 정도 걸려 긴급히 복구하는 데 성공했습니다. 복구하는 데 집중하는 바람에 화면 캡처 등을 생각할 겨를이 없어 그림보다는 글로 설명을 많이 해야 할 것 같습니다.
저는 이 글에서 설명한 방법으로 복구를 하였으나, 모든 상황에 100% 효과가 있다고 말씀드릴 수는 없습니다. 따라서 적용전에 반드시 기존 파일들을 백업해 두시길 바랍니다.
1. 어떤 에러가 발생하는지 파악하기
가장 먼저 해야 할 일은 Lightsail 메인 화면에서 ‘>_’를 클릭하여 SSH 터미널을 실행한 후 다음 명령을 입력해 WordPress 디렉토리에 있는 wp-config.php를 연 후, 아래 그림과 같이 define( 'WP_DEBUG', true );
를 찾아 define ( 'WP_DEBUG', true);
으로 변경한 후 키보드에서 Ctrl+X
→ y
를 클릭하여 저장합니다.
nano wp-config.php
위와 같이 한 후 브라우저에서 사이트에 접속했더니, 아래와 같은 에러가 발생하는 것을 알 수 있었습니다. 지금 생각해도 식은 땀이 흐르네요.
뭔가 엄청난 에러 같지만 이런 에러는 대부분 일부 파일이 제대로 업데이트되지 않았거나 손상되었을 때 발생합니다.
Fatal error: Uncaught Error: Class "WP_REST_Revisions_Controller" not found in /opt/bitnami/wordpress/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php:17 Stack trace: #0 /opt/bitnami/wordpress/wp-settings.php(285): require() #1 /bitnami/wordpress/wp-config.php(192): require_once('...') #2 /opt/bitnami/wordpress/wp-load.php(50): require_once('...') #3 /opt/bitnami/wordpress/wp-blog-header.php(13): require_once('...') #4 /opt/bitnami/wordpress/index.php(17): require('...') #5 {main} thrown in /opt/bitnami/wordpress/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php on line 17
Fatal error: Uncaught Error: Call to a member function set() on null in /opt/bitnami/wordpress/wp-includes/l10n.php:856 Stack trace: #0 /opt/bitnami/wordpress/wp-includes/l10n.php(959): load_textdomain() #1 /opt/bitnami/wordpress/wp-includes/class-wp-fatal-error-handler.php(49): load_default_textdomain() #2 [internal function]: WP_Fatal_Error_Handler->handle() #3 {main} thrown in /opt/bitnami/wordpress/wp-includes/l10n.php on line 856
2. 긴급 복구하기
① 워드프레스 소스코드 다운로드 받기
문제를 어느정도 파악을 했으니 이제 긴급 복구를 해야 합니다. 먼저 워드프레스에서 제공하는 소스코드를 다운로드받아야 합니다. 아래 사이트로 접속한 후
branches
→ 6.6
으로 이동합니다. (저는 6.5.5에서 6.6으로 업데이트할 때 실패했기 때문에 6.6을 선택한 것이고, 여러분께서는 업데이트하려고 했던 버전을 선택합니다)
설치 실패했던 버전으로 이동한 후, wp-content
를 제외한 나머지 파일을 모두 다운로드 받습니다. 이 때 wp-admin
과 wp-includes
는 .zip 압축파일로 다운로드 됩니다.
② 다운로드 받은 파일로 기존파일 덮어쓰기
워드프레스 소스코드를 다운로드받은 뒤, FTP로 해당 파일을 모두 WordPress 디렉토리로 업로드합니다. 이때 원본을 모두 덮어쓰기하되, wp-config.php
는 덮어쓰기 하면 안 됩니다.
만약 권한 문제로 인해 wordpress 디렉토리로 upload가 되지 않는다면, 초기 디렉토리에 다운로드한 후 mv 명령어를 사용하여 wordpress 디렉토리로 이동시킵니다.
AWS Lightsail 인스턴스 관리를 위한 필수 리눅스 명령어 25가지
FTP로 AWS Lightsail 서버에 파일 업로드하기
이후부터는 화면설명이 부족할 수 있습니다. 이유는 서두에서도 말씀드렸듯이 워드프레스에 접속할 수 있도록 복구하는데 집중하였기 때문에 화면 캡처를 하지 못했습니다. 그렇더라도 최대한 쉽게 설명드리도록 하겠습니다.
위의 과정이 문제없이 진행되었다면 wordpress 디렉토리에 있는 파일은 모두 덮어 쓰기가 되었기 때문에, 압축파일로 업로드한 wp-admin
과 wp-includes
을 압축 해제하도록 하겠습니다.
WordPress 디렉토리에서 wp-admin과 wp-includes 디렉토리를 old로 변경합니다.
sudo mv wp-admin wp-admin.old
sudo mv wp-includes wp-includes.old
기존에 있던 디렉토리를 old로 변경한 후 다음과 같이 wp-admin.zip와 wp-includes.zip를 압축 해제합니다.
sudo unzip wp-admin.zip
sudo unzip wp-includes.zip
③ 권한 변경하기
WordPress 디렉토리에 있는 파일과 wp-admin, wp-includes 디렉토리를 덮어쓰기 했기 때문에 권한을 변경해 줘야 합니다.
아래 명령어를 순서대로 실행합니다.
sudo find /opt/bitnami/wordpress -type d -exec chmod 755 {} \;
sudo find /opt/bitnami/wordpress -type f -exec chmod 644 {} \;
sudo chmod 660 /opt/bitnami/wordpress/wp-config.php
sudo chown -R daemon:daemon /opt/bitnami/wordpress
sudo chmod 755 /opt/bitnami/wordpress/wp-content
sudo chmod -R 775 /opt/bitnami/wordpress/wp-content/themes
sudo chmod -R 775 /opt/bitnami/wordpress/wp-content/plugins
모든 작업이 완료되었습니다. 이제 워드프레스에 다시 접속해 보시기 바랍니다. 위의 과정을 모두 적용했는데도 워드프레스 사이트에 접속이 되지 않는다면, 최악의 상황으로 제가 말씀드린 해결책으로는 문제 해결이 되지 않습니다. 이럴 경우에는 안타깝지만 보다 전문적인 업체에 문의를 하거나, 초기화 후 다시 시작하는 방법밖에 없을 것 같습니다.
④ 복구순서 정리
위에서 설명드린 과정을 정리하면 아래와 같습니다.
- 먼저, WordPress 하위에 있는 모든 파일을 FTP를 활용하여 로컬PC에 백업합니다.
- FTP나 SSH를 통해 WordPress 설치 디렉토리에 접속합니다.
- wp-content 폴더를 제외한 모든 WordPress 코어 파일을 삭제합니다 (또는 old로 변경합니다).
- 새로운 WordPress 6.6 버전을 다운로드하고, 압축을 푼 다음 wp-content 폴더와 wp-config.php 파일을 제외하고 서버에 업로드합니다.
- 권한을 파일은 664, 폴더는 755로 설정합니다.
다시 한번 강조하고 싶은 점은, 이 방법이 모든 상황에서 완벽한 해결책이 되지는 않는다는 것입니다. 따라서 이 방법을 적용하더라도 사이트가 복구되지 않을 가능성이 있습니다. 그런 경우에는 사이트를 초기화하거나 전문적인 복구 서비스를 제공하는 업체의 도움을 받아야 할 수도 있습니다.
오늘은 AWS Lightsail에서 워드프레스 업데이트 설치에러로 사이트 접속이 안될 경우 긴급 해결 방법에 대해 알아보았습니다. 이 방법은 파일이 제대로 업데이트되지 않았거나 손상되었을 경우 대응 방법입니다. 이 방법으로도 해결이 되지 않을 경우에는 전문적인 업체를 통해 해결을 해야 합니다. 이런 문제가 발생하기 전에 가능하면 백업을 받아두는 것을 적극 권장드립니다.