[KT Aivle AI] 13주차 AWS EC2 생성하기

hyowon·2024년 5월 15일
0

KtAivle

목록 보기
33/39

개요

내가 직접 AWS를 사용해서 인스턴스 서버를 생성하고 관리해보자.

EC2 인스턴스 생성하기

  1. Amazon AWS 아이디를 만든다.
  2. AWS 홈페이지 검색창에 EC2 입력해서 인스턴스 생성 페이지로 들어간다.
  3. 인스턴스를 생성한다.
    3-1) 애플리케이션 및 OS 이미지에서는 Ubuntu를 선택
    3-2) 무료로 사용하기 위해 t2.micro를 사용
    3-3) 키 페어 생성 후 다운받기
    3-4) 네트워크 설정 기존 보안 그룹 선택 - default 값 선택
    3-5) 인바운드 규칙 설정해주기(아래와 같이 설정 가능)

이렇게 하면 서버 생성이 완료되었고 git bash를 열어서 연결해주면 된다.

Setting Server

0. 키페어(현재 kt.pem 으로 설정함)위치 확인

cd Desktop
ls | grep kt.pem

1. 서버 접속

ssh 명령을 이용하여 로컬 컴퓨터에서 서버 컴퓨터로 원격 접속

ssh -i /c/Users/user/kt.pem ubuntu@54.180.1.46

  • .ssh로 된 곳에 키페어( 현재 kt.pem으로 설정한 곳 )가 있는 위치와 자신의 IP주소를 입력해서 연결한다.
  • 이렇게 하면 git bashubuntu 가 뜬다.

2. 환결 설정 파일 전송(git bash 새로 열어서 local에서 입력해야)

현재 파이썬을 설치하려고 하기 때문에 환경설정 파일을 전송해야 한다.
접속할 때는 ssh를 사용하고 파일을 전달할 때는 scp를 사용한다.
파일을 전달하기 위해서는 4가지가 필요하다.

1) IP : EC2 인스턴스에서 생성한 퍼블릭 IPv4 주소
2) ID : ubuntu
3) PW : kt.pem
4) PATH : ~/

현재 env 파일에 환경설정 파일을 저장해두었기 때문에 아래 env를 추가해줬다.

1) ls /c/Users/user/env
2) scp -ri /c/Users/user/kt.pem /c/Users/user/env ubuntu@54.180.1.46:~/
3) cat ~/env/pyenv.sh

  • 3번 코드를 통해 잘 설치가 되었는지 확인해 볼 수 있다.

3. 파이썬 설치 (우분투 환경에서 설정해야)

1) ubuntu $ source ~/env/pyenv.sh
설정에서 선택하는것이 나오면 모두 기본 값으로 설정 <tab + enter>

2) ubuntu $ pyenv global 3.8.5
파이썬 기본 버전을 3.8.5로 설정

3) ubuntu $ pip install -r ~/env/requirements.txt
requirements.txt 에 정의된 파이썬 패키지 설치

4) sudo apt-get install tree

  • 4번 코드를 추가함으로써 tree 구조를 보여준다.

그렇다면 서버에 쉽게 접속하는 방법은 없을까?

1) cd~
2) pwd
3) vi .bashrc
4) 'i'로 insert해주고
5) alias server=ssh -i /c/Users/user/kt.pem ubuntu@54.180.1.46 입력
6) 그리고 esc 누르고 :wq 하고 엔터 (이렇게 하면 저장하고 나가기가 된다.)
7) source. bashrc 입력
8) server 입력
9) server를 저장해놨기 때문에 이게 출력된다.

4. 주피터 노트북 설치 및 설정

패스워드를 변환을 해서 저장할 것이다.

1) 주피터 노트북 설정 파일 생성
ubuntu $ jupyter notebook —generate-config

2) 암호화된 패스워드 생성
ubuntu $ ipython

3) In [1]: from jupyter_server.auth import passwd

4) In [2]: passwd()

5) Enter password: ktpw # 보안의 이유로 실제로 입력문자가 출력되지는 않음

6) Verify password: ktpw # 보안의 이유로 실제로 입력문자가 출력되지는 않음

7) Out[3]: 'argon2:argon2idargon2idv=19m=10240,t=10,p=8m=10240,t=10,p=8P5lONOLrRu/
FEM3gtDQOEw$nWH4/2BFoquRWzFQq31V8Gm9a/MG5Ufl8FLKpMfICO0'
이거 복사해서 들고 있어야 한다.

8) In [4]: quit

4. 주피터 노트북 서버 설정

0) ubuntu $ sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py

아래 3가지 전부 입력해야

1) c.NotebookApp.ip = '172.31.7.236' # private ip address

2) c.NotebookApp.open_browser = False # 자동 브라우져 실행 설정

위에서 출력한 패스워드 설정
3) c.NotebookApp.password = 'argon2:argon2idargon2idv=19m=10240,t=10, p=8 $P5lONOLrRu/FEM3gtDQOEwnWH4/2BFoquRWzFQq31V8Gm9a/MG5Ufl8FLKpMfICO0'

이렇게 3가지 입력 완료가 되었으면 esc 누르고 :wq 하고 엔터누르면 편집 완료가 된 것이다.

이렇게 하고 인터넷에 내 아이피와 :8888 해주면 로그인이 된다.
http://54.180.1.46:8888/

5. 주피터 노트북 서버에서 자바스크립트 커널 설정

1) javascript 실행을 위한 패키지 설치
ubuntu $ sudo apt-get install nodejs npm jupyter

2) 중간에 tmux 사용해주기 (kt라는 세션을 만들어주는 중)

2-1) tmux new -s kt
이후에 0번 창에서 아래의 코드 실행
( ctrl +b 떼고 1초안에 0 를 누르면 0번으로 이동 된다. )

3) ipython에서 실행 가능한 javascript를 npm으로 설치 및 설정
ubuntu $ sudo npm install -g --unsafe-perm ijavascript
ubuntu $ sudo ijsinstall --install=global

  • 이렇게 설치를 하는 중에 ctrl +b 떼고 1초안에 c 를 누르면 새로운 윈도우가 생성된다. 그리고 1번 창이 생성된다.
  • 추가로 ctrl + b 떼고 1초안에 c 누르면 2번 창이 생성된다.
  • 원래 있던 창으로 가려면 ctrl + b 떼고 1번을 누르면 1번창, 2번으로 가려면 ctrl +b 떼고 2를 눌러주면 된다.

현재 어떤 파일이 실행중인지 확인해보자.(중요! 현재 실행중인 프로세스 kill)

  • ps - e 만 해도 확인이 가능하지만 그러면 너무 많은 파일이 확인된다.
  • 현재 jupyter 파일을 확인하고 싶기 때문에 ps -e | grep jupy 이걸 입력하면 확인 가능하다.
  • 그리고 현재 실행중인 파일을 삭제하길 원한다면 kill -9 12345(포트번호)를 해주면 삭제된다.

6. MongoDB 설치

참고자료
reference : https://www.cherryservers.com/blog/install-mongodb-ubuntu-22-04

1) 설치 명령
ubuntu $ sudo apt install software-properties-common gnupg apt-transport-https ca-certificates -y

2) 설치 명령2
ubuntu $ curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

3) 설치 명령3
ubuntu $ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0
multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

4) 설치 명령4
ubuntu $ sudo apt update

5) 설치 명령5
ubuntu $ sudo apt install mongodb-org -y

6) MongoDB 서버 실행 및 실행확인
ubuntu $ sudo systemctl start mongod
ubuntu $ sudo systemctl status mongod

7) mongo shell 실행 및 관리자 계정 생성

  • 이걸 실행하면 아래와 같이 나온다.
    ubuntu $ mongosh

8) test> use admin
(switched to db admin : 실행값)

9) admin> db.createUser({ user: "kt", pwd: "ktpw", roles: [ "root" ] })
( { ok: 1 } : 실행 값)

10) admin> quit

11) 외부접속 허용 및 패스워드 사용설정
ubuntu $ sudo vi /etc/mongod.conf

12) network interfaces ( IP 바꿔줘야 한다.)
net:
port: 27017
bindIp: 0.0.0.0 (여기 IP바꿔야)

13) security:
security:
authorization: enabled (여기 반드시 두 칸만 띄워야! Tab 하면 안됨)

14) 설정 적용을 위한 MongoDB 서버 재시작
ubuntu $ sudo systemctl restart mongod

15) 서버 접속 URI
URI : mongodb://<user>:<password>@<public ip>:<port>/?authSource=admin

URI : mongodb://kt:ktpw@54.180.1.46:27017/?authSource=admin

7) Nginx 설치

1) nginx 설치
ubuntu $ sudo apt-get install nginx

2) nginx 실행 확인
ubuntu $ sudo systemctl status nginx

3) 그 다음 html 파일 생성

  • env html

  • echo 'Hello Nginx!' > html/index.html

  • cat html/index.html

이러면 Hello Nginx! 라는 문구가 들어간 파일이 생성된다.

만약 tree가 없다면 추가

  • sudo apt install tree

4) 이제 외부망으로 등록하기 위해서

  • cd html/
  • pwd
    그러면 /home/ubuntu/html 으로 가게 된다.

5) nginx 설정해준다.
ubuntu $ sudo vi /etc/nginx/sites-available/default

6) # 정적 파일 설정
대문자 G를 눌러 준다. 그러면 맨 아래 쪽으로 이동한다.
그 다음

server {
	listen 8080;
	location / {
		root /home/ubuntu/html;
	}
}

이거 추가해주고 esc 누르고 :wq 누르고 엔터하면 저장된다.

7) 설정 적용을 위한 재시작
sudo systemctl restart nginx

8) # ubuntu 디렉토리 실행권한(+x) 추가
chmod +x /home/ubuntu

8) html을 web으로 변경

현재 html을 web으로 변경해보자(html,css,javascript가 구현되어 있는 파일이 있다고 가정)

  1. 먼저 웹 파일의 위치 확인 ( 나는 ~/OneDrive/문서/Downloads)
  1. $ cd ~/OneDrive/문서/Downloads
  1. ls web 으로 문서들 확인
    contents.html css/ emmit.html font/ index.html join.html js/ login.html
    이렇게 출력되는 것을 확인할 수 있다.
  1. scp 로 파일 전송하기
    $ scp -ri /c/Users/user/kt.pem ~/OneDrive/문서/Downloads/web ubuntu@54.180.1.46:~/
  1. 서버로 접속
    ssh -i ~/.ssh/kt.pem ubuntu@54.180.1.46
  1. 이후에 파일 확인하고 nginx 한번 더 수정하자. 아래 코드 입력해서 경로 확인
  • cd web/
  • pwd

sudo vi /etc/nginx/sites-available/default

입력해서 아래와 같이 html 수정

server {
        listen 8080;
        location / {
                root /home/ubuntu/web;          //html -> web
        }
}

여기서 htmlweb 으로 바꿔줌

  1. 설정 적용을 위한 재시작
    ~/web$ sudo systemctl restart nginx

이후에 54.180.1.46:8080 입력하면 잘 실행되는 것을 알 수 있다.

profile
안녕하세요. 꾸준히 기록하는 hyowon입니다.

0개의 댓글