ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • VPS OS 변경 (CentOS Stream 8 to Debian 11)
    IT,컴퓨터/서비스,웹,소프트웨어 2023. 4. 29. 11:00
    하단 광고는 티스토리가 임의 삽입하여 노출되고 있습니다
    728x90

    2021년 하순에 CentOS 8에서 Stream 8로 이관한 뒤[당시 글 보기] 1년 반 정도 잘 쓰고 있었습니다.

    근데 제가 용감하게도 한달에 한번 전체 패키지 업데이트를 했단 말이죠.

    그러던 어느 정기 업데이트날 아침, WireGurad(VPN) 가 먹통이 됩니다.

     

    이걸 작업한 당시는 운 좋게도 시간이 많이 나던 때였습니다.

    덕분에 이관을 마음먹은 이후 변환작업과 테스트에 여유가 있었네요.

     

    들어가기에 앞서, 제 서버는 외부로 웹서비스를 제공하지는 않습니다. (DB, VPN, ffmpeg in Docker) 이 점 우선 참고하시고..

    본문에는 CentOS Stream 8에서 Debian 11로 이관하며 바꾸거나 적용한 OS 셋팅 같은걸 정리했습니다.

     

    아래에는 기기 캡쳐 이미지 3장이 쓰였으니 참고하시고,

     

    더보기

     

     

    -- 목  차 --

    누르시면 바로 이동합니다.

     

    1. 변경하게 된 계기 및 OS 선정 이유

    2. 사전 준비작업

    3. 변경작업

     

     

    1. 변경하게 된 계기 및 OS 선정 이유

    가장 큰 이유는 WireGuard의 지원 종료입니다.

     

    호스트OS(CentOS Stream 8) 에 WireGuard 패키지를 설치하다 나는 에러를 살펴보니,

    redefinition of ktime_get_coarse_boottime_ns 같은 메시지가 있었습니다. compat.h:394 같은 메시지도.

     

    조금 검색하다가 WireGuard 레딧 커뮤니티에서 이런 내용을 찾았습니다.

     

    wireguard-dkms not installing/running on CentOS Stream 8, throws compilation error "redefinition of ktime_get_coarse_boottime_ns" from r/WireGuard

     

    아래에 달린 답글 내용까지 종합하면,

    WireGuard Github 소스에 CentOS 지원 버전을 체크하는 수정사항이 반영되었고, 그 이후부터 미지원 버전이면 설치가 차단되는 흐름.

    위 답글에서는 로컬의 소스를 수정해서 결국 빌드를 한 모양이지만, 저는 이보다 시간이 더 지난 뒤라 그런가 이 방법도 통하지 않았습니다.

     

    저처럼 WireGuard를 Docker 로 구동시키더라도 호스트OS에 WireGuard 모듈이 설치되지 않으면 실질적으로 컨테이너에선 아무 동작도 못하더군요.

    결국 Stream 으로 전환하고 그 공격적 레포지토리를 수시로 업데이트한 결과, 필수 기능 패키지의 조기 단종을 일찍 적용한 겁니다.

    Stream의 성격을 생각하면 납득이 안가는건 아니죠. 제가 생각이 짧았습니다.

     

     

    전환할 OS는 Debian과 Ubuntu를 고민했습니다.

    최종적으로 Debian을 선택한 이유는 아무래도 stable 선택시 누릴 수 있는 패키지 안정성이었습니다. Stream 도입 전 CentOS 처럼.

    Ubuntu 쪽을 선택했으면 LTS 5년이라 지원 종료를 여유롭게 고민해도 됐을텐데(Debian은 LTS 3년, 정보보기),

    자체적으로 체크리스트도 있겠다.. 한두번 해보면 두려움도 없어지는 법이라.

    아, 그래도 전체 패키지 업데이트 주기는 2개월에 한번으로 좀 기간을 벌렸습니다.

     

    아무튼 방향이 정해졌으니 준비를 해 봐야겠네요.

     

     

    2. 사전 준비작업

    제 경우는 서버 셋팅시 모든 작업과정을 텍스트 파일로 메모하고 있습니다.

    이런 목적으로 만든 서버들은 특정 패키지가 필요하거나 하니까요.

    나중에 또 처음부터 부딛혀가며 나아가는건 너무나 시간낭비라서.

     

    덕분에 이번 준비과정도 이 텍스트 파일을 기반으로 단순히 명령어 변환하고(바뀔 OS에서도 같은 목적으로 작동하게),

    셋팅 조건과 비슷한 Hyper-V 가상머신에 Debian 11을 설치해서 실행해가며 최종 정리했습니다.

    대부분은 그대로 적용됐습니다만, 변경된 부분이 조오금 더 많았던 듯.

    의외로 필요 없어진 작업도 있었고, 필요해진 작업도 있었고.

     

    아래는 이 과정에서 바꾼 것들입니다.

     

    a. Shebang (인터프리터) 변경(/bin/sh -> /bin/bash)

    CentOS Stream에서는 /bin/sh 이 bash의 심볼릭 링크였고, Debian에서는 /bin/sh 이 dash 의 심볼릭 링크였습니다.

    처음 시험삼아 기존의 shell 을 기동시키니 문법 에러가 발생했는데, 위 사실을 확인하고 선언부 shell을 bash로 변경.

    덕분에 녹음/녹화작업 기동 스크립트는 선언부 외엔 손 댈 부분이 없었습니다.

     

    b. debian apt repository 체크

    이 부분은 debian 이미지 제공환경에 따라서 해당사항이 없을 수 있습니다.

     

    테스트용 VM 설치 당시에는 홈페이지에서 설치 이미지(ISO)를 다운로드 받아 진행했는데, 이 경우라면 해당됩니다.

    이후 VPS 제공처인 conoha 에서 제공하는 debian 이미지를 사용할 때엔 해당사항 없었는데,

    이렇게 서비스 제공자가 따로 제공하는 OS 이미지가 있다면 해당사항 없을 겁니다.

     

    ISO에서 설치를 진행하면, apt 실행시 인터넷이 아니라 처음 설치를 진행한 ISO이미지에서 패키지 정보를 가져오려 합니다.

    인터넷이 가능한 환경이라면 위의 소스를 넣어 온라인 레포지토리를 사용하도록 해 줍니다.

     

    c. 그 외 작업

    이 부분은 그 이후에 진행한, 자잘한 작업들을 나열합니다.

     

    일단 명령어 단순 변환. 왼쪽이 CetnOS 8 Stream, 오른쪽이 Debian 11 입니다.

    텍스트 에디터: vi/vim -> nano

    패키지 관리: yum/dnf -> apt/apt-get

     

    그리고 Docker 사용 등으로 그냥 root 계정을 메인으로 쓰고 있는데, 그래서인지 부팅 초기 프로세스 중 환경변수가 누락되어 설치된 패키지를 못가져오는 문제가 생기더군요.

    그래서 아래와 같이 추가해준 부분이 있습니다.

     

    최종적으로는 계정별 선언 파일을 통해 환경변수를 다시 잡던데, 이걸 하면 부팅 초기의 에러메시지는 안뜰 겁니다.

    그리고 그 이외에 'Debian으로 옮겨오며 추가로 한 설정'까지 같이 정리해 둡니다.

     

     

    이렇게 간단히 환경을 구성하고, 지역제한이 없는 서비스(초A&G!+ 등) 의 경우는 테스트 녹화까지 완료.

    적당히 녹음작업 적은 날을 골라 결전의 날을 맞습니다.

     

     

    3. 변경작업

    제 경우는 메인 작업경로를 만들고 그 하위에 모든 파일이 위치하고 있었기에 정리는 편했습니다.

    굳이 옮겨오지 않아도 되는 것들은 지우고, 설정파일 위주로 백업한 뒤 서버 종료.

     

    위 설정화면은 제가 이용중인 VPS 서비스, conoha의 웹 관리 콘솔.

    먼저 셋팅하고 2년 가까이 지났다니 새삼 시간 잘 가네요.

     

    이후엔 덮어씌울 이미지 OS를 선택하고, 거의 root 비밀번호만 입력해주면 서버 초기화 과정이 끝납니다.

     

    체감상 완료 누르고도 서버 접속 가능까지 15분인가 걸리긴 했는데, 제가 설정하면 그것보단 오래 걸릴테니.

    특정 제공업체의 서버를 이용하면 이런 부분이 참 편하게 와닿습니다.

    이 기능으로 초기화 하는 데에 확인 팝업이 없는건 조금 의외였지만요. 물론 이 화면을 실수로 들어오진 않겠지만(...)

     

    아직은 제가 원하는 셋팅이 안되어있기도 하고, 일단 VPS에서 바로 콘솔을 열어 서버를 둘러봤습니다.

    그리고 SSH 같은 기본적인 설정만 한 뒤, 이후엔 편하게 정리한 스크립트를 붙혀넣기 위해 Kitty 로 SSH 접속.

     

    이 타이밍에 제가 서버 셋팅시 하는 작업을 뭉뚱그려 정리했습니다.

    이 과정이 전체는 아닌데, 궁금하면 둘러보시길.

     

     

    모두 '이걸 빠뜨렸더니 저게 안되네' 하면서 탄생한 목록입니다.

    ..아무튼 별거 없긴 해도 대략 OS 설정 관련으론 이런 작업들을 합니다.

    제 일손을 덜어줄 자잘한 관리기능(로그/작업파일 정리 등) 같은것도 자동화되어 있고.

    자잘한 관리기능을 자동화하지 않으니 스스로 번거로워지더군요(...)

     

     

    이번 글은 여기까지.

     

    이렇게 하루정도 작업해서 다음날부터 바로 라디오 녹화작업 재개됐고, 현재는 평소처럼 사용중입니다.

    처음부터 다들 걱정하는 Stream 같은게 아니라 Debian으로 왔어야 됐나 후회도 하지만, 이렇게 글감을 얻었으니(?)

    그래도 시간 날때 이런 일이 발생해서 참 다행...이라 생각합니다.

     

     

    아마 프로덕션급에선 참고하실 내용이 없겠지만, 이렇게 서버 굴리고 있네요.

     

    남은 연휴 재밌게 보내시고, 저는 대체공휴일인 월요일에 글 하나 더 들고 오겠습니다.

    조금 이르지만 4월 마무리 잘 하시길. 곧 뵙지요.

    댓글

Designed by Tistory.