Last Updated on 2025-08-10 by BallPen
구글 클라우드 플랫폼에서 워드프레스 서버 이전 방법을 알아 봐요.
워드프레스 서버 이전 방법을 말씀드립니다. 즉, 워드프레스가 운영되는 서버를 바꾼다는 의미에요. 서버를 바꾸는 이유는 운영체제가 오래 되었거나 서버 하드웨어가 낡았거나 등의 여러 이유가 있을 수 있어요.
저는 이 블로그를 구글 클라우드 플랫폼에서 워드프레스로 운영해왔어요. 그런데 블로그를 시작한 지 3년이 넘으면서 인스턴스 운영체제가 오래되어 업데이트를 계속 해주어야 했는데요.
문제는 업데이트를 하는게 생각보다 쉽지 않았어요. 업데이트하다가 에러가 나서 멈추기도 하고 그랬어요. 특히 php를 업데이트 하라고 알림이 뜨곤 했는데 버전이 너무 낮아 계속 실패하는 거에요.
그래서 이 기회에 최신 운영체제를 갖춘 서버로 갈아타자고 결심을 했어요. 즉 구글 클라우드 플랫폼에서 최신 운영체제를 갖춘 인스턴스를 생성하고 워드프레스 DB와 관련 파일들을 이전하면 되는 거에요.
말은 쉽지만 실제 해보니 여러 난관들이 있었어요.
그래서 제가 겪은 경험을 기록으로 남기고자 이 글을 작성합니다. 부디 워드프레스 서버를 이전하는 분들에게 조금이라도 도움이 되기를 희망합니다.
Contents
1. 워드프레스 서버 이전 준비
저는 구글 클라우드 플랫폼에서 인스턴스를 만들어 워드프레스를 운영해왔는데요. 운영체제가 너무 오래되어 업데이트 유지에 어려움이 많았어요.
그래서 새로운 인스턴스를 만들고 DB와 업로드 파일을 옮기는 워드프레스 서버 이전을 하기로 마음을 먹었어요.
1-1. 업드래프트플러스(UpdraftPlus) 플러그인으로 구형 서버에서 DB 백업 받기
구형 인스턴스에서 운영되던 워드프레스의 DB는 약 330MB 크기였습니다. 그리고 업로드 파일이 약 19GB 정도 되는 상황이에요.
통상의 블로그 치고는 DB 크기도 크고 업로드 파일도 작지 않죠.
이정도 크기면 phpmyadmin에서 DB 백업은 가능할지라도 복원은 불가능합니다. 왜냐면 DB가 너무 커서 처리할 수 없다며 에러를 출력하면서 복원을 중단해 버려요.
그래서 저는 phpmyadmin 대신에 업드래프트플러스(UpdraftPlus) 플러그인으로 DB 백업과 복원을 하기로 결정했어요.
물론 이 플러그인을 이용하면 업로드 파일도 백업하고 복원하는 것이 가능해요. 그런데 엄청나게 많은 백업 파일이 생겨나서 시간이 많이 걸려 이 기능은 사용하지 않기로 했어요. 사실 저의 경우 파일 오류 때문에 복원에 실패한 것도 한 이유에요.
그래서 DB 백업만 업드래프트플러스 플러그인으로 하고 업로드 파일은 구형에서 신형 인스턴스로 직접 파일 전송하는 방식을 채택하기로 결정했습니다
워드프레스 이전을 위한 첫 단계로 구형 인스턴스에서 업드래프트플러스 플러그인으로 DB를 백업 받으세요. 클라우드에 백업 받아도 되고 로컬 컴퓨터에 다운로드 받아 놓으셔도 됩니다.
그리고 나중에 복원할 때 사용해야 하니 파일을 잘 보관하고 계셔야 해요.
1-2. 컴퓨터 슬립모드 중지하기
저처럼 DB와 업로드 파일 규모가 크면 인스턴스와의 ssh 접속 시간이 엄청 오래동안 유지되어야 해요. 그런데 요즘 컴퓨터는 마우스나 키보드 조작이 없으면 절전 슬립 모드로 들어가면서 ssh 터미널 접속을 강제 종료해 버립니다.
이렇게 되면 워드프레스 이전 작업이 자꾸 중단되어 버려요.
MAC 컴퓨터의 경우 암페타민 등의 앱을 사전에 설치해서 키보드나 마우스 조작이 없더라도 ssh 터미널이 계속 유지될 수 있도록 준비해 두시기 바랍니다.
왼도우즈 컴퓨터도 적당한 대책을 꼭 마련하시기 바랍니다.
2. 신형 인스턴스 구축하기
2-1. 운영체제와 하드웨어 구성
구글 클라우드 플랫폼에서 워드프레스를 이전할 신형 인스턴스를 만드세요.
저는 리눅스 debian 12, CPU는 e2 small 규격의 제품을 선택했어요. 디스크 크기는 50GB, 디스크 종류는 표준영구디스크로 선택했습니다.
여러분의 워드프레스 규모에 따라 적절히 선택하시기 바랍니다.
2-2. 워드프레스 등의 소프트웨어 설치
신형 인스턴스를 만드셨으면 이제 소프트웨어를 설치해야 합니다. 워드프레스가 운영되기 위해서는 워드프레스 뿐만 아니라, 아파치 웹서버, maria DB, phpmyadmin 등의 프로그램이 있어야 해요.
하나씩 설치 요령과 명령어를 말씀드릴게요. 아참, 이를 위해서는 신형 인스턴스로 ssh 접속이 가능해야 합니다. 접속 요령은 링크를 참고하세요.
신형 인스턴스로 ssh 접속이 이루어지면 apt 업데이트와 업그레이드를 실행합니다.
sudo apt-get update
sudo apt-get upgrade
이제 아파치 서버를 설치합니다
sudo apt-get install apache2
sudo apt-get install php libapache2-mod-php php-mysql
여기까지 작업이 끝나면 터미널에서 php -v를 입력해 보세요. 그러면 설치된 php 버전을 알 수 있습니다. 저의 경우 php8.2가 설치되더라구요.
이제는 maria DB를 설치합니다.
sudo apt-get install mariadb-server
그리고 보안 설정을 위해 아래 명령어를 입력하세요.
sudo mysql_secure_installation
위 명령어를 실행하면 DB의 root 패스워드를 입력하라고 나옵니다. 입력하시고 잘 적어놓으세요. 아울러 몇가지 선택을 해야 하는데 저는 Remove anonymous user? Y, Disallow root login remotely? N, Remove test database and access to it? Y, Reload privilege tables now? N를 선택했습니다.
위 과정을 마쳤으면 이제 워드프레스를 설치합니다. 워드프레스 사이트에서 최신 버전을 받으면 됩니다. 아래 명령어를 사용하시면 돼요.
wget https://wordpress.org/latest.tar.gz
그리고 다운된 워드프레스 압축 파일 latest.tar.gz을 아래 명령어로 /var/www/폴더로 이동시키세요.
sudo mv ~/latest.tar.gz /var/www/
그리고 /var/www/에서 아래 명령어로 압축을 풉니다.
sudo tar -xzvf latest.tar.gz
이렇게 되면 /var/www/폴더에 압축이 풀리면서 wordpress 폴더가 생성되는데요. 이 폴더의 이름을 html로 변경해 주세요.
sudo mv wordpress html
이제는 홈디렉토리에서 phpmyadmin을 설치해야 합니다. 최신 버전을 확인하신 후 아래 명령어를 참고해서 다운받으세요.
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.zip
그리고 다운로드 된 압축파일, 예를 들어 phpMyAdmin-5.2.2-all-languages.zip 을 아래 명령어로 풀어줍니다. 이때 unzip이 설치되어 있지 않다면 “sudo apt install unzip” 명령어로 unzip를 먼저 설치하세요.
sudo unzip phpMyAdmin-5.2.2-all-languages.zip
그리고는 압축이 풀려진 phpMyAdmin-5.2.2-all-languages 폴더의 명칭을 phpmyadmin으로 변경합니다.
mv phpMyAdmin-5.2.2-all-languages phpmyadmin
그리고 phpmyadmin 폴더를 아래 명령어를 이용해 /var/www/html/ 폴더 안으로 이동시켜주세요.
sudo cp -r phpmyadmin /var/www/html
3. GCP marketplace에서 배포용 워드프레스 인스턴스 생성 후 DB 파일 얻기
이 단계는 작은 크기의 임시 DB 파일을 얻기 위한 단계입니다.
GCP 대시보드로 들어가 보시면 Marketplace 메뉴가 있는데요. 그곳에서 wordpress를 검색하세요. 그러면 아래 [그림 1]의 배포용 워드프레스를 볼 수 있을 거에요.
![[그림 1] Marketplace의 배포용 워드프레스](https://ballpen.blog/wp-content/uploads/2025/07/1.jpeg)
Launch를 클릭하면 사전 설정된 사양대로 워드프레스 인스턴스가 하나 만들어지게 됩니다. phpmyadmin의 내보내기로 임시 DB 파일만 얻고 금방 삭제할 용도이니 너무 고민하지 마시고 그냥 만드시면 됩니다.
배포용 워드프레스 인스턴스가 만들어지면 “인스턴스외부ip/phpmyadmin”을 브라우저에 입력하세요. 그러면 phpmyadmin 로그인창이 나올거에요. 로그인하시면 되는데요.
그런데 아마도 로그인 계정을 모르실거에요. 이 경우 배포용 인스턴스를 종료한 후 인스턴스 명을 클릭해서 아래쪽으로 내려보시면 Custom metadata(또는 맞춤 메타데이터) 정보가 보일거에요. 거기서 “mysql-root-password”가 보일텐데요. 이것이phpmyadmin 비밀번호입니다. 아이디는 root라고 입력하시면 돼요.
그리고 wordpress-admin-email과 wordpress-admin-password도 꼭 적어 놓으세요. 나중에 필요합니다.
이제 인스턴스를 재시작하여 phpmyadmin에 로그인하세요.그리고 DB 데이터 내보내기(export)를 하시기 바랍니다.
그러면 localhost.sql이라는 파일을 내려받을 수 있어요. 이것이 나중에 사용할 임시 DB 파일이니 잘 보관하시기 바랍니다.
4. 업로드 파일 이전 및 복원하기
이제 구형 인스턴스에서 /var/www/에 있는 html 폴더를 신형 인스턴스로 복사하면 돼는데요. 저의 경우 약 10시간 가량 걸리는 긴 작업이었어요.
먼저 로컬컴퓨터에서 구형 인스턴스로 ssh 접속은 가능한 상황일거에요. 문제는 구형 인스턴스에서 신형 인스턴스로 scp 파일 전송이 가능하도록 ssh가 설정되야 한다는 거에요.
이를 위해서는 구형 인스턴스에서 신형 인스턴스로 접속할 때 사용할 ssh 인증서를 만들어야 합니다. 구형 인스턴스의 홈디렉토리에서 아래 명령어를 사용해 my_key.pem이라는 인증서를 만드세요.
ssh-keygen -t rsa -b 2048 -m PEM -f my_key.pem
그리고 생성된 공개키를 복사합니다. 아래 명령어를 입력한 후 인증서를 마우스로 드래그하여 복사하세요.
cat my_key.pem.pub
그리고 복사한 키를 신형 인스턴스의 ssh 메타데이터에 붙여넣기하세요. 이렇게 하면 구형 인스턴스에서 신형인스턴스로 ssh접속이 가능하게 됩니다.
그리고 신형 인스턴스의 브라우저 ssh에서 adduser 명령어로 계정을 하나 만듭니다. 여기서는 elise라는 계정을 만들었다고 가정 할게요.
4-1. SCP로 html 폴더 전송 시작
그러면 준비는 모두 끝났습니다.
이제부터 scp로 구형 인스턴스에서 신형 인스턴스로 html 폴더를 전송하면 됩니다. 구형 인스턴스에서 아래의 명령어를 사용하세요. 이때 10.127.0.11은 신형 인스턴스의 내부접속 ip를 뜻합니다. 외부ip를 사용해도 되지만 내부아이피를 사용하는게 전송 속도가 더 빨라요.
sudo scp -i ~/.ssh/my_key.pem -r -p /var/www/html elise@10.127.0.11:~/
업로드 파일 규모가 크면 전송되는데 몇 시간이 걸릴 수도 있어요. 아무튼 계속 기다리면 언젠가는 끝납니다.
4-2. SCP로 html 폴더 전송 종료 후
SCP 전송이 모두 끝나면 구형 인스턴스에서 신형 인스턴스로 ssh 접속을 해보세요. 그리고 elise 계정의 홈디렉토리를 보면 html 디렉토리가 들어와 있는 것을 볼 수 있을 거에요.
elise 계정으로 전송받았으니 html 디렉토리의 소유권이 elise로 되어 있어요. 소유권을 elise에서 www-data로 바꾸어야 해요. 아래의 명령어를 사용합니다. 만일 이 절차를 진행하지 않으면 추후 플러그인 설치할 때 정상적인 경우와는 달리 ftp credentials을 묻는 창이 나타날 수 있어요.
sudo chown -R www-data:www-data /home/elise/html
4-3. 스냅샷으로 백업하기
여기까지 하셨으면 이제부터 신형 인스턴스를 스냅샷으로 백업을 받아둡니다. 언제라도 문제가 되면 현 시점으로 되돌릴 수 있으니까요.
4-4. 구형 인스턴스 종료하기
신형 인스턴스 스냅샷을 받아 놓았다면 본격적으로 업로드 파일 복원을 시작하기 전에 구형 인스턴스를 종료합니다.
그러면 외부에서 지금부터 블로그 접속을 할 수 없게 되요. 그런데 만일 구형 인스턴스를 종료하지 않으면 신형인스턴스와 redirect 무한루프에 빠져버릴 수 있어요. 이렇게 되면 구글에서 두 인스턴스를 모두 불능상태로 만들어 버려요. 조심해야 합니다.
아무튼 이제부터 블로그 외부 접속이 안되니 최대한 서둘러 이전을 마무리하셔야 합니다. 만약 서버 이전에 실패한다면 언제든지 구형 인스턴스를 재시작 함으로써 외부 접속을 재개할 수 있으니 너무 걱정하지 않아도 됩니다.
4-5. 업로드 파일 복원하기
elise 홈디렉토리의 html 폴더로 들어가 보세요. 그러면 phpmyadmin 디렉토리가 있을텐데요. 이 디렉토리를 삭제합니다.
왜냐면 우리는 이미 /var/www/html/에 phpmyadmin을 새로 설치했기 때문에 구형의 phpmyadmin을 사용할 필요가 없어요. 아래 명령어로 삭제합니다.
sudo rm -r phpmyadmin
홈디렉토리의 html 폴더 내에서 다음 명령어를 사용하여 모든 파일을 /var/www/html/폴더로 이동시킬거에요. 사전에 깨끗한 복원을 위해 /var/www/html/폴더에서 phpmyadmin을 제외한 모든 파일과 디렉토리를 미리 제거해 놓는 것도 좋은 방법일 듯 합니다.
sudo mv * /var/www/html/
이 작업이 끝난 후 /var/www/html/ 디렉토리로 가보시면 모든 파일들이 옮겨진 것을 알 수 있어요. 이렇게 하면 일단 업로드 파일에 대한 복원은 끝난 것으로 보시면 됩니다.
5. DB 복원하기
이제 업드래프트플러스 플러그인을 통해 백업받아놓았던 DB만 복원하면 됩니다.
5-1. wp-admin 접속하기
이를 위해 ‘신형인스턴스외부IP/wp-admin’을 브라우저에 넣어 보세요. 하지만 아쉽게도 접속이 안됩니다. 다음의 에러를 만나게 될거에요.
![[그림 2] 신형 인스턴스의 wp-admin으로 들어가려고 하면 에러가 발생하며 접속이 안됩니다.](https://ballpen.blog/wp-content/uploads/2025/07/2-1024x184.jpeg)
에러가 발생하는 이유는 DB 복원이 되지 않았기 때문이에요. 이를 위해서는 약간의 꼼수가 필요한데요. 일단 ‘신형인스턴스외부IP/phpmyadmin’을 입력해보시면 로그인 창이 나올거에요.
여기서 단계 2-2에서 적어놓았던 phpmyadmin 비밀번호를 이용해 로그인합니다. 아이디는 root입니다. 그리고는 import 메뉴에서 단계 3에서 만들어 두었던 임시 DB 파일 localhost.sql 파일을 import 시키세요.
그러면 임시 DB 파일이 복구된 거에요. 이 작업이 종료되면 이번에는 브라우저에서 ‘신형인스턴스외부IP/wp-admin’을 입력해 보세요. 놀랍게도 접속이 되면서 어떤 창이 열릴텐데요. next 누르면 다음 화면이 보일거에요.
![[그림 3] wp-admin 활성화를 위한 초기 화면](https://ballpen.blog/wp-content/uploads/2025/07/Screenshot-2025-07-13-at-10.35.28-AM-1024x875.jpg)
위 화면에서 Database Name에는 wordpress, User Name에는 root, Password에는 단계 2-2에서 적어놓았던 phpmyadmin 비밀번호를 입력합니다. Database Host에는 localhost라고 입력하세요. Table Prefix는 기본값으로 그냥 두시면 됩니다.
Submit 버튼을 눌러 더 진행하시면 wp-admin 로그인 창을 보실 수 있을거에요. 그런데 무슨 계정으로 로그인 하는지 궁금할 텐데요. 바로 단계 3에서 적어두었던 wordpress-admin-email과 wordpress-admin-password를 사용하면 됩니다.
그러면 로그인이 될거에요.
5-2. 업드래프트플러스 플러그인으로 DB 복원하기
비로소 워드프레스 관리자 창 wp-admin으로 들어오게 된거에요.
제일 먼저 플러그인 메뉴에서 업드래프트플러스 플러그인을 설치하셔야 해요. 플러그인 설치가 끝나면 단계 1-1에서 백업받아두었던 DB 파일로 복원을 실행하시기 바랍니다.
그러면 DB가 복원 될 거에요.
그리고 기억으로는 복원이 끝나면 wp-admin 로그인 창이 다시 열렸던 것으로 기억해요. 이때 로그인 계정은 DB가 복원되었으므로 구형 인스턴스에서 사용하던 wp-admin 계정으로 접속하셔야 합니다. 단계 3에서 적어두었던 wordpress-admin-email과 wordpress-admin-password를 사용하면 로그인이 안됩니다.
5-3. 소소한 작업 들
첫 번째, https 접속이 가능하도록 https 인증서를 발급 받습니다. https 인증서 설치 방법을 참고해 certbot 홈페이지에서 안내된 절차대로 진행하시면 됩니다. certbot 홈페이지에서 저는 Software에 Apache, system에 Linux(snap)를 선택했습니다.
두 번째, 외부에서 블로그 접속이 일단 이루어지도록 phpmyadmin으로 접속하셔서 wordpress \(\rightarrow\) wp_options에서 ‘siteurl’과 ‘home’의 ‘option_value’를 모두 https 도메인 명으로 교체하셔야 합니다. 즉 저의 경우 ‘https://ballpen.blog’ 로 바꾸면 되는 것이죠. 앞으로 phpmyadmin 접속 계정은 단계 2-2에서 적어놓았던 phpmyadmin 비밀번호를 이용해 로그인하면 됩니다. 아이디는 root입니다.
세 번째, wp-admin으로 들어와서 플러그인을 모두 활성화하고 소소한 설정들을 원래대로 복구하시면 됩니다. 이제 워드프레스 이전 작업이 모두 끝난 거에요.
네 번째, 사실 이것은 중요한 문제에요. 모두 복구한줄 알았는데 블로그에 접속할 때 404 not found error가 발생하는 경우가 있어요. 이럴 경우 다음 절차를 순차적으로 진행하시기 바랍니다.
sudo nano /etc/apache2/apache2.conf
그러면 파일이 하나 열리는데요. 그 내용 중에,
«Directory /var/www/>
Options Indexes FollowSymLinks
Allow0verride None
Require all granted </Directory>
을 아래와 같이 바꾸고 저장합니다. 빨강색 글씨만 바꾸면 됩니다.
«Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted </Directory>
바뀐 사실을 아파치에 알리기 위해 다음명령어를 입력하세요.
sudo alenmod rewrite
그리고 아파치를 재 시작합니다.
sudo systemctl restart apache2
6. php8.2를 8.4로 업데이트 하기
신형 인스턴스로 모두 이전이 끝난 후 한숨 돌리고 있는데요. 워드프레스에서 다음의 알림이 뜨더라구요. php 8.0이 너무 오래돼서 8.2로 바꾸었더니 8.2도 업데이트가 필요하다는 내용입니다
![[그림 4] php8.2도 업데이트가 필요하다고 나옵니다.](https://ballpen.blog/wp-content/uploads/2025/07/Screenshot-2025-07-14-at-5.09.58-AM-1024x231.jpg)
지금까지 이전하느라고 거의 일주일동안 잠도 못자고 이제서야 마무리되었는데 php를 또 업데이트하라니 하늘이 노래지는 거에요.
그런데 다행히도 8.2는 8.0보다는 비교적 최신버전이다보니 업데이트가 순조롭게 되는 거에요. 그래서 php8.4로 업데이트 했습니다.
관련 명령어는 다음과 같아요.
sudo dpkg -1 | grep php I tee packages .txt
sudo apt install apt-transport-https
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update
sudo apt install php8.4 php8.4-cli php8.4-{bz2,curl,mbstring,intl}
sudo apt install php8.4-fpm
sudo a2enconf php8.4-fpm
sudo a2disconf php8.4-fpm
sudo apt purge php8.2*
지금까지 구글 클라우드 플랫폼에서 대용량의 DB와 업로드 파일을 가진 워드프레스를 새로운 인스턴스로 교체하는 워드프레스 서버 이전 작업에 대해 설명드렸습니다.
7. swap 공간 만들기
서버의 메모리가 충분하다면 문제가 없겠지만 저와 같이 메모리가 작은 경우에는 swap 공간을 만들어 두는게 좋습니다.
만일 swap 공간을 만들지 않으면 서버가 갑자기 다운되어 버리는 현상이 나타납니다. swap 공간 만드는 요령은 링크를 클릭하세요.






