Filezilla
가비아
<버킷리스트 POST연습-기록>
1. 요청 정보 : URL= /bucket, 요청 방식 = POST
2. 클라(ajax) → 서버(flask) : bucket
3. 서버(flask) → 클라(ajax) : 메시지를 보냄 (기록 완료!)
단! 서버에서 한 가지 일을 더 해야합니다.
→ 번호를 만들어 함께 넣어주는 것. 그래야 업데이트가 가능하겠죠!
<버킷리스트 GET연습>
1. 요청 정보 : URL= /bucket, 요청 방식 = GET
2. 클라(ajax) → 서버(flask) : (없음)
3. 서버(flask) → 클라(ajax) : 전체 버킷리스트를 보여주기
<버킷리스트 POST연습-완료>
1. 요청 정보 : URL= /bucket/done, 요청 방식 = POST
2. 클라(ajax) → 서버(flask) : num (버킷 넘버)
3. 서버(flask) → 클라(ajax) : 메시지를 보냄 (버킷 완료!)
<내프로젝트를 서버에 올리기>
웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행시켜줄 거에요.
언제나 요청에 응답하려면,
1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야하고,
2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야해요.
서버는 그냥 컴퓨터라는거 기억나시죠? 외부 접속이 가능하게 설정한 다음에 내 컴퓨터를 서버로 사용할 수도 있어요.
우리는 AWS 라는 클라우드 서비스에서 편하게 서버를 관리하기 위해서 항상 켜 놓을 수 있는 컴퓨터인 EC2 사용권을 구입해 서버로 사용할 겁니다.
cf) OS로 리눅스의 Ubuntu를 설치 - AWS EC2
https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2
EC2 서버 종료하는 방법 (1년 후 자동결제 방지!)
대상 인스턴스에 마우스 우클릭 > '인스턴스 상태' 를 클릭합니다. 중지 또는 종료 중 하나를 클릭하면 명령을 실행합니다.
<EC2에 접속하기>
gitbash를 실행하고, 아래를 입력!
ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
<리눅스 명령어>
리눅스는 쉘 명령어를 통해 OS 조작 가능(마우스 역할)
<EC2 한방에 세팅하기>
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
<Flask 서버 실행>
↓
<포트 번호 없애기 - 기본 개념>
<nohup설정>
ssh접속 끊어도 서버 계속 돌게하기
Git bash 또는 맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않고 있습니다. 그러나 우리가 원격접속을 끊어도, 서버는 계속 동작해야겠죠?
서버 돌아가게 하기
nohup python app.py &
서버 강제종료하기
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
<og태그>
static 폴더 아래에 이미지 파일을 넣고,
각자 프로젝트 HTML의 ~ 사이에 아래 내용을 작성하면
og 태그를 개인 프로젝트에 사용할 수 있습니다.
Filezilla 설치하기: 파일 보낼수있는 프로그램(클라우드에 올리기)
가비아 가입하기 & 도메인 구입하기
sparta-mini.shop/
ns.gabia.co.kr 211.234.118.50
ns1.gabia.co.kr 121.78.117.39
ns.gabia.net 110.45.166.50
<버킷리스트> 프로젝트 세팅/뼈대준비
[POST]
지금까지 과제와 다른점은 서버에서 한가지 일을 더 해야한다.
리스트별 번호를 만들어 함께 데이터 넣어주는 것!(그래야 완료여부 등 업데이트 가능)
. done 값 0->1로 만들기
. 업데이트 : db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
. 숫자를 클라이언트로부터 받아왔으면 숫자로 받아주는 작업 필요(서버처리지)
--> int()
<내서비스가 인터넷에서 계속 살아있으려면?>
내프로젝트를 서버에 올리고...(서버=컴퓨터)
컴퓨터가 항상 켜져있고 프로그램 실행되어 있어야하고
모두가 접근할 수 있는 공개IP주소로 내 웹서비스에 접근할 수 있도록!
-> 요즘은 클라우드 환경 이용(EX. AWS EC2 사용권)
<AWS 서버 구매하기>
윈도우 맥OS가 아니라,
리눅스 OS -> 원격접속:명령어로 실행(Git Bash)
. mkdir sparta : sparta폴더생성
. ls : 폴더들어가기
. cd sparta : sparta폴더접속
. cd .. : 폴더나가기
(Tab키 자동완성)
(화살표 윗키 : 내가 마지막으로 썼던 것)
인스턴스 시작(컴퓨터 on)
인스턴스 중지(컴퓨터 off)
인스턴스 종료(컴퓨터 반납)
<서버 세팅하기>
EC2 한방에 세팅하기(git bash에 한줄씩 입력)
파일질라 실행(좌: 내 컴퓨터 / 우: 내가 빌린 컴퓨터)
<flask서버 실행하기>
파일질라에서 app.py & templates & static 업로드
git bash 필요한 인터프리터 다운(flask, pymongo, dnspython)
python app.py 실행
ip주소 복사+:5000 입력 &
**AWS 보안 탭 > 보안그룹 클릭 > 인바운드규칙편집 > 규칙추가 (+80도 규칙추가!!!)
http://52.79.233.43:5000/
http://52.79.233.43
* 리눅스 기본제공 포트포워딩
외부요청들 -> 80포트 -> 우리서버 -> 5000포트로 -> 도달
: sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
원격접속 종료하더라도 서버 계속 들어갈 수 있게
nohup python app.py &
ctrl + c : 끄기
<nuhup 강제종료>
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
<도메인 연결하기>
가비아 - dns설정
<og태그>
<정리>
기본적으로 웹서비스를 만든다고 하면 필요한 것
1) 내눈에 보이는 것: HTML CSS Javascript
2) 내눈에 보이는 것을 건네줄 존재: 서버
파이썬: 서버를 만들 수 있는 언어
서버 만들고, 인터넷 환경에 배포하기까지!