본문 바로가기
Research/Network

AWS_터미널에서 AWS EC2 접속 및 리눅스 환경 세팅하기

by RIEM 2022. 11. 22.
728x90

본 블로그 글은 AWS에서 인스턴스 생성 시 키페어 파일(.pem)을 이미 다운로드 받았다는 가정하에 시작한다.

1. 터미널을 열고 keyvalue 페어 접근 권한 바꾸기

//sudo chmod 400 받은키페어를끌어다놓기
sudo chmod 400 '/Users/thursdaycurry/Downloads/sparta_web.pem'​

2.SSH로 접속하기

//ssh -i 받은키페어를끌ss어다놓기 ubuntu@AWS에적힌내아이피
ssh -i '/Users/thursdaycurry/Downloads/sparta_web.pem' ubuntu@3.39.23.217​

yes/no? 선택하는 것이 나오는데 ‘yes’ 한번 더 눌러주면 이렇게 ubuntu로 접속 성공!

 

리눅스 서버 세팅하기

서버 구매에서만 끝이 나는 것이 아니다. 구매 직후 업그레이드, db 설치, 명령어 통일 등등 서버 세팅을 해서 사용하기에 편리한 상태로 만들어주자.

설치

EC2 한방 세팅 코드 스니펫

# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

위 sudo로 시작하는 코드 5개를 ubuntu 터미널에 한줄씩 입력해준다.

python3 대신 python으로 명령어 사용할 수 있는 것, pip3 명령어를 pip으로 사용할 수 있게 하는 것, 그리고 port forwarding은 80 포트로 들어오는 요청을 5000 포트로 넘겨주는 명령어라고 생각하면 된다.

현업에서는 이러한 작업을 인프라 엔지니어 또는 개발 팀장님들께서 수행하신다고 한다.

 

파일질라로 파일 업로드 하기

새 포트를 열어서 위와 같이 세팅해준다.

  • SSH File Transfer Protocol인 SFTP로 세팅
  • Host ip는 ec2의 퍼블릭 ip
  • EC2는 port는 당연히 22
  • 로그온 타입은 key file로 설정해주고, User는 ubuntu로 지정해주고 Key file은 우리가 해당 파일을 저장했던 경로를 넣어준다

왼쪽이 우리의 로컬 컴퓨터고 우측이 EC2의 컴퓨터 경로다. 

ec2 ubuntu에 접속한 터미널에서 mkdir로 ‘sparta’ 디렉토리를 만들어주니 위와 같이 디렉토리가 생겨난 것을 알 수 있다. 멋지다!

왼쪽에 있는 우리의 test.py 파일을 업로드했다. 이를 실행해보자.

ubuntu@ip-172-31-46-129:~$ cd sparta/
ubuntu@ip-172-31-46-129:~/sparta$ ls
test.py
ubuntu@ip-172-31-46-129:~/sparta$ python test.py
hello guys
ubuntu@ip-172-31-46-129:~/sparta$

서버에서 곧바로 python 파일을 실행했다. 멋지다.

 

5-10 Flask 서버 실행하기

homework 프로젝트 내 static, templates 디렉토리 그리고 app.py 파일만 업로드해주자. venv, .idea는 무시해주면 된다.

문제1 : 모듈 미설치

그러나 이를 실행하면 Flask 모듈이 설치되어있지 않다는 에러가 발생한다.

ubuntu@ip-172-31-46-129:~/sparta$ ls
app.py  static  templates
ubuntu@ip-172-31-46-129:~/sparta$ python app.py
Traceback (most recent call last):
  File "/home/ubuntu/sparta/app.py", line 1, in <module>
    from flask import Flask, render_template, request, jsonify
ModuleNotFoundError: No module named 'flask'

flask 설치하기해주자

pip install flask
pip install pymongo dnspython

다시 실행

ubuntu@ip-172-31-46-129:~/sparta$ python app.py
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8080
* Running on http://172.31.46.129:8080
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 511-542-728

다시 실행해보면 정상적으로 실행이 될까? 아직 안된다.

문제 2 : AWS 포트 미개방 -> 5000포트를 열어주자

'EC2 서버의 public ip 주소:5000'로 들어가보자. 하지만 아직은 안된다. 왜 그럴까?

이는 우리가 빌린 AWS EC2 컴퓨터에 아직 5000번 포트가 열려있지 않기 때문이다. 막혀있는 상태이기 때문에 열어줘야 한다.

인스턴스에서 Security 탭을 누르면 아래 Security groups 링크가 나타난다. 이를 클릭하자.

우측 상단에 Edit inbound rules를 누른다.

 

포트 세팅하기

4가지 포트를 세팅해주자. 각각 Anywhere-IPv4, Anywhere-IPV6 둘다 세팅해주자.   

    → 80포트: HTTP 접속을 위한 기본포트
    → 5000포트: flask 기본포트
    → 27017포트: DB 접속 포트
    → 22포트: SSH

그 다음 다시 ip:5000 주소 또는 ip:80 주소로 들어가면 정상적으로 진입이 간능하다 

728x90

댓글