관리 메뉴

개발캡슐

2022.07.20~23_5주차_Flask서버_실행할거야!_10강 본문

스파르타코딩클럽-항해99_9기/5주차_Projects02, GET, POST, Filezilla

2022.07.20~23_5주차_Flask서버_실행할거야!_10강

DevGreeny 2022. 7. 26. 22:24

5-10강. Flask 서버를 실행할거야!

  • 만든 팬명록 업로드할 거야
  • 내 작품이 세상에 공개될게야.
  • 일단 test.py 올린 거 지워

 

1_옮겨일단- 내 팬명록 업로드 해.

  • 내가 산 컴퓨터로 이동할 내 컴퓨터의 폴더 / 파일
    • sparta/projects/homework/static
    • sparta/projects/homework/emplates
    • sparta/projects/homework/app.py

 

=> 이렇게 두 폴더, 한 파일만 올려줌.

 

=> 혹시나 잘못옮기면 그냥 지워주면 됨.

 

 

2_다시 git-bash(원격접속한 거)

  • git-bash(원격접속한 거) - 현재 위치 = filezilla 내가 산 컴퓨터의 위치.
ubuntu@ip-172-31-40-168:~$ ls
sparta
ubuntu@ip-172-31-40-168:~$ cd sparta/
ubuntu@ip-172-31-40-168:~/sparta$ ls
test.py
ubuntu@ip-172-31-40-168:~/sparta$ python test.py
Hello sparta!!
ubuntu@ip-172-31-40-168:~/sparta$

 

 

=>git-bash화면.

 

  • ls 쳐 봐. 그럼 app.py 파일, static 폴더, templates 폴더 들어가있는 걸 확인할 수 있어.
ubuntu@ip-172-31-40-168:~/sparta$ ls

 

 

=> 결과 : app.py static templates

ubuntu@ip-172-31-40-168:~$ ls
sparta
ubuntu@ip-172-31-40-168:~$ cd sparta/
ubuntu@ip-172-31-40-168:~/sparta$ ls
test.py
ubuntu@ip-172-31-40-168:~/sparta$ python test.py
Hello sparta!!
ubuntu@ip-172-31-40-168:~/sparta$ ls
app.py  static  templates
ubuntu@ip-172-31-40-168:~/sparta$

 

 

=>git-bash화면.

 

 

 

 

3_git-bash/terminal로 실행할거야

  • python 띄고 app.py 하면
ubuntu@ip-172-31-40-168:~/sparta$ python app.py

 

 

=> 결과: No module named 'flask'
=> No module named 'flask' => Flask가 안 깔렸어유. 란 뜻이야.

ubuntu@ip-172-31-40-168:~$ ls
sparta
ubuntu@ip-172-31-40-168:~$ cd sparta/
ubuntu@ip-172-31-40-168:~/sparta$ ls
test.py
ubuntu@ip-172-31-40-168:~/sparta$ python test.py
Hello sparta!!
ubuntu@ip-172-31-40-168:~/sparta$ ls
app.py  static  templates
ubuntu@ip-172-31-40-168:~/sparta$ python app.py
Traceback (most recent call last):
  File "app.py", line 1, in <module>
    from flask import Flask, render_template, request, jsonify
ModuleNotFoundError: No module named 'flask'
ubuntu@ip-172-31-40-168:~/sparta$

 

 

=> 실제 git-bash창.

 

 

4_git-bash/terminal로 패키지 설치

  • Flask, pymongo, dnspython 설치 - 명령어로

 

  • Flask 깔아줄게.
  • 명령어로
$ pip install flask

 

=> 결과: 깔림.

Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.1.2 click-8.1.3 flask-2.1.3 importlib-metadata-4.12.0 itsdangerous-2.1.2

 

 

=> git-bash 화면 : 그럼 이렇게 Flask가 설치됨.

 

 

  • 다시 python app.py
ubuntu@ip-172-31-40-168:~/sparta$ python app.py

 

 

=> 결과 : No module named 'pymongo' => pymongo가 안 깔려있어.

Traceback (most recent call last):
  File "app.py", line 4, in <module>
    from pymongo import MongoClient
ModuleNotFoundError: No module named 'pymongo'
ubuntu@ip-172-31-40-168:~/sparta$

 

 

=> git-bash화면.

 

 

  • pymongo, dnspython도 깔아줘야 되닌까말이지~ 아하핳 
  • pymongo, dnspython도 깔아주자.
  • pymongo
$ pip install pymongo

 

 

  • dnspython
$ pip install dnspython

 

 

=> 결과 : 잘 깔림.

ubuntu@ip-172-31-40-168:~/sparta$ pip install pymongo
Collecting pymongo
  Downloading pymongo-4.2.0-cp38-cp38-manylinux2014_x86_64.whl (506 kB)
     |████████████████████████████████| 506 kB 11.1 MB/s
Installing collected packages: pymongo
Successfully installed pymongo-4.2.0
ubuntu@ip-172-31-40-168:~/sparta$ pip install dnspython
Collecting dnspython
  Downloading dnspython-2.2.1-py3-none-any.whl (269 kB)
     |████████████████████████████████| 269 kB 16.2 MB/s
Installing collected packages: dnspython
Successfully installed dnspython-2.2.1
ubuntu@ip-172-31-40-168:~/sparta$

 

 

=> git-bash 화면.

 

 

  • 그 다음 python 띄고 다시 app.py
$ python app.py

 

 

=> 결과 : 연결 확인 됨.

ubuntu@ip-172-31-40-168:~/sparta$ python app.py
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on all addresses (0.0.0.0)
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://127.0.0.1:5000
 * Running on http://172.31.40.168:5000 (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 664-708-118

 

 

=> git-bash화면.

 

=> 브라우저 확인 : /5000으로 연결 안 됨.

  • 인스턴스, 산 컴퓨터에서 5000번으로 접속할 수 있는 구멍을 안 열어둬서 그래.
  • 그래서 열어줘야함.

 

5_5000포트로 접속할 수 있게 열어보기.

  • AWS에서 5000포트에 접속할 수 있도록 열어볼게.

1.인스턴스 정보 - 보안창 - 보안그룹 (launch-wizard-1) 눌러잇

 

 

2. 보안 그룹(- launch - wizard -1) -> 인바운드 규칙 편집(Edit inbound rules)

 

3.인바운드 규칙 편집

  • '규칙 추가'버튼 눌러줘

 

  • 추가된 규칙

 

 

  • 규칙 2개 추가해서 설정해준다.
    • 각각 포트 범위 5000 , 포트 범위 80(80 은 왜 하는 지 난중에 알랴줌!)
    • 둘 다 소스유형 anywhere IPv4로.

 

  • 그대로 규칙 저장!

 

  • 인스턴스 퍼블릭 IPv4주소로 팬명록띄우기
  • 브라우저 주소 창에 인스턴스 퍼블릭 IPv4주소 붙여넣고 내 로컬 포트번호입력
http://43.200.181.233:5000

 

=> 전세계 사람들이 이 주소를 쓰면 내 팬명록 볼 수 있어. 사실 5000은 떼도 돼ㅎ

 

=> 결과 : 내 팬명록 뜸

  • 포트 5000붙였을 때.

 

=> 포트 5000 안 붙였을 때.

 

 

 

6_포트값 80포트 => 5000 포트로 넘겨주기

  • 해당 명령어를 아까 이미 줌.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

 

 

  • 예) naver.com:80 이라고 쳐주면

=> 그대로 naver.com으로 뜸. 5000은 안 뜸..

  • 그래서 80으로 받아서 5000에다 연결을 시켜주면 된당.
  • 리눅스( 외부요청들 <- 80포트 -> 5000포트로 우리 서버) <=요로케 채널링 해주면 돼.
  • 이게 바로 이 명령어여서, 우리가 5000을 떼고도 팬명록에 접속 가능함.
#### port forwarding

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

 

 

=> git-bash(내가 산 컴퓨터에 원격접속한 것)를 닫으면 팬명록도 꺼져 ㅠ

  • 그래서 이걸 유지시키는 걸 해볼거야. => nohup설정