Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

블로그 호스팅 서버 이전

이번에 블로그를 다른 서버로 이전했다. 기존에는 PHP 웹호스팅을 이용했고 2004년부터 줄곧 같은 업체를 이용하고 있었지만 (내 기억이 맞다면) 그 사이에 운영회사도 한번인가 바뀌었는데 PHP 4.4로 운영하면서 5는 전혀 지원계획이 없다는 얘기를 듣고 작년 가을쯤에 호스팅 업체를 갈아타기로 맘을 먹었다. 이 업체가 계속 호스팅을 적극적으로 할려고 하는지도 의문이었고... 결심하고 곧 이전할 생각에 2-3개월씩만 연장을 하면서 귀차니즘에 거의 1년가까이 이전을 못하고 있었다. 최근에는 같은 서버에 뭔 서비스가 들어왔는지 수시로 디비에서 랙이 걸려서 모니터링으로 UptimeRobot을 이용하고 있는데 2-3일에 한번씩은 속도가 느려져서 블로그가 다운되었다는 알림이 오는 상황까지 이르러서 귀차니즘을 이겨내고 이전작업을 진행했다.

작년에 코로케이션서버를 이용하면서 원래는 블로그도 코로케이션 서버로 이동하려고 했지만 아무래도 코로케이션 서버에는 이것저것 설치해서 테스트해보다 보니 지속적으로 서비스하는 블로그를 같이 운영하기에는 좀 불안해서 다른 호스팅 업체를 찾고 있었다. 하지만 최근에 지인들의 추천으로 DigitalOcean을 알게되서 도저히 거부할 수 없는 놀라운 스펙과 가격에 호스팅업체 대신에 직접 운영하기로 선택하고 디지털 오션으로 갈아탔다.

주말내내 작업했는데 여러가지로 업그래이드를 하다보니 이전 작업이 꽤 힘들었다.

  • 디지털오션에 서버를 신청하니 1분내에 셋팅을 했다. 아무 생각없이 우분투 13.04를 선택하고(12.04를 선택하는게 나았을지도) PHP를 설치했더니 5.4가 설치되었다.(PHP 개발자가 아니라 PHP는 잘 모른다.)
  • 내 서버에서는 기존에 XE로 거의 방치상태인 홈페이지와 텍스트큐브기반의 블로그를 운영하고 있었다.
  • 블로그가 훨씬 중요했기에(홈페이지는 상황안되면 버릴수도...) 텍스트큐브를 먼저 설치했다.(MySQL은 5.5.29)
  • 처음에는 최신 안정버전인 텍스트큐브 1.8.6을 설치했다. 약간의 오류를 해결해가면서 설치는 무사히 했지만 관리자 페이지가 오류가 나면서 접속이 안되었고 이는 PHP 5.4가 제대로 지원되지 않아서 발생된 문제로 보였다.
  • 그래서 5.4를 지원한다는 텍스트큐브 1.9 베타6를 다시 설치했다. 오류가 꽤 발생했는데 검색해가면서 소스를 약간 수정하니 무사히 설치를 할 수 있었고 관리자 페이지도 정상이었다.
  • 이제 XE 설치에 들어갔다. XE는 하위호환성 유지가 엉망이라 과거에 업그래이드하면서 스킨을 매번 재작업해주는 고통을 겪은뒤로는 업그래이드를 잘 안했기 때문에 기존에는 1.4.4를 사용하고 있었고 최신 버전은 1.7.7이었고 PHP 5.x라고 써있었지만 역시나 제대로 지원하지 않았다.
  • XE를 설치하면서도 코드를 꽤 수정했는데 정확히 잘 기억이 나지 않는다. 정리해두었더라면 좋았겠지만 당시에는 그럴만한 여유가 없었다.
  • XE 설치를 완료하고 XE는 설정을 이전해 주지 않기 때문에 기존의 설정을 보면서 새로 설정했다. 관리자페이지가 많이 달라져서 헷갈렸지만 XE에서는 대부분의 메뉴관리를 그냥 스킨을 통해서 했기 때문에 기본 설정은 어느정도 할 수 있었다. 데이터를 다 이전하고 보니 댓글이 이전되지 않는 버그가 있어서 수정하고 다시 이전을 하고 일부 게시판은 마이그레이션도구로 제대로 데이터가 다 받아지지 않아서(할때마다 용량이 다르다.) 여러번 시도해서 겨우 데이터를 다 이전했다. 일부 위젯이나 자질구레하게 안돌아가는게 있었지만 크게 중요하지 않으므로 그냥 무시하고 패스했다.
  • 이제 가장 중요한 데이터인 블로그의 데이터를 이전해 올 차례였다. 텍스트큐브는 데이터 및 설정을 하나의 XML로 거의 전부 내려주기 때문에 내려받은 XML로 이전을 시도했는데 잘 되지 않았다. 기존에는 업로드(이건 용량크면 거의 되지 않는다.), 서버에 올려놓는 방식, URL로 가져오는 방식 3가지가 있었는데 1.9에는 서버에 올려놓는 방식이 없어서 URL로 가져오는 방식을 시도했는데 계속 실패했다. 해당 소스를 열어보닌 소스상으로는 3가지 방식이 다 있어서 소스를 직접 수정해서 서버의 올려진 파일을 이용하도록 했더니 정상적으로 데이터를 복원할 수 있었다.(참고로 아주 작은 용량이 아니라면 첨부파일을 포함하지 않은 XML만 복구하고 attach폴더는 FTP로 올리는게 훨 낫다.)
  • 1.9에서는(1.8에서도 마찬가지일지도) 1.7.8에서 사용하던 일부 플러그인은 제대로 동작하지 않고 그중 일부는 사용하기로 하면 500에러가 발생하는 경우가 있으니 하나하나 테스트하면서 플러그인을 설정해야 한다.
  • 1.9에서는 WYSIWYG 에디터로 tinyMCE가 기본으로 붙어있는데 이게 제대로 동작을 하지 않는다. 뭔 문제인지 상단에 아이콘도 안나타나고 일단 이게 있으면 파일첨부에 업로드버튼이 나타나질 않는다. Xquared 에디터(스프링노트시절 좋아하던 에디터였는데)도 있는데 이것도 동작하지 않는다. tinyMCE는 꺼지지도 않으므로 plugins 폴더에서 삭제해 주어야 한다.
  • 어차피 WYSIWYG 에디터가 없어진 관계로 이번 기회에 마크다운으로 갈아타기로 했다. 문서를 항상 마크다운으로 작성하기 때문에 글도 마크다운으로 쓸 수 있다면 여러가지 이점이 많다. 기존에 있는 마크다운 플러그인에서 마크다운 변환라이브러리를 Github Flavored Markdown을 지원하는 php-markdown-extra-extended로 갈아치웠다.(신텍스 하일라이트를 위해서 소스코드에 언어를 지정하기 위해서...) 그리고 코드 하일라이트는 기존의 글도 정상적으로 보여주어야 하므로 마크다운 라이브러리가 코드용으로 생성하는 마크업을 코드하일라이트가 지원하도록 수정했고 기타 마크다운으로 변환되는 스타일도 적절하게 변환되도록 스타일을 수정했다.
  • DNS를 디지털 오션으로 변경하고 나니 나는 5-6시간 지나니까 접속이 가능했고 유입자가 생기는걸 보니 사람들도 DNS 변경의 적용이 되고 있는듯 하다. 기존의 서버에 댓글등이 올라오면 곤란하기에 어제 자정부로 기존의 블로그는 접속되지 않도록 내려버렸다.
  • 오늘 지인분이 페이징이 제대로 안된다고 해서 보니 URL이 잘못들어가고 있는데 이건 아무리봐도 어디서 문제인지 잘 모르겠어서 그냥 임시로 문자열을 변환해서 처리되도록 변경해버렸다.

막상 쓰고 보니 과정이 무척 길다.. 작업할 때도 힘들어서 몇번이나 포기하고 싶었지만 겨우 참아냈다. 기존과는 다음의 사항이 변경되었다.

  • 웹서버로 Apache 대신 Nginx를 사용한다. 최신 안정버전인 1.4.1이다.
  • PHP 연동은 php-fpm을 사용했다.(잘은 모르지만 이게 좋다는것 같길래...)
  • PHP 5.4를 사용한다.
  • MySQL 5.5를 사용한다. MySQL 연결방식으로 MySQL과 MySQLi 중에서 고르게 되어 있던데 MySQLi가 더 좋다는것 같던데 여러 문제를 겪던 도중 더 새로운 문제는 만들고 싶지 않아서 그냥 MySQL을 사용했다.
  • 웹호스팅이 아닌 가상서버를 사용한다. 그러므로 웹호스팅처럼 다른 서비스때문에 내 블로그도 느려질 염려는 없다. 대신 보안을 직접 신경써야 한다.(누가 털진 않겠지 ㅠㅠ)
  • 서버는 샌프란시스코에 있다.(응?)
  • 이제 Flavored Markdown으로 블로깅을 할 수 있게 됐다.(아자!)

기존에는 그냥 블로그를 wget으로 측정했을 때 0.05초 정도가 나왔고 크롬개발자도구로 특정 글이 로딩되는 속도를 측정하면 3.2초 안팎이 나왔다.(심도있는 테스트는 아니다.)

크롬 개발자도구로 속도를 측정한 화면

이전 후에 측정해 보니 wget으로 측정하면 0.9초정도가 나오고 크롬 개발자 도구로 측정하면 4.5초 안팎이 나왔다.

크롬 개발자도구로 속도를 측정한 화면

서버사양, nginx도입, 텍스트큐브 버전업 등으로 상당한 속도 향상을 기대했지만 실제로는 오히려 떨어졌는데 페이지 로딩 그래프에서 보듯이 이는 서버가 샌프란시스코에 있기 때문에 물리적인 네트워크 접속시간에 상당한 시간이 소요되는 것으로 보인다.(1.9에서 서버캐시가 제대로 동작안하는것 같기도 하고...) 하지만 기존 호스팅의 속도는 상당히 양호할 때 측정한 것으로 속도가 시시각각 들쭉날쭉했기 때문에 원활한 속도를 보여주는 이전후가 체감상으로는 훨씬 쾌적하다. 자질구레하게 1.9에서 손보아야 할 것들이 좀 있기는 하지만 무사히 블로그서버를 이전해서 맘의 큰 짐을 던 듯하다.

덧) 결론... 아직 쓴지 몇일 안되었지만 디지털오션 정말 짱이다... 코로케이션 걷어버리고 이쪽으로 갈아타는게 나을지도... ㅡㅡ;;

덧2) 블로그의 시대가 끝났다는 구글의 입장(?)에 전혀 동의 못하는 입장으로써 텍스트큐브는 정말 아쉬운 프로젝트다. 블로깅툴로써의 완성도 면에서는 오픈소스로 원활히 진행된 면에서나 국내에서 내노라 할만한 오픈소스 프로젝트라고 생각한다. 정말 워드프레스와도 견줄만한 도구라고 생각하는데 국내에서 블로그붐이 꺼지면서 프로젝트도 급격히 기울게 된 것같아서 너무 아쉽다. 그래도 느리게나마 조금씩 개선해 나가는데 응원을 보내지만 예전의 활발했던 모습이 생각나면서 한켠으로 아쉬움이 크다.(텍스트큐브 관련도 글을 한번 쓰고 싶을정도인데 ㅠㅠ) 얼마전 Github로 운영하면서 간간히 커밋이 올라오고 있는 것을 보면서 PHP만 아니라면 공헌하고 싶을 정도다..(PHP를 몰라서.. ㅠ) 일단 프로젝트가 어떻게 흘러가고 있는지 분위기라도 살펴보고...

2013/06/03 23:07 2013/06/03 23:07