도커를 이용하여 제로보드 환경 구성하기
HTTPD 2.2.0 + MYSQL 4.0.27 + PHP 4.4.7 설치를 향한 발버둥
뜬금없이 제로보드가 왠 말이냐고 할 수 있지만 나는 10년 전통을 자랑하는 제로보드 기반의 커뮤니티 사이트를 운영하고 있다.
제로보드 자체가 오래되었고 그 서버 환경 자체도 노후되어 몇 가지 보안을 위한 보수를 해놓은 상태지만 여전히 불안한 상황이었고 보안, 유지 보수와 같은 모든 측면에서 그다지 좋은 환경은 아니기 때문에 새로운 환경에 새로운 게시판 형태로 리뉴얼을 준비하고 있다.
그렇게 작업을 진행하면서 몇 가지 고민이 생겼다.
기존의 글을 어떻게 할 것이냐의 문제였는데 기존의 글의 양이 DB 백업 기준 2.5기가를 넘어가고 있었고 새로 구축하고 있는 사이트의 게시판 스키마와는 전혀 맞지가 않은 형태를 띄고 있어서 한 서버안에 유지하는 형태를 결정하게 되었다.
이미 구입을 해서 테스트를 진행중인 서버의 환경을 다운그레이드 할 순 없으니 이참에 도커를 활용해보자는 결정을 하게 되었고, 여러번 실패를 거듭하여 현재는 성공했다.
도커로 설치를 위한 나의 전략
설치해야 할 환경은 HTTPD 2.2.0 / PHP 4.4.7 / MYSQL 4.0.27 이었다. (이하 APM 이라고 부르겠다.)
우선 docker hub에서 동일한 환경을 구축해서 이미지를 배포하고 있는 사람이 있는지 확인을 하였는데 아쉽게 조금씩 부족했다. 제일 근접했던 이미지가 nouphet/docker-php4라는 이미지였는데, MYSQL이 4.0 버전대가 아니라 4.1 버전대였다.
제로보드의 경우 password 체계가 4.0 때 16바이트 암호화를 하였지만, 4.1때 부터 41바이트 암호화를 하게 되었고, 아이러니하게도 보안적인 측면이 더 좋아졌지만 기존의 환경에서 벗어나면 유지 보수 비용이 더 많이 들 것으로 판단되었기 때문에 포기하였다.
(방법은 존재한다. old_password로 로그인하였을 경우 새로운 암호 규정에 맞게 바꿔주면 된다고 한다. 하지만 그에 발생할 버그 등을 감안하면 시간 비용이 많이 든다고 판단했다.)
도커를 활용하여 환경을 설정할 때 이미 오래된 APM 버전을 패키지 관리 툴로 설치해줄만한 운영체제는 없다고 판단하였고 직접 컴파일 할 수 밖에 없다고 생각했다.
그리고 시작된 좌절..
그 즉시 centos나 ubuntu 공식 이미지 중 적당히 오래된 녀석들을 내려받아(centos 5, ubuntu 12.04) 작업을 진행했는데 문제가 발생되었다.
문제의 대부분의 원인은 64비트 라이브러리로는 오래된 APM 버전을 컴파일 할 수가 없는 문제(…)가 발생한 것이다.
몇몇분들은 이 문제를 해결하는 방법으로 해당 OS의 패키지 관리 기능으로 해당 OS 내 최신 APM을 설치를 우선 한 뒤, 해당 버전을 막고 컴파일해서 진행하는 식으로 작업을 하기도 했는데 손이 많이갔다.
이대로 포기해야하나.. 하고 고민하고 있었던 그때 centos 5 i386 버전 이미지들을 발견하게 되었다. (왜 처음부터 발견하지 못했나…)
이후 순탄한 작업
선택하게 된 이미지는 alanfranz/centos5-i386 이고, 이를 통해서 작업하게 되었더니 순탄하게 작업할 수 있었다.
해당 버전들의 APM 파일은 슈퍼유저 ftp에서 구할 수 있었고 컴파일 과정은 많은 블로그들을 보며 참조하였다.
기회가 된다면 한번 정리해서 Dockerfile로 만들어서 배포할 예정이다. 다만 이 버전대를 사용하지 않는 걸 권장한다….
결론
지금 실제 커뮤니티를 도커로 옮겨서 서비스 중이진 않지만 내부 테스트를 해본 결과 정상적으로 잘 작동하고 있으며, 호스팅 비용 절약을 위해서 조만간 서버 이전을 마칠 생각이다.
그래도 되도록이면 하루 빨리 제로보드에서 벗어나라는게 결론..
이번에 많이 느낀 점은 도커 이미지도 그렇고 깃헙의 오픈 소스도 그렇고 검토와 판단을 잘 해야 작업 속도가 빨라진다는 걸 경험하게 된 것 같다. 나는 아직 그럴 수준이 안되고..
많은 경험만이 안목을 키울 수 있지 않나 생각한다.