안수찬 블로그

워드프레스 서버 이전 작업에 대한 기록

Introduction

안수찬 @dobestan

안수찬 @dobestan

서울대학교에서 컴퓨터공학을 전공하고, 오랜 기간 서비스 기획 및 개발을 해 왔습니다. 이러한 전문성을 인정받아 미래부 소프트웨어 마에스트로에 선정된 바 있습니다. 현재는 모바일 방송국, 퍼스트캔버스에서 컨텐츠로 새로운 가치를 그리고 있습니다. 나는 안수찬이다. 그러므로 나는 할 수 있다. me@ansuchan.com


wordpress

워드프레스 서버 이전 작업에 대한 기록

Posted by 안수찬 @dobestan on .
Featured

wordpress

워드프레스 서버 이전 작업에 대한 기록

Posted by 안수찬 @dobestan on .

2년 전에 워드프레스로 엄청나게 많은 사이트를 찍어내고 난 이후부터는 워드프레스는 다시는 안하기로 다짐을 했었지만, 어쩔 수 없는 경우에는 사용을 하게 된다. 예를 들면, 상당히 좋은 조건의 대기업 외주가 있다던가, 돈을 많이 주는 외주가 있다던가, 꿀인 외주가 있다던가... 혹은 주변에 훌륭하신 분들이 부탁을 하게 되면 간단한 작업이면 도와드리고 있다.

이번 작업은 내가 대학교 신입생 때 진짜 아무것도 모르는 상태에서 많은 도움을 주시고 내가 진로를 결정하는데 큰 도움을 주신 지도교수님께서 워드프레스 기반의 연구실 홈페이지 이전 작업을 부탁하면서 진행을 한 내용인데, 내 스스로도 처음 작업해본 내용들이 있고 기록해두면 다음에 편할 것 같아서 기록해둔다.

개요

윈도우 8 ( 연구실 개인 PC ) 에서 워드프레스가 돌아가고 있었다. 심지어는 오전에는 업무용으로 사용하고 있는 PC에 설치되어 있었다. 이걸로 인해서 발생하는 많은 문제가 있었다. 사실 훨씬 이전에 문제가 발생되었어도 이상할게 없는 구성으로 돌아가고 있었지만, 학계 사이트인 만큼 사용자수도 일반 서비스랑은 다르게 적어서 돌아가고는 있는 상태였다.

  • 학외에서는 ( 말 그대로 학교 밖도 포함하고, 해외는 물론이다. ) 엄청나게 느린 접속 문제
  • 내가 이전 작업을 하면서 관리자 페이지에 접근할 수 없는 문제 ( 정책상 )
  • 컴퓨터가 종료되면 ... 물론 종료하지 않고 사용하기는 했다. 윈도우8 인데!!!

그래서, 이 문제를 해결하기 위해서 학내 업무용 PC 보다는, 외부 클라우드 서비스를 사용하는 것에 대해서 ( 아마존 웹 서비스, MS Azure, 카페24, 응? 등 ) 제안을 드렸었고, 최종적으로는 교수님께서 AWS EC2 로 선택을 하셔서, 이전 작업을 시작하게 되었다.

기존 해결책들의 문제점

  • 기존에 있는 많은 글들을 찾아봤었는데, 주로 플러그인들을 통해서 해결하는 과정이였다. 관련해서는 정말 많은 플러그인이 있으니 한번 찾아보면 좋을 것 같다.
  • 다만, 나의 경우에는 적합하지 않았던 이유가 무료 플러그인들을 사용하다보니 제약 조건들 ( wp-contents 용량 제한, db dump 용량 제한 등 ) 이 있었고, 사이트내에 꽤 많은 ( 10GB+ ) 미디어가 포함되어 있어서 무료 플러그인들로는 해결할 수 없없다.

기존 알려진 문제점들보다는 쉬웠던 부분

이 부분은 기존 많은 관련 글들에서 나오는 문제점들보다는 쉽게 해결할 수 있었다. 즉, 서버를 이전하면서 도메인이 이전되는 경우가 있을 수 있는데 ( 예, Before: blog.ansuchan.com / After: dobest.io ) 이 사이트의 경우에는 도메인이 변경되지 않아서, 그대로 데이터베이스 덤프를 통해서 해결할 수 있었다.

만약, 이렇게 도메인이 변경되는 경우라면, 다음과 같이 해결할 수도 있다:

1. sql 내에서 처리하는 방법

UPDATE wp_options SET option_value = replace(option_value, 'OLDURL', 'NEWURL') WHERE option_name = 'home' OR option_name = 'siteurl';  
UPDATE wp_posts SET guid = replace(guid, 'OLDURL','NEWURL');  
UPDATE wp_posts SET post_content = replace(post_content, 'OLDURL', 'NEWURL');  
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'OLDURL', 'NEWURL');  

2. sed 를 이용하는 방법

나는 데이터베이스/sql 에 대해서 이해도가 높은 편은 아닌 것 같아, 그리고 SQL 보다는 워낙 sed 같은 커맨드들이 익숙해서 그냥 이 방법으로 작업을 할 것 같다.

$ sed -ie 's/OLDURL/NEWURL/g' backup.sql

너무 쉽게 끝나서 잠재적인 문제점들이 있을수도 있을 것 같은데, 혹시 알고 계신 분이 있다면, 공유해주시면 감사하겠습니다.

내가 진행한 이전 방법

  • 어차피 1 instance 위에다가 돌릴 서버였기 때문에 ( 그래도 충분한 사이트이고 ) 간단하게 Ubuntu 설정해서 LEMP Stack 으로 구성했다.
  • 워드프레스도 초기 설치하는 것 처럼 최신 stable 버전으로 설치했다.
  • wp-contents 는 그대로 이전했다.
    • 혹시 다른 더 편한 방법이 있을까 고민했지만, 압축해서 복사하는 것 이외에 다른 더 좋은/편한 방법이 떠오르지 않아서 그냥 그대로 이전했다.
  • 그리고 데이터베이스만 이전하면 되는 상황에서 문제가 발생했다.
# 윈도우 명령 프롬프트 ( cmd ) 상태
> mysqldump
> "mysqldump" 은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

기존 리눅스 환경에서는 바로 mysqldump 하면 해결되는 문제였는데, 윈도우의 경우에는 기본 PATH 에 mysql/bin 폴더가 포함되지 않아서 mysqldump 명령어가 실행되지 않았다.

# 윈도우 명령 프롬프트 ( cmd ) 상태
> cd ~/Program Files/MySQL/MySQL Server/bin/
> mysqldump -u USER_NAME -p DATABASE_NAME > backup.sql
# 새로운 서버로 들어온 상태 ( Ubuntu )
> mysql -u NEW_USER_NAME -p NEW_DATABASE_NAME < backup.sql

마무리하며

나도 2년 정도만에 워드프레스 작업을 해서 사실 익숙하지 않은 부분들이 많았다. 확실히 특정 사이트들에 대해서는 최적화된 솔루션인 것 같다는 생각이 다시금 들었다. 간단한 문제들이였는데, 생각보다 시간이 많이 소요된 것 같아서 아쉬움이 남기는 한다. 다음에 동일한 작업이 있다면 조금은 빠르고 정확하게 해결할 수 있을 것 같다.

또한, 사이트의 기능 개선이나 자동화된 태스크들을 생성해두면 조금 더 나은 구성이 되지 않을까 생각을 한다. 특히나,

  • 자동으로 데이터베이스 백업하기 ( + AWS S3 )
  • 미디어를 S3 로 이동하고, CloudFront 를 이용해서 static serving 하도록 수정하기 ( 요새는 플러그인도 워낙 잘 되어 있어서 바로 되더라. )
  • 다음 이전 작업은 조금 편하도록 미리 셋팅을 잘 해두기

정도는 꼭 완성해서 문서화를 시켜두면 좋을 것 같다는 생각을 한다.

References

안수찬 @dobestan

안수찬 @dobestan

https://ansuchan.com/

서울대학교에서 컴퓨터공학을 전공하고, 오랜 기간 서비스 기획 및 개발을 해 왔습니다. 이러한 전문성을 인정받아 미래부 소프트웨어 마에스트로에 선정된 바 있습니다. 현재는 모바일 방송국, 퍼스트캔버스에서 컨텐츠로 새로운 가치를 그리고 있습니다. 나는 안수찬이다. 그러므로 나는 할 수 있다. me@ansuchan.com

View Comments...