한 것
TIL
다른 컴퓨터에 접속할 때 쓰는 프로그램. 서로 22번 포트가 열려있어야 접속 가능하다. EC2 경우 이미 22번 포트가 열려있음.
AWS EC2 인스턴스 서버 컴퓨터에 SSH로 접속하는 법
ssh -i 받은키페어를끌어다놓기 ubuntu@AWS서버컴퓨터내퍼블릭아이피 # 운영체제를 리눅스체제인 우분투를 선택했을 시
# 새 키페어를 발급 받았을 땐 SSH로 접속하기 전에 changemode 사용해서 권한 바꿔주어야 함.
sudo chmod 400 받은키페어끌어다놓기
cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기
sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)
site manager general 창에서 protocol은 SFTP로 설정 → SSH 방식의 FTP
host는 AWS 인스턴스 퍼블릭 아이피를 입력, port는 SSH이기에 22로 입력.
log on type은 우리가 SSH로 서버컴퓨터에 접속할 때 키페어를 사용하기에 Key file로 설정해준다.
user는 ubuntu(서버 컴퓨터 운영체제에 따라 다를 듯), 키 파일 디렉토리 위치 설정해준다. 그리고 확인(OK)를 클릭하면 내 컴퓨터와 서버컴퓨터 통신설정완료.
파일을 옮긴 뒤 파이썬 테스트 파일을 ec2 인스턴스(우분투)에서 실행시켜보면 실행이 되는 걸 확인할 수 있다.
우분투에서 파이썬 명령어 팁
# python 이라는 명령어로 3 버전 이상을 실행하도록 하는 명령어.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 설치 -> 플라스크 서버를 실행해야할 때 패키지 설치가 필요하기 때문.
sudo apt-get update
sudo apt-get install -y python3-pip
# 버전 확인
pip3 --version
# pip3 대신 pip 라고 입력하기 위한 명령어.
# 아래 명령어를 입력하면 pip 라고 쳐도 pip3를 작동시킬 수 있음.
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# 패키지 설치 -> 맥OS와 비슷
pip install [패키지이름]
# flask로 만든 app.py를 실행시키면 flask가 실행된다.(서버 실행)
python app.py # 명령어 바꿔줬을 때, 안바꿔줬다면 python3 app.py로 실행시키면 됨.
flask에서 앱을 만들고 동작하면 기본 포트는 5000으로 사용된다. → AWS에서 포트번호를 막고 있기 때문에 5000포트를 열어주어야 함. (장고는 8000)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
cf ) app.run 에서 ‘0.0.0.0’은 누구나 접속할 수 있게 설정 해놓은 것이고 포트와 디버그 가능여부도 설정할 수 있다.
EC2 관리 콘솔에서 실행중인 인스턴스를 클릭후 description(설명)에서 AWS EC2 Security Group(보안 그룹)을 눌러 들어 감(launch-wizard ~ 있음)
해당 보안그룹을 클릭한 뒤 Edit inbound rules(인바운드 규칙 설정)을 선택한다.
HTTP = 80(기본포트) / SSH = 22 / Custom TCP(flask) = 5000 / Custom TCP(mongoDB) = 27017로 설정해준다.
protocol은 전부 TCP, Source도 전부 anywhere(6말고 4)로 설정하고 저장해준다. → anywhere 설정하면 알아서 옆에 “0.0.0.0”이 뜨는거 같음.
이제 http로 내 EC2 퍼블릭 아이피에 :5000포트로 접속해주면 잘 작동 되는 것을 확인할 수 있음.
EC2에 mongoDB 설치하고 실행하기
# EC2 터미널에 차례대로 한 줄씩 입력
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
# ----------------------------------- 설치 완료
# MongoDB 실행하기
sudo service mongod start
mongoDB 접속 계정 생성하기
만든 mongoDB를 만든 사람만 외부에서 접속할 수 있게 하기 위해 접속에 필요한 아이디와 비밀번호를 설정해야함. → 안하면 누구나 접속해서 DB정보를 볼 수 있게 됨.
# 1. mongoDB 쉘 들어가기
mongo
# 좌측에 '>'표시 나오면 성공적으로 접속한 것
# 2. admin으로 계정 바꾸기
use admin;
# 3. 계정 생성하기
db.createUser({user: "test", pwd: "test", roles:["root"]});
# "test", "test" 자리에 내가 넣고 싶은 아이디/비번 넣으면 됨.(영어만 가능)
# Successfully added user: 뜨면 성공.
# 4. 쉘에서 나오기
exit
# 5. mongodb 재시작
sudo service mongod restart
mongoDB 외부에 열어주기
mongoDB는 기본적으로 같은 IP 안에서만 접속을 허용. → 외부에서 접근가능하도록(내 컴퓨터에서 서버 DB상태를 볼 수 있게) 잠금을 풀어주어야함.
# EC2에서 실행시켜야 함 vim 사용
sudo vi /etc/mongod.conf
# vim으로 텍스트를 열어서 아래로 가보면 "#network interfaces"가 있음
# port는 건들지말고 bindIP를 0.0.0.0으로 바꿔준다.
# 그 다음 밑밑에 "#Security:"가 있는데 이것을 "#"빼주고
# 밑에다 들여쓰기하고 "authorization: enabled"를 추가해준다.
# esc 누르고 :wq 저장후 빠져 나온 뒤 db 재시작.
sudo service mongod restart
Robo3T로 내 컴퓨터에서 EC2서버에 있는 mongoDB 원격접속하기
filezilla로 옮기기 전, 일단 DB실행코드가 있는 앱파일에 EC2 서버 MongoDB 아이디와 비밀번호를 입력해주어야 한다.
client = MongoClient('mongodb://설정한아이디:비밀번호@내AWS아이피', 27017)
# DB실행코드가 있는 앱파일에서 저 부분만 바꿔주면 된다.
# 즉, test:test@localhost와 같다.
그 후 서버 실행에 필요한 파일들을 옮겨준다. ex) app.py, templates폴더, static폴더
실행에 필요한 패키지들을 설치해준뒤 실행하고 5000포트로 접속하면 완료.