AWS에서 미니 PC(Intel NUC)에 프로젝트 Migration 방법

Ma_Seokjae·2024년 2월 25일
0
post-thumbnail

최근에 AWS에 작업했던 산학 프로젝트를 미니 PC(Intel NUC) 로 옮기는 작업을 진행하게 되었다. 처음 해보는 작업이어서 미니 PC에 Ubuntu를 설치하는 과정부터 AWS에 있는 프로젝트 파일을 옮기는 순서로 차례대로 기록을 통해 그 과정을 남겨보려고 한다.


미니 PC(Intel NUC) 세팅

(사용한 미니 PC 📸)

처음 미니 PC를 수령했을 때, 이미 Ubuntu 환경으로 세팅이 되어 있었는데, 다 밀어버리고 다시 세팅하는게 좋을 것 같다고 제안해주셔서 처음부터 다시 세팅을 해보았다. 처음 해보는 작업이어서 유튜브를 참고해서 했는데 굉장히 잘 설명되어 있어서 금방 따라하며 세팅할 수 있었다.

준비물

  • 미니 PC, USB

단계 설명

1. Ubuntu 이미지 파일 다운로드

  • Ubuntu 공홈에서 릴리즈 되는 이미지 파일 다운로드
    링크: https://releases.ubuntu.com
    (저는 20.04.6/ 버전을 다운로드 받았습니다)

2. USB에 이미지 파일 담기

  • tool을 사용하여 이미지 파일 담기

    다음과 같이 보는 실행 화면에서 아래 순서대로 진행:
    - Flash from file 클릭 후 다운 받은 이미지 파일(ubuntu-20.04.6-desktop-amd64.iso) 선택
    - Select target 클릭 후 컴퓨터에 연결해 놓은 USB 선택
    - Flash! 클릭을 통해 마무리

3. 본격적인 세팅

📌 미니 PC에 아무것도 설치되어 있지 않을 경우

  • 미니 PC에 Ubuntu 이미지 파일을 쓴 USB를 연결한 후 전원을 키면 이미지 파일이 실행되면서 바로 우분투 설치가 진행

📌 미니 PC에 이미 운영체제가 설치되어 있을 경우

  • 미니 PC에 Ubuntu 이미지 파일을 쓴 USB를 연결한 후 전원을 킴

  • 위에 보이는 화면에서 'Boot'를 클릭

  • 위 화면에서 보이는 'Boot Priority' 클릭

    • 'Boot Option #1' 에 연결한 USB로 설정
    • 'Boot USB Devices First' 체크
  • 저장 후 나가기

  • USB에 담긴 Ubuntu 이미지 파일 실행 및 설치 진행

이 과정을 따라 순서대로 진행하면 미니 PC에 운영체제 설치를 완료하게 된다

참고 유튜브
https://www.youtube.com/watch?v=z29RXpvB1xo

궁금한 점?

Q: 이미지 파일(Image file)이 무엇인가요?

A: 일반적으로 이미지 파일(image file)이란 디스크의 데이터를 바이트 단위로 복사한 파일을 말합니다.
이번에 사용한 우분투 이미지 파일을 통해 좀 더 설명하자면, 운영체제 설치 프로그램과 필요한 파일들이 담긴 iso 확장자를 가진 파일입니다. 이 파일은 CD나 USB에 쓰여질 때, 그 디스크를 통해 컴퓨터를 부팅하고 운영체제를 설치할 수 있습니다. 이때, 단순히 파일을 복사해서는 부팅 디스크를 만들 수 없고, balenaEtcher와 같은 특별한 도구를 통해 디스크 이미지를 적절히 쓰여야 합니다.

Q: 왜 그냥 이미지 파일을 USB에 드래그 또는 복붙을 통해 옮기지 않고 balenaEtcher와 같은 tool을 사용해서 옮기나요?

A: 컴퓨터에서 운영체제를 실행시키기 위해선 그 운영체제가 설치된 저장 매체(보통 하드 디스크나 SSD)가 필요합니다. 이 저장 매체를 컴퓨터가 읽을 수 있도록 하는 것이 '부팅' 과정입니다.
그런데 새로운 운영체제를 설치하려면, 해당 운영체제의 설치 파일이 담긴 부팅 가능한 저장 매체가 필요합니다. 이를 '부팅 디스크' 또는 '부팅 USB' 라고 부릅니다. 이런 부팅 디스크를 만들기 위해선 일반적인 파일 복사가 아닌, 특정 방식으로 파일을 USB에 쓰는 작업이 필요하고, balenaEtcher는 이 작업을 도와주는 도구입니다.


미니 PC에 프로젝트 Migration

앞서 말했듯이 AWS에서 작업한 프로젝트를 미니 PC로 Migration 하는 작업이므로 두 환경에서 어떻게 옮겨지는 지에 대해서 중심적으로 다룰 예정이다. 또한, AWS에서 작업한 나의 프로젝트는 Github를 통해 관리되어 코드를 옮기는 과정은 git clone을 통해 아주 간단하게 이루어졌다.

프로젝트 정보

[프론트엔드]
프레임워크: React (상태 관리: Hooks)
빌드 도구: Node

[백엔드]
데이터베이스: MySQL

[언어]
프론트엔드 빛 백엔드: JavaScript

본격적으로 옮기기 전에 프로젝트 파일이나 코드는 Github나 저장소에 업로드 또는 업데이트를 해 놓기를 바란다.
또한, 자신의 프로젝트마다 Migration 과정이 조금 다를 수 있으니 참고 바란다.

Migration 시작

1. 미니 PC의 Ubuntu 환경에 접속
2. 원하는 경로에 프로젝트를 git clone을 통해 가져옴

# 원하는 경로에 위치 (본인은 Desktop에 세팅)
cd ~/Desktop

# 해당 위치에 프로젝트 가져오기
git clone 'Github 레포지토리 URL'

3. 기본적인 프로젝트 실행 환경 세팅

  • npm & Node.js 설치 (프로젝트 경로 root에서 실시)

    • node_modulespackage-lock.json 삭제

      # 삭제 방법
      rm -rf node_modules
      rm package-lock.json

      (두 요소가 프로젝트 root에 없을 경우 Pass)

    • 본격적인 설치

      # 'curl' 설치
      sudo apt install curl
      
      # Node.js와 npm을 함께 설치
      curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
      sudo apt-get install -y nodejs
      
      # 설치 되었는지 확인
      node -v
      npm -v
      
      # 프로젝트 의존성 설치
      npm install

4. 데이터베이스 옮기기

  • MySQL 서버 설치

    # MySQL 설치 명령어
    sudo apt-get update
    sudo apt-get install mysql-server
    
    # 설치가 완료되면, 서버 실행
    sudo systemctl start mysql
    
    # MySQL 서버거 정상적으로 실행되었는지 확인
    sudo systemctl status mysql
    
    # MySQL 보안 설정을 진행
    # -> 이 과정에서 루트 계정의 비밀번호를 설정하고, 익명 사용자를 삭제하며, 루트 로그인을 로컬로 제한하고, 테스트 데이터베이스를 삭제하는 등의 작업을 수행
    sudo mysql_secure_installation
    
    # MySQL 로그인 (앞서 설정한 루트 계정의 비밀번호를 입력)
    mysql -u root -p
    
    # MySQL 콘솔에서 다음의 명령어를 사용하여 데이터베이스를 생성하고, 사용자를 추가하며, 사용자에게 권한을 부여
    CREATE DATABASE '원하는 DB명';  # 데이터베이스 생성, 사용 시 작은 따옴표를 제거하고 이름만!
    CREATE USER '원하는 user명'@'localhost' IDENTIFIED BY 'password';  # 사용자 생성
    GRANT ALL PRIVILEGES ON '원하는 DB명'.* TO '원하는 user명'@'localhost';  # 사용자에게 권한 부여
    FLUSH PRIVILEGES;  # 권한 변경 사항 적용
  • AWS에서 사용한 MySQL 백업

    • AWS EC2인스턴스 SSH 접속

      ssh -i /path/myKey.pem ubuntu@'Public IPv4 address 기입'
      
      # -> '/path/'에는 myKey.pem (키페어)이 위치해 있는 미니 PC 경로
      # -> 'Public IPv4 address 기입' 에는 본인이 사용한 인스턴스의 해당 정보 기입
    • 연결된 EC2 인스턴스에서 원하는 데이터베이스 백업

      # 백업 명령어 (실제 사용할 때는 따옴표 제거)
      mysqldump -u username -p '백업하고자 하는 데이터베이스 이름' > dbBackup.sql
      
      # -> username은 데이터베이스에 접근할 수 있는 사용자 이름
      # -> dbBackup.sql에서 dbBackup은 본인이 원하는 이름 가능
    • 백업 파일인 dbBackup.sql을 SCP를 이용하여 미니 PC (로컬 컴퓨터)로 복사

      scp -i /path/myKey.pem ubuntu@'Public IPv4 address 기입':/home/ubuntu/dbBackup.sql /local/path
      
      # -> /home/ubuntu/dbBackup.sql는 EC2 인스턴스에서의 백업 파일 경로
      # -> /local/path는 미니 PC(로컬 컴퓨터)에서의 저장 경로
    • 생성한 데이터베이스에 dbBackup.sql 파일의 내용을 복원
      (이전에 미니 PC에 MySQL 세팅할 때 생성한 데이터베이스 사용)

      mysql -u username -p '원하는 db명' < /local/path/dbBackup.sql
      
      # -> username은 데이터베이스에 접근할 수 있는 사용자 이름
      # -> /local/path/dbBackup.sql는 복원할 백업 파일의 경로

    만약, AWS에 SSH 접속할 때 Permission denied (publickey) 에러가 발생한다면?

    chmod 400 /path/myKey.pem
    
     # 이 에러 메시지는 SSH 키 파일(myKey.pem)의 권한이 너무 개방적으로 설정되어 있어서 발생하는 것
     # SSH 키 파일은 다른 사용자에게 접근되지 않게 보호해야 하므로, 이 파일의 권한을 위 명령어로 변경

이 과정들을 모두 완료하게되면, 프로젝트 Migration은 마무리 된다.

혹시, 궁금하거나 추가적인 정보를 알려주실 분들은 자유롭게 댓글을 남겨주시면 감사하겠습니다 :)

profile
Why not change the code?

0개의 댓글

관련 채용 정보