네이버 클라우드


네이버 클라우드 사용 가이드

본 문서는 네이버 클라우드 플랫폼(NCP) 서버를 설정하고, 통합 개발 환경(IDE)에서 해당 서버에 접속하여 개발 환경을 구축하는 방법을 설명합니다.


네이버 클라우드 서버 설정

네이버 클라우드 플랫폼에서 가상 서버를 생성하고 기본적인 설정을 진행하는 단계입니다.

  1. 서버 이미지 선택

    • OS 이미지 타입: 운영체제는 'Ubuntu' 또는 'Rocky Linux' 중 하나를 선택합니다.
      • 부가 설명: 일반적으로 개발 환경에서는 Ubuntu가 널리 사용되며, 다양한 개발 도구 및 라이브러리 지원이 용이합니다. Rocky Linux는 CentOS의 후속 버전으로, 안정성과 호환성이 중요한 환경에 적합합니다.
    • 서버 타입: 'Standard' 타입을 선택합니다.
      • 부가 설명: 서버 타입은 CPU, 메모리 등의 자원 구성을 의미합니다. Standard 타입은 일반적인 용도에 적합한 균형 잡힌 성능을 제공합니다.
  2. 서버 설정

    • 사전 작업: 서버 생성을 위해 다음 네트워크 사전 설정이 필요합니다.
      • VPC (Virtual Private Cloud) 생성: 클라우드 내에 격리된 가상 네트워크 공간을 생성합니다.
        • 부가 설명: VPC는 클라우드 리소스들을 논리적으로 분리하여 보안과 네트워크 관리를 용이하게 합니다.
      • 서브넷 생성: VPC 내에서 IP 주소 범위를 할당하는 하위 네트워크를 생성합니다.
        • 부가 설명: 서브넷은 VPC 내에서 리소스들을 더욱 세분화하여 배치하고, 네트워크 흐름을 제어하는 데 사용됩니다.
    • 서버 타입 선택: 앞서 선택한 'Standard' 서버 타입을 다시 확인합니다.
  3. 키 생성

    • 인증 키 (.pem 파일) 생성: 서버 접속 시 사용되는 인증 키 파일을 생성합니다.
      • 부가 설명: 이 .pem 파일은 SSH(Secure Shell)를 통해 서버에 안전하게 접속하기 위한 필수적인 파일입니다. 절대 외부에 유출되지 않도록 안전하게 보관해야 합니다.
  4. 비밀번호 변경

    • 서버 관리자 비밀번호 변경: 서버 접속 후, 관리자(root) 계정의 비밀번호를 변경하여 보안을 강화합니다.

    • 계정 정보 확인: nsdserver, root, H3$i%4uyU5a (예시)와 같은 초기 계정 정보를 확인합니다.

    • 주의사항: 리눅스 기반 터미널에서 비밀번호 입력 시, 보안 상 커서가 움직이지 않거나 입력되는 문자가 표시되지 않습니다. 당황하지 않고 정확히 입력하면 됩니다.

    • 비밀번호 변경 명령어:
      Bash
      sudo passwd root
      
      • 부가 설명: sudo는 관리자 권한으로 명령을 실행할 때 사용하며, passwd root는 root 계정의 비밀번호를 변경하는 명령어입니다.




통합 개발 환경에서 연결 및 사용하기

설정한 네이버 클라우드 서버에 통합 개발 환경(IDE)을 통해 접속하고, 필요한 개발 도구들을 설치하여 환경을 구축하는 단계입니다.

  1. IDE(통합 개발 환경) 접속 설정

    • Visual Studio Code (VS Code) 기준: VS Code와 같은 IDE에서 서버 접속을 위한 config 파일에 접속 정보를 저장합니다.
    • 접속 정보 예시:
      Host 네이버클라우드
          HostName 211.188.57.32  # 서버의 공인 IP 주소
          User root              # 접속할 사용자 계정 (초기 root)
          IdentityFile C:/aws/nsdkey.pem # 키 파일 경로
          Port 22                # SSH 접속 포트 (기본 22)
      
      • 부가 설명: Host는 IDE에서 이 접속 설정을 식별할 이름입니다. HostName은 네이버 클라우드 서버의 실제 공인 IP 주소를 입력해야 합니다. IdentityFile은 앞서 생성한 .pem 키 파일의 로컬 경로입니다.
  2. 가상 환경 설치 - Anaconda (Miniconda)

    • Anaconda 다운로드: Anaconda 설치 스크립트를 네트워크 상으로 다운로드합니다.
      Bash
      wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh
      
      • 부가 설명: wget은 웹에서 파일을 다운로드하는 명령어입니다. 제시된 URL은 Anaconda 특정 버전의 다운로드 링크입니다. 최신 버전은 아나콘다 공식 웹사이트에서 확인하는 것이 좋습니다. (참고: 현재 날짜 기준으로 2022.10 버전은 다소 오래된 버전일 수 있습니다.)
    • Anaconda 설치 스크립트 실행:
      Bash
      bash Anaconda3-2022.10-Linux-x86_64.sh
      
    • 설치 과정 중 중요 설정: "by running conda init [yes|no]" 메시지가 나타나면 yes를 입력하여 Conda 환경 변수를 자동으로 설정하도록 합니다. [no] >>> yes 부분은 "no"가 기본값이지만 "yes"를 선택하라는 의미로 보입니다.
    • 환경 변수 설정 확인 및 적용:
      • vi ~/.bashrc: Conda의 bin 위치를 시스템에 인식시키기 위해 ~/.bashrc 파일을 편집합니다.
        • 부가 설명: .bashrc 파일은 사용자의 쉘 환경 설정 파일로, 여기에 Conda 경로를 추가하면 터미널을 열 때마다 Conda 명령어를 사용할 수 있게 됩니다.
      • source ~/.bashrc: 변경된 ~/.bashrc 파일을 현재 쉘에 즉시 적용하여 경로가 제대로 잡혔는지 확인합니다.
    • Conda 가상 환경 생성:
      Bash
      conda create -n chatbot python=3.8.3
      
      • 부가 설명: conda create -n chatbotchatbot이라는 이름의 새로운 가상 환경을 생성하고, python=3.8.3은 해당 가상 환경에 Python 3.8.3 버전을 설치하도록 지정합니다. 이는 프로젝트별로 독립적인 Python 환경을 관리하는 데 유용합니다.
  3. Ollama 설치

    • Ollama 다운로드 및 설치: Ollama 공식 웹사이트에서 리눅스용 설치 스크립트를 curl 명령어를 통해 다운로드하고 실행합니다.
      Bash
      curl -fsSL https://ollama.com/install.sh | sh
      
      • 부가 설명: Ollama는 로컬 환경에서 대규모 언어 모델(LLM)을 실행할 수 있게 해주는 도구입니다. curl 명령어는 웹에서 데이터를 전송/수신하는 도구이며, -fsSL 옵션은 진행 상황 숨김, 오류 시 즉시 종료, 리다이렉션 따르기를 의미합니다. 파이프(|)를 통해 다운로드한 스크립트를 바로 sh 명령어로 실행합니다.
  4. LLM 모델 설치

    • Ollama를 이용한 LLM 모델 다운로드: Ollama를 통해 사용할 LLM 모델을 다운로드합니다.
      Bash
      ollama pull exaone3.5:2.4b
      
      • 부가 설명: ollama pull 명령어는 Ollama 라이브러리에서 특정 LLM 모델을 다운로드합니다. exaone3.5:2.4b는 모델 이름과 버전을 나타냅니다.
  5. 서버 환경 준비 (Python FastAPI 애플리케이션 실행 기준)

    • Python 스크립트 실행: python main.py 명령어를 통해 메인 Python 애플리케이션을 실행합니다.
    • 필요 라이브러리 설치: 애플리케이션 실행에 필요한 Python 라이브러리들을 pip을 이용하여 설치합니다.
      Bash
      pip install fastapi
      pip install uvicorn[standard]
      pip install Jinja2==3.1.2
      pip install ollama
      pip install python-multipart
      
      • 부가 설명: pip은 Python 패키지 관리자입니다. FastAPI는 웹 프레임워크, Uvicorn은 ASGI(Asynchronous Server Gateway Interface) 서버, Jinja2는 템플릿 엔진, ollama는 Python에서 Ollama를 제어하는 라이브러리, python-multipart는 multipart/form-data 요청 처리를 위한 라이브러리입니다.
  6. 코드 상에서 접속 주소 수정 (FastAPI 예시)

    • Uvicorn 호스트 설정: FastAPI 애플리케이션이 외부에서 접속 가능하도록 Uvicorn 실행 시 호스트 주소를 0.0.0.0으로 설정합니다.
      Python
      if __name__ == "__main__":
          import uvicorn
          uvicorn.run(app, host="0.0.0.0", port=8000)
      
      • 부가 설명: host="0.0.0.0"은 애플리케이션이 서버의 모든 IP 주소로부터의 요청을 수락하도록 합니다. port=8000은 해당 애플리케이션이 8000번 포트에서 서비스됨을 의미합니다. (참고: 네이버 클라우드 플랫폼의 ACG/NACL 설정에서 해당 포트를 허용해야 외부에서 접속 가능합니다.)
  7. MySQL 설치

    • 패키지 목록 업데이트:
      Bash
      sudo apt-get update
      
      • 부가 설명: apt-get update는 패키지 저장소의 최신 정보를 가져와서, 설치 가능한 패키지 목록을 업데이트합니다.
    • MySQL 서버 설치:
      Bash
      sudo apt-get install mysql-server
      
      • 부가 설명: MySQL 데이터베이스 서버를 설치합니다.
    • 방화벽(UFW)에서 MySQL 포트 허용:
      Bash
      sudo ufw allow mysql
      
      • 부가 설명: ufw는 Ubuntu의 기본 방화벽 도구입니다. allow mysql은 MySQL 기본 포트인 3306번을 허용하여 외부에서 데이터베이스에 접속할 수 있도록 합니다. (참고: 네이버 클라우드 플랫폼의 ACG/NACL 설정에서도 3306 포트를 허용해야 합니다.)
    • MySQL 서비스 시작:
      Bash
      sudo systemctl start mysql
      
    • MySQL 서비스 자동 시작 설정:
      Bash
      sudo systemctl enable mysql
      
      • 부가 설명: 시스템 재부팅 시 MySQL 서비스가 자동으로 시작되도록 설정합니다.
  8. MySQL 계정 만들기

    • MySQL Root 계정으로 접속:
      Bash
      sudo /usr/bin/mysql -u root
      
      • 부가 설명: mysql -u root는 MySQL 데이터베이스에 root 계정으로 접속하는 명령어입니다. sudo를 사용하여 관리자 권한으로 실행합니다.
    • 새로운 사용자 및 비밀번호 생성:
      SQL
      CREATE USER 'test'@'%' IDENTIFIED BY '1234';
      
      • 부가 설명: test라는 사용자 이름으로, %는 모든 호스트에서 접속 가능하도록 설정하며, 비밀번호는 1234로 설정합니다. 실제 환경에서는 강력한 비밀번호를 사용해야 합니다.
    • 권한 부여:
      SQL
      GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
      
      • 부가 설명: test 사용자에게 모든 데이터베이스의 모든 테이블에 대한 모든 권한을 부여합니다.
    • 권한 변경 사항 적용:
      SQL
      FLUSH PRIVILEGES;
      
      • 부가 설명: MySQL 서버에 권한 변경 사항을 즉시 적용합니다.
    • MySQL 콘솔 종료: Ctrl + z는 프로세스를 백그라운드로 보내는 명령이므로, MySQL 콘솔을 종료하려면 exit;를 입력하는 것이 정확합니다.
  9. MySQL 설정 파일 수정

    • MySQL 설정 파일 편집: /etc/mysql/mysql.conf.d/mysqld.cnf 파일을 vi 에디터로 엽니다.
      Bash
      vi /etc/mysql/mysql.conf.d/mysqld.cnf
      
      • 부가 설명: 이 파일은 MySQL 서버의 주요 설정 파일입니다.

    • 바인드 주소 변경: 파일 내용 중 bind-address 부분을 찾아 값을 0.0.0.0으로 변경합니다.
      • 오타 수정: 노트 필기에는 bind-address = 0.0.0.0만 있고, ( i -> esc -> :wq )vi 에디터의 저장 및 종료 명령임을 명확히 합니다.
      • 부가 설명: bind-address = 0.0.0.0으로 설정하면 MySQL 서버가 모든 네트워크 인터페이스로부터의 접속을 허용하게 됩니다. 기본값인 127.0.0.1은 로컬 호스트에서의 접속만 허용합니다.

    • MySQL 서비스 재시작: 변경된 설정을 적용하기 위해 MySQL 서비스를 재시작합니다.
      Bash
      sudo systemctl restart mysql
      
      • 오타 수정: 노트 필기에는 /etc/init/d/mysql restart로 되어 있는데, 이는 구형 시스템에서 사용되던 방식이며, 최신 Ubuntu 등에서는 sudo systemctl restart mysql이 올바른 명령어입니다.

댓글 쓰기

다음 이전