강의자료

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에 접속하기>

  • SSH(Secure Shell Protocol)
    • 다른 컴퓨터에 접속할 때 쓰는 프로그램입니다.
      다른 것들 보다 보안이 상대적으로 뛰어납니다.
    • 접속할 컴퓨터가 22번 포트가 열려있어야 접속 가능합니다.
      AWS EC2의 경우, 이미 22번 포트가 열려있습니다.
  • Window: ssh가 없으므로, git bash라는 프로그램을 이용!
    • gitbash를 실행하고, 아래를 입력!

      ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

<리눅스 명령어>
리눅스는 쉘 명령어를 통해 OS 조작 가능(마우스 역할)

  • ls: 내 위치의 모든 파일을 보여준다.
  • pwd: 내 위치(폴더의 경로)를 알려준다.
  • mkdir: 내 위치 아래에 폴더를 하나 만든다.
  • cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.
  • cd .. : 나를 상위 폴더로 이동시킨다.
  • cp -r [복사할 것][붙여넣기 할 것]: 복사 붙여넣기
  • rm -rf [지울 것]: 지우기
  • sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
  • sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

<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

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

포트포워딩 (80포트 → 5000포트)

80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어

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


<Flask 서버 실행>

  • AWS에서 5000포트를 열어주기
    • EC2 서버(=가상의 내 컴퓨터)에서 포트를 따로 설정하는 것 외에도,
      AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리를 하고 있습니다.
      → 그래서 AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 합니다.

80포트: HTTP 접속을 위한 기본포트

<포트 번호 없애기 - 기본 개념>

  • 지금은 5000포트에서 웹 서비스가 실행되고 있습니다. 그래서 매번 :5000 이라고 뒤에 붙여줘야 하죠. 뒤에 붙는 포트 번호를 없애려면 어떻게 해야할까요?
  • http 요청에서는 80포트가 기본이기 때문에, 굳이 :80을 붙이지 않아도 자동으로 연결이 됩니다.
  • 포트 번호를 입력하지 않아도 자동으로 접속되기 위해, 우리는 80포트로 오는 요청을 5000 포트로 전달하게 하는 포트포워딩(port forwarding) 을 사용하겠습니다.
  • 리눅스에서 기본으로 제공해주는 포트포워딩을 사용할 것입니다. 그림으로 보면 아래와 같습니다.


<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


  • 파이참 작업 배포시
  • 파일질라에서 static templates app.py 올리기
  • git bash 에서 nohup으로 켜기
    nohup python app.py

<도메인 연결하기>

가비아 - dns설정


<og태그>

  • 휴대폰 공유 시, 링크만 뜨는게 아니라 이미지도 같이 뜨도록 태그설정
    og:image
    og:title
    og:description
------------ * nohup 끄고 app.py파일 수정배포하기! (nohup 종료실행코드 > 파일질라 해당파일 삭제 > 다시배포)

결과물

http://sparta-mini.shop/


<정리>
기본적으로 웹서비스를 만든다고 하면 필요한 것

1) 내눈에 보이는 것: HTML CSS Javascript
2) 내눈에 보이는 것을 건네줄 존재: 서버

파이썬: 서버를 만들 수 있는 언어

서버 만들고, 인터넷 환경에 배포하기까지!

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN