42Seoul

Inception - Introduction (가상머신 환경)

millar 2024. 2. 21. 10:06

개요

드디어 Inception입니다. circle 4에 대한 과제 리뷰가 그동안 없었죠. miniRT과제를 제외하고는 설명할 것이 없다고 생각합니다. 그럼 왜 miniRT는 안 올리냐, 팀 프로젝트로 진행한 그래픽 과제인 miniRT는 제가 블로그에 서술하기에는 아직 완전히 학습했다고 판단하지 않아서 올리지 않았습니다. 마음속으로는 혼자 과제를 다시 풀어보려고 다짐하고 있고 그때 블로그에 올라갈 것 같네요. 언제가 될지 모르지만.

 

Inception은 Born2beroot의 보너스 과제를 "Docker"를 이용해 구현하는 것입니다. Born2beroot의 보너스에서는 WordPress와 mariaDB를 통해 웹 서버를 구성하고 추가적인 서비스를 선택해야 했으며 로컬에서 접속해 다뤄봤습니다. 과제에서는 각 서비스에 관한 Dockerfile을 구성해서 Docker Compose로 확장하여 웹 서버를 간단하게 구성할 수 있도록 하는 것이 목표입니다. 따라서 글을 세 부분으로 나누어 작성하려고 합니다. Introduction(가상머신 환경 설치, 웹 서버 구축) > Docker > Docker Compose 순서로 웹 서버를 구현하여 Docker가 어떤 의미를 가지는지, Docker를 사용하지 않는 수준부터 시작하여 Compose까지 진행하여 그 의미를 파악해 보겠습니다.

 

이번 글에서는 요구 조건을 본격적으로 수행하기 전에 가상머신을 설치하는 과정을 서술합니다. Born2beroot를 진행한지 꽤 되었으니 .기억이 나지 않을 수도 있지 않겠어요?

 

다만, Inception을 완전히 끝내고 작성하는 글이 아닙니다. 과제 부피가 꽤 크게 느껴져 미리 한번 털고 가려고 합니다. 보너스는 당장 다루지도 않을 거구요.


가상머신 설치

  • This project needs to be done on a Virtual Machine.  이 프로젝트는 가상 머신에서 수행되어야 합니다.

저는 IMac에 도커가 설치되어 있길래 이걸 이용하는 줄 알았는데 아니었습니다.

 

과제 요구사항대로 가상 머신을 세팅해 봅시다. Born2beroot와 마찬가지로 2가지의 운영체제 중, 하나를 선택하도록 권고하고 있습니다. Alpine 또는 Debian을 선택해야 하는데, 저는 익숙한 Debian으로 시작할 것이고, IMac 환경에서 진행하겠습니다. amd64로 다운로드 합니다. 버전은 Debian 12입니다. *과제에서는 최신 버전의 '이전 버전'을 사용하라고 합니다! (이 글에서는 최신 버전 12로 작성됐습니다.)

데비안을 얻읍시다.

 

데비안을 얻었으면 가상머신을 띄워 보겠습니다. VirtualBox를 실행하고 다음과 같이 자신의 goinfre에 데비안을 설치해주세요.

이미 존재하는 두 가상머신은 그냥 과제 연습용입니다.

이미지를 생략했지만 Ram은 8GB, Hard Disk는 10GB를 부여하면 되겠습니다. 기타 다른 설정은 정해진대로 넘어가세요

install

가상머신을 실행하고, 방금 얻은 데비안 12를 디스크 삽입합니다.

 

국가, 지역, 키 맵등은 미국으로 하고 넘어갑시다. 시간 설정도 마찬가지. 디스크도 분할하지 않고 하나의 파티션을 갖도록 하고, 대부분 설정을 넘깁니다. scan extra? additonal package? 이런 부분이 있는데 여기서는 yes를 눌러도 아무것도 되지 않더라구요. 어차피 패키지는 설치할 것이 없으니, no를 누르고 debian.org로 정해두세요. 인기 투표도 할 것인지 물어보긴 하는데 전 안할겁니다. 설치가 꽤 걸리는데 GRUB부트로더까지 확인하면 설치가 완료됩니다.

 

특별히 설정해줘야할 부분은 hostname, domain, user 그리고 software 설치입니다. 자신의 intraID를 사용하면 되겠죠.

SSH Server는 설치해주세요

설치가 완료되었으면 자신의 계정에 로그인합니다.

 

Born2beroot와 사뭇 다른 모습을 볼 수 있습니다. 우측 하단에 메뉴에 들어가면 terminal을 사용할 수 있습니다. 그런데, 너무 느리지 않나요? 클립보드 복사, 붙여넣기도 되지않고 여간 불편한게 아닙니다. Vscode로 터미널을 옮깁시다.

 

vscode extensions에서 Remote - SSH를 설치합니다.

 

좌측 하단에 파란 "><" 버튼이 보이시나요? 저기서 가상 머신에 접속할 수 있는데 저 버튼을 기억해주세요. 아직 연결을 위한 세팅이 되지 않았습니다.

 

각 user는 사용자의 이름으로 매치시켜야 합니다.

  • su - 관리자 계정 접속
  • usermod -aG sudo user : sudo 그룹에 추가
  • visudo : sudo 편집기를 열고
  • user ALL=(ALL:ALL) ALL : 권한 부여
  • 이제 관리자 계정을 로그아웃하여 sudo를 사용할 수 있습니다.
  • nano /etc/ssh/sshd_config: 파일을 열고 Port항목을 주석해제하여 4242로 변경

다음과 같이 포트포워딩 룰을 설정합니다. 기준은 IMac에서 진행됐습니다.

  • sudo service ssh restart && sudo service sshd restart: 서비스 재시작
  • 좌측 하단의 파란 "><" 버튼을 누릅니다.

  • ssh <접속하려는 계정>@localhost -p 4242: 로 접속을 시도합니다. 만약 접속이 되지 않는다면 IMac의 ~/.ssh/known_hosts 파일 내에 존재하는 4242 포트 관련 내용이 포함되어 있을 것입니다. 이를 지워주고 다시 시도해보세요.

  • 계정의 비밀번호를 요구하므로, 입력해주면 접속이 완료됩니다.

성공적으로 접속이 완료되었습니다.

Open Folder로 특정 디렉토리를 열 수 있습니다. 이제 느리게 고생하지 않아도 되고, 복사 붙여넣기도 가능하며 디렉토리도 가시적으로 볼 수가 있습니다. 그런데, 이 과제가 하루 만에 끝날 일입니까? 매일 매번 가상머신을 켜고 Vscode에 연결할 때마다 비밀번호를 요구합니다. 로그인할 때 한 번, 디렉토리를 열 때 한 번, 총 두 번 매일 입력해야 합니다. 귀찮아 죽겠습니다.

SSH key copy

클라이언트와 호스트간의 public키를 공유하여 이를 스킵합시다.

 

IMac에서 "ssh-copy-id <username>@<가상머신 IP 주소>" 다음 명령어를 형식에 맞게 입력합니다.

ex) $> ssh-copy-id user@localhost(혹은 127.0.0.1)

 

되었나요? 이제 비밀번호를 묻지 않을겁니다.

 

SnapShot

 

과제가 부피가 큰 만큼 가상머신 환경에서 이것저것 설치하고 오류도 나고 그럴겁니다. 그래서 세팅완료한 초기상태를 저장하려고 합니다

 

Take를 통해 SnapShot 이름을 명시적으로 지정하세요. 나중에 문제가 생겼다면 해당 SnapShot 항목을 선택하고 Restore로 되돌아갈 수 있습니다.

 

자신의 goinfre에 가상머신의 이름에 해당하는 디렉토리는 작업이 끝나면 압축하여 구글드라이브에 보관하는 습관을 들입시다. 클러스터의 한 자리를 보장할 수 없다면 가상 머신을 가지고 다니는 수밖에.. 비켜달라고 할 순 없잖아요?

 

마치며

다음 글에서는 본격적으로 서비스를 구성해 보겠습니다.