9.16
웹 프로그래밍 A-Z기초 5주차
1) AWS 서버 구매하기
https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2
1. aws 에 들어가 로그인을 한 후 인스턴스를 클릭힌다.
[인스턴스] - [인스턴스 시작] - 3번째 거 (ubuntu server 18.04)
- 인스턴스 : 서버 하나하나
오픈소스 라이브러리인 리눅스 기반 서버 Ubuntu를 사용한다. (무료 라이센스이기 때문)
2. T2 micro 선택
인스턴스를 보면 서버가 하나 실행중인 것을 볼 수있다.
t2 micro 서버는 해당된 크기만큼 1년간 무료로 사용이 가능하다고 한다. (하지만 혹시 모르니 잘 꺼두자)
3. AWS 인스턴스 서버 종료하기
- 인스턴스 종료 : 다시 반납 (아예 종료)
- 인스턴스 중지 : 잠시 컴퓨터 종료시키기
- 인스턴스 재부팅 : 재부팅
4. 로컬 PC에서 원격으로 서버 접속하기
git Bash 에서 접속
//ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피(인스턴스 퍼블릭 ipv4 주소)
ex)
ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20
2) filezila
- 파일질라란, FTP(File Transfer Protocol) 프로그램, 즉 파일 전송 프로그램 입니다.
- 파일질라는 FTP, SFTP, FTPS를 지원한다.
- FTP : 파일 전송 프로트콜로, 프로코톨이란 컴퓨터가 서로 통신하기위한 통신 규약입니다. 즉 FTP는 컴퓨터끼리 파일을 전송할 때 사용하기위한 약속이라고 볼 수 있습니다.
- SFTP : (SSH FTP)를 말합니다. FTP를 이용하여 클라언트와 서버사이에 파일을 주고 받을 수 있습니다. SFTP 란 SSH(셸) 데이터 스트림을 통해 보안등급을 높인 파일 전송 프로토콜입니다.
- 즉, 파일질라는 이런 통신 프로토콜(FTP, SFTP)를 제공함으로써 이를 이용하여 보다 쉽고 직관적으로(GUI 지원) 클라이언트와 서버 사이에 파일을 주고 받을 수 있습니다.
그럼 어디에 파일질라(FileZila)를 사용하나 ? ?
1. AWS 서버에 파일 업로드 하기
갑자기 파일질라가 나온 이유는 바로, 위에서 구매한 AWS 서버(인스턴스)에서 제공받은 키페어가 SSH이기 때문에 파일질라와 이 키페어를 이용해 쉽게 서버에 파일을 올릴 수 있습니다.
2. FileZila 사용법
[파일질라 실행 후 설정] - [1번 클릭] - [site 생성 (New site)] - [드로그 앤 드랍으로 파일 전송]
- Protocal : SFTP
- Host : aws 내 서버(인스턴스) 퍼블릭 IP 주소
- Logon type : key file
3) AWS 서버 사용하기
1. aws 서버 환경 세팅 명령어들
- 한국시간 세팅 : EC2 컴퓨터의 시간대를 한국으로 맞추는 명령어
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
- 파이썬 (python3 → python) : python3 명령어를 python으로 사용할 수 있게 하는 명령어
-
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
-
- pip (pip3 → pip)
- pip3 설치
- pip3 명령어를 pip으로 사용할 수 있게 하는 명령어
-
# pip3 설치 sudo apt-get update sudo apt-get install -y python3-pip # pip3 대신 pip 라고 입력하기 위한 명령어 sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
-
2. aws 포트 열어주기
aws 서버 환경을 모두 설정해주고, 파일질라를 이용해 Flask 서버(app.py)를 옮겨서 실행하면 웹 구동 준비가 완료된다.
하지만, AWS 서버에서 구동하는 웹페이지상에 접속하기 위해서는 포트번호를 열어주어야 접속할 수 있다.
(AWS 접속이 안되는 이유)
- AWS 자체적인 보안이 있기 때문에 아무포트로 접속한다고 해도, 접속을 막는다.
- AWS에서 접속가능한 포트번호를 설정해준 후에야 접속이 가능하다.
(AWS 포트 여는 방법)
- EC2 인스턴스에서 실행중인 인스턴스를 클릭해 보안그룹(Security Group)에 들어갑니다.
- 인바운드 규칙 편집을 클릭한 후 포트번호를 추가해줍니다.
3. AWS MongoDB 연결하기
- AWS 서버에 몽고디비를 설치합니다.
- 설치한 몽고디비의 아이디와 패스워드를 세팅해줍니다.
- 몽고디비를 외부에서도 열수있도록 보안을 열어줍니다.
- Robo3T를 이용해 AWS 서버의 DB에 접속합니다.
몽고디비 설치 - aws 서버에서
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
몽고디비 접속 및 계정 생성
mongo
# admin으로 계정 바꾸기
use admin;
# 계정 생성하기
db.createUser({user: "test", pwd: "test", roles:["root"]});
# 나오기
exit
# MongoDB 재시작
sudo service mongod restart
몽고디비 외부 접속 열기
- 몽고디비는 디폴트가 내부 접속만을 허용하기 때문에, 외부에서 접근이 가능하도록 작업해야한다.
- vim에 접속해서 수정
sudo vi /etc/mongod.conf
# sudo: 관리자(SuperUser) 권한으로 다음을 실행
# => "관리자 권한으로 /etc 폴더 아래 mongod.conf 파일을 Vim으로 켜줘!"라는 뜻입니다
입려모드(i)로 수정하고 저장후 종료 (wq)
몽고디비 재시작 : sudo service mongod restart
Robo3T로 연결
새 커넥션 생성 후, 주소를 aws 서버 주소로 설정
설정해준 admin 계정으로 접속
파이썬에서 몽고디비 id, password로 접속
#pymongo 계정 접속 id:passwprd
client = MongoClient('mongodb://test:test@localhost', 27017)
4) 포트 포워딩 (포트 번호 때기)
포트 포워딩 이란 (Port fowarding)
- http의 기본 포트번호는 디폴트로 80 포트가 설정되어 있다.
- 그래서 80포트는 굳이 적지 않고 도메인만 입력해도 자동으로 80포트가 붙는다. (숨겨져 있다. naver.com:80 )
- 주소에 포트번호를 보이고싶지 않다면, 80포트로 들어오는걸 원하는 포트번호로 포워딩을 시켜주면 된다.
- 이것을 포트 포워딩이라 한다.
포트 포워딩 설정 방법 (5000 포트로)
aws 서버 shell 스크립트(bash) 에서 설정한다.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
5) SSH 접속을 끊어도 서버 돌아가도록 설정하기 (nohup)
git bash(shell)에서 AWS 서버환경에서 작업]
#원격접속을 종료하더라도 돌아가게
nohup python app.py&
#서버 종료하기 (강제 종료)
# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다
ps -ef | grep 'app.py'
# 아래 명령어로 특정 프로세스를 죽인다
kill -9 [pid값]
#다시 켜기
nohup python app.py &
아이고 힘들다
오늘 좀 고생했다 화이팅!
'회고 > Today I Learned' 카테고리의 다른 글
[TIL] 9.19 -스파르타 내일배움캠프 7일차 (TIL에 대해서) (0) | 2021.09.19 |
---|---|
[TIL] 9.17 - 스파르타 내일배움캠프 5일차 (Og 태그 달기, 리눅스 PS 명령어) (2) | 2021.09.18 |
[TIL] 9.15 - 스파르타 내일배움캠프 3일차 (Flask Get, Post 메서드 / Meta 태그) (0) | 2021.09.15 |
[TIL] 9.14 - 스파르타 내일배움캠프 2일차 (Jquery /크롤링 / MongoDB(파이썬 연동), Robo3T) (0) | 2021.09.14 |
[TIL] 9.13 - 스파르타 내일배움캠프 1일차 (파이참 자동정렬 / 웹 기초 / 부트스트랩) (0) | 2021.09.13 |