Sparta 웹개발 종합반 5주차 11~19강 +숙제
11. 서버 세팅하기
filezilla를 이용해서, 간단한 python 파일을 올린다.
컴퓨터를 사고 원격접속을 하여 폴더를 만들어보고 들어가보고 나와봤다.
filezilla는 내 컴퓨터에 있는 파일을 그냥 올려주는 업로더
다운로드 업로더해주는 프로그램
파이썬 파일 실행해보기
filezilla에서 왼쪽은 내 컴퓨터 오른쪽은 내가 지금 파일을 올리고 받을 컴퓨터
test.py 바탕하면으로 다운받고 sparta안에 넣는다.
서버 환경 통일하기
우리는 지금 막! 컴퓨터를 구매한 상태
여기에 이런저런 세팅들(업그레이드, DB설치, 명령어 통일 등)을 해줘야 본격적으로 이용할 때 편리
EC2 한방에 세팅하기
initial_ec2
입력할 명령어를 모아 놓은 파일
pip 패키지 설치할때 클릭이 없다 대신 해줌
다시, 파이썬 파일을 실행해보기
Ec2컴퓨터에 서버를 본격적으로 돌려보겠다.
test.py에 app.py코드 넣고 실행
FileZilla에서 test.py->app.py로 수정
서버 환경 세팅 - 혼자 해보기
한국시간 세팅
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
12. flask 서버를 실행해보기
AWS에서 우리가 샀는데
이 AWS 자체 방화벽이 있다.
자체적으로포트들을 꽤 막아서 풀어줘야한다.
인스턴스 사이트에서 보안 -> 보안그룹 ->인바운드 규칙편지
22번포트는 미리 열려져있다. 그래서 우리가 접속 가능한것ㅇ였다.
규칙 추가 -5000,80,27017(5000는 사용자지정 나머지는 위치무관)
27017 mongoDB도 우리가 밖에서 접속을 해봐야지 데이터가 잘들어갔는지 알수 있다.
기초저인 flask 서버 파일 만들기
app.py
filezilla를 통해 EC2에 업로드한 다음, 실행
flask 없다는 Error
명령어로 pip install flask
다시 flask 서버 실행해보기
python app.py
아직 동작X -> AWS에서 설정이 더 필요
13. AWS에서 포트 열어주기
EC2 서버(=가상의 내 컴퓨터)에서 포트를 따로 설정하는 것 외에도,
AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리
->그래서 AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 됨
일단, EC2 관리 콘솔로 들어간다.
그리고 보안그룹(영문: Security Group)을 눌러 들어감
여기선 launch-wizard-1 이라고 쓰여있음
해당 보안그룹을 클릭
Edit inbound rules 선택
세 가지 포트를 추가.
→ 5000포트: flask 기본포트
→ 27017포트: 외부에서 mongoDB 접속을 하기위한 포트
→ 80포트: HTTP 접속을 위한 기본포트
다시 접속하면 연결된다.
14. 원페이지쇼핑몰 업로드해보기
원페이지쇼핑몰을 서버에 올리고 서버를 실행
=>모든 사람이 볼수 있다.
원페이지 쇼핑몰은 데이터베이스를 이용한다.
db에 저장한다.
Robo3T를 이용해서, "내 컴퓨터에서"→"서버에 있는 mongoDB"에 접속하기
원페이지쇼핑몰 완성본을 filezilla로 EC2에 업로드해봅니다.
MongoDB 접속 세팅을 바꾸기
AWS의 MongoDB에 아이디와 비밀번호를 추가했으니
pymongo에도 아이디와 비밀번호를 입력
pymongo가 올바르게 DB에 접근
client = MongoClient('mongodb://test:test@localhost', 27017)
client = MongoClient('mongodb://아이디:비밀번호@localhost', 27017)
같은뜻이다.
15. 포트포워딩
5000포트로 들어오면 플라스크를 만나고
27107포트로 들어오면 mongodb와 만난다.
80포트로 접속하면 안붙여도 된다.
http의 기본 포트로 80을 안붙여도된다.
80포트로 들어오는 요청을 5000포트로 돌아가고 있는 플라스크로 포워딩시켜준다.
이니셜세팅할때 해두었다.
그래서 5000빼고 해도된다.
- 지금은 5000포트에서 웹 서비스가 실행
- . 그래서 매번 :5000 이라고 뒤에 붙여줘야한다
- http 요청에서는 80포트가 기본이기 때문에, 굳이 :80을 붙이지 않아도 자동으로 연결이 됩니다.
- 포트 번호를 입력하지 않아도 자동으로 접속되기 위해, 우리는 80포트로 오는 요청을 5000 포트로 전달하게 하는 포트포워딩(port forwarding) 을 사용
- 리눅스에서 기본으로 제공해주는 포트포워딩을 사용
16. nohup 설정하기
SSH 접속을 끊어도 서버가 계속 돌게 하기
Git bash 또는 맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서,
서버가 돌아가지 않는다.
그러나 우리가 원격접속을 끊어도, 서버는 계속 동작해야한다.
# 아래의 명령어로 실행하면 된다
nohup python app.py &
서버 종료하기 - 강제종료하는 방법
# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다
ps -ef | grep 'app.py'
# 아래 명령어로 특정 프로세스를 죽인다
kill -9 [pid값]
SSH 접속을 종료한 뒤, 접속
브라우저에서 접속하기
http://내AWS아이피/
돌고있는 것을 끄고
그다음에 지우고 filezilla에서 수정된 파일을 올리고 nohup로 실행시킨다.
ps -ef :모든 프로세스를 다 보여준다.
ps -ef | grep 'app.py' :모든 프로세스 중에서 app.py만 솎아내기
17. 도메인 구입하기
도메인을 구매한다는 것은, 네임서버를 운영해주는 업체에, IP와 도메인 매칭 유지비를 내는 것
한국 또는 글로벌 업체 어디든 상관 없지만, 우리는 한국의 '가비아'라는 회사에서 구입
https://my.gabia.com/service#/
웹을 넘어 클라우드로. 가비아
그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브
www.gabia.com
DNS 관리툴 클릭
DNS 설정 클릭
레코드 수정
레코드 추가
호스트 이름에 @, IP주소에 IP주소를 입력합니다
sycoding.shop로 접속하면 나온다.
18. og 태그
og 태그 만들기
static 폴더 아래에 이미지 파일을 넣고,
각자 프로젝트 HTML의 <head>~</head> 사이에 아래 내용을 작성하면 og 태그를 개인 프로젝트에 사용할수있다.
1. "내 사이트의 제목" 입력하기
2. "보고 있는 페이지의 내용 요약" 입력하기
3. 적당한 이미지를 만들거나/골라서 static폴더에 ogimage.png로 저장하기! (사이즈 800x400인 이미지를 구글에서 검색!)
마지막에 static 폴더안에 있는 ogimage.png 파일을 읽어오기
FileZilla로 올린다.