그누보드 docker 로 Migration 시도 – 일단 실패

오늘은 최근에 겪었던 기술적인 도전, 그 중에서도 그누보드를 Docker 환경으로 마이그레이션하려던 시도에 대해 이야기해보려고 합니다. 여러분과 이 경험을 공유함으로써 비슷한 과제에 직면한 이들에게 도움이 되었으면 좋겠습니다.

워드프레스는 Docker 가 잘되어 있어서, 워드프레스를 잘 참고하면 될 것 같습니다. 결론적으로 저는 성공하지 못했지만, 쉽지는 않을것 같습니다. 이미 성공해서 사용하고 계시는 우성짱님과 마젠토님등이 계십니다. 저는 한 서버에서 사이트를 여러개 운영하고 있고 제가 업무에 사용하는 구글클라우드의 GKE에 올려보고 싶은 욕심이 있습니다

커뮤니티 서비스를 운영하면서 하드 드라이브가 가득 차는 문제에 부딪혔습니다. 서비스가 눈에 띄게 느려져, VM의 RAM을 8GB로 확장하고, 기존 서버는 MySQL 전용으로 사용하기로 했습니다. 또한 동일한 사양의 새 웹 서버에 Docker를 이용해 그누보드를 컨테이너화하여 운영할 계획을 세웠죠.

Google Cloud가 익숙해서 사용하고 싶었지만, Fully managed Database 옵션은 비용이 부담되었습니다.

https://cloud.google.com/sql?hl=en

서버를 처음 구축 할 때는 Cloud 가 좋겠지만 저의 경우에는 홈서버가 있어서 추가 비용이 들지 않습니다. 전기료는 저전력 서버를 몇년 째 켜두어서 실제로 체감되는 부분은 신경쓰지 않겠습니다. 현재 Nginx, PHP-FPM, MriaDB 가 71 번 서버에 구성되어 있고 이 서버에 DB만 유지 하려고 합니다. 이 서버의 용량은 SSD 200G 입니다. 이전 시킬 Web 서버의 용량은 백업을 고려해서 조금 넉넉하게 잡았습니다. 그리고 Google Drive 에 Mount 시킬 예정입니다.

현재 보시는 이미지의 WAS의 IP는 71번, Ubuntu 서버는 215번의 IP를 가지고 있습니다.

;;; 그로 인해 Window Server는 ;; RIP…

아키텍쳐 개요

  • 71번 서버는 현재 Nginx, PHP-FPM, MariaDB로 구성되어 있고, 이 서버는 DB만 유지할 예정입니다. 이 서버의 SSD는 200GB입니다.
  • 215번 서버는 새로 구성할 서버로, 다음과 같이 계획했습니다.
# 215번 서버 : 새롭게 구성할 서버
[인터넷]
    |
    | :80, :443 (SSL)
[Nginx 컨테이너] -- 리버스 프록시 설정
    |    └── (도메인별로 다른 PHP-FPM 컨테이너로 라우팅)
    |
    ├── [PHP-FPM 컨테이너 1] -- 그누보드1 (domain1.com)
    |
    ├── [PHP-FPM 컨테이너 2] -- 그누보드2 (domain2.com)
    |
    └── [PHP-FPM 컨테이너 3] -- 그누보드3 (domain3.com)

# 71번 서버 : 현재 하드 Full 난 서버 
[MySQL 서버] -- 외부 서버 (192.168.0.xx)

단순하게 생각해 본 그림은 이렇다 docker로 그누보드 까지 설치를 하고 현재 nginx 가 설정되어 있는 71 서버에 Revers proxy로 받아서 처리 한다음에 Migration이 완료되면 215 로 endpoint 로 변경할 계획입니다. 가까운 미래에 일 방문자가 몇 십만명이 되면 Auto Sacle 되는 환경도 구성하고 싶습니다. 그 쯤 되면 돈이 문제겠습니까? 하하하

Docker-compose

우선 하나의 그누보드만 테스트하기 위해 간단한 docker-compose.yaml 파일을 준비했습니다. 그리고 나서 여러 개의 컨테이너를 테스트할 예정이었습니다.

docker-compose.yaml

우선 1개만 테스트

version: '3'

services:
  web:
    image: php:7.4-apache
    volumes:
      - ./gnuboard1:/var/www/html
    ports:
      - "8001:80"
    restart: always
    environment:
      DB_HOST: 192.168.55.71  # 원격 DB 호스트 주소
      DB_USER: gnuboard1_user
      DB_PASSWORD: gnuboard1_password
      DB_NAME: gnuboard1

그 뒤에 여러개 TEST

version: '3.8'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /home/sundo/web-server/nginx/conf.d:/etc/nginx/conf.d
      - /home/sundo/web-server/hdbc/gnuboard1:/var/www/html/gnuboard1
      - /home/sundo/web-server/hdbc/gnuboard2:/var/www/html/gnuboard2
    networks:
      - gnuboard-network

  gnuboard1:
    image: php:8.0-fpm
    container_name: gnuboard1
    environment:
      - MYSQL_HOST=192.168.55.71
      - MYSQL_DATABASE=gnuboard1_db
      - MYSQL_USER=user1
      - MYSQL_PASSWORD=password1
    volumes:
      - /home/sundo/web-server/hdbc/gnuboard1:/var/www/html/gnuboard1
    networks:
      - gnuboard-network

  gnuboard2:
    image: php:8.0-fpm
    container_name: gnuboard2
    environment:
      - MYSQL_HOST=192.168.55.71
      - MYSQL_DATABASE=gnuboard2_db
      - MYSQL_USER=user2
      - MYSQL_PASSWORD=password2
    volumes:
      - /home/sundo/web-server/hdbc/gnuboard2:/var/www/html/gnuboard2
    networks:
      - gnuboard-network

networks:
  gnuboard-network:
    driver: bridge

그리고 이 블로그도 살포시

  wordpress:
    image: wordpress:latest
    container_name: wordpress
    depends_on:
      - mysql
    environment:
      - WORDPRESS_DB_HOST=mysql
      - WORDPRESS_DB_NAME=wordpress_db
      - WORDPRESS_DB_USER=wordpress_user
      - WORDPRESS_DB_PASSWORD=wordpress_password
    volumes:
      - wordpress_data:/var/www/html
    networks:
      - gnuboard-network

But….

하지만… 실패했습니다. 문제는 PHP 버전이었어요. 그누보드가 지원하지 않는 PHP 버전으로 인해 MySQL 연결 함수들이 작동하지 않았습니다. 설치 페이지까지는 잘 진행되었지만, MySQL 연결 오류가 발생했죠.

  1. PHP 버전이 높으면 그누보드에서 지원하지 않음
    PHP 버전에서 mysql 커넥션 함수들이 다 제거 되었습니다. ㅠㅠ
  2. 그누보드 설치페이지 까지 잘 갔는데 MYSQL Connetion Error 띠용
    너무 쉽게 생각했습니다.

Conclusion

결과적으로, 다른 일에 신경 쓸 것이 많고 피곤하기도 하여, 일단은 기존 서버의 RAM과 하드를 약간 확장하고 파일을 정리하는 것으로 마무리했습니다. 215번 서버는 여전히 건장해서, 생각날 때마다 테스트를 계속해볼 예정이지만, 너무 많은 시간을 투자하기는 어려울 것 같습니다.

할 일이 너무 많고, 큰 그림을 그릴 수는 있지만, 세부 사항까지 척척 해내는 ‘GPT 선생’ 같은 도우미가 있다면 얼마나 좋을까요? 아직 프롬프트 기술이 미숙해서 그런가 봅니다.

이 경험이 다른 분들께는 경고의 메시지가 되길 바라며, 마이그레이션을 계획 중이시라면 미리 충분한 테스트와 준비를 하시길 권장드립니다.

그럼 다음 번에는 성공기를 가지고 돌아올 수 있기를 희망하며 이만 글을 마칩니다.

감사합니다.

2 thoughts on “그누보드 docker 로 Migration 시도 – 일단 실패”

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top