라즈베리

라즈베리 파이 3 Flask 웹서버 코딩에 의한 웹 출력 예제

coding art 2020. 4. 28. 15:24
728x90

파이선 3 지원 환경이 구성되었으면 라즈베리 파이 3에서 와이파이 코딩 지원을 위한 Flask 모듈을 설치하도록 한다. 파이선의 모듈은 단순 라이브러리 개념 보다 넓은 의미를 지닌다. 아래의 sudo 명령 사례는 3 이란 숫자가 없으므로 파이선 2 버전 용 인듯하다. 버전3으로 하고 싶으면 python 대신 python3 으로 대체해도 무방하다.



다음은 파이선 2 버전의 Hworld.py 코드이며 파이선 3 버전으로 처리하려면 if 문 다음에 괄호 처리를 해야 한다.

Flask 모듈이 이미 설치되었으므로 모듈 즉 라이브러리로 불러 올 수 있다.

app = Flask(__name__) 는 라이브러리로서 Flask 모듈을 파이선 코드에 로딩하는 과정이다. 참고로 파이선에서 모듈이라 함은 라이브러리를 포함하는 상위의 개념임에 유의하자.

 

@app.route Flask 오브젝트 app 를 루트 디렉토리 즉 “/”에 생성한다.

그런 다음 index(): 라는 함수를 생성한다. index(): 함수 예제는 별 다른 연산 없이 ‘Hell World!’ 라는 문자열을 클라이언트 웹에 단순 출력한다.

이 코드가 LXTerminal에서 명령으로 실행되면 에러가 없을 경우 출력이 이루어지며 에러가 있다면 debug 레포트가 생성된다.

 

파이선 IDLE3에서 코드를 실행해 보자. 위 코드의 if 문에 괄호가 사용되면 파이선3을 뜻하다는 점에 유의하자. host‘0.0.0.0’ 으로 설정하였으므로 웹에서 url 0.0.0.0:5000을 입력 후 엔터하면 아래 그림과 같은 Hello World 출력을 확인할 수 있다. 한편 Flask에서는 url 127.0.0.1:5000 Default 웹 화면으로 설정되어 있으므로 동일한 출력 결과 확인이 가능하다.


한편 Terminal에서 python3 Hworld.py 명령을 입력하여 실행 시키자.

라즈베리 파이 3 웹브라우저에서 출력 결과를 보려면 url 창에 0.0.0.0:5000 또는 127.0.0.1:5000 을 입력하면 된다. 또는 Terminal에서 ifconfig 명령에 의해 확인된 라즈베리 파이 3의 가상 ip‘:5000’을 추가하여 url 창에 추가 입력해도 된다.


아울러 공유기나 WiFi 네트워크로 연결된 상태에서 PC의 웹브라우저나 스마트폰 웹 브라우저에서 출력 결과를 보려면 아래와 같이 라즈베리 파이 3의 가상 ip ‘:5000’ url 창에 추가 입력한다.

Flask workframe 자체가 일종의 웹서버 역할을 수행한다는 점을 알 수 있다. 웹서버는     서버에서 코드 실행에 따라 웹의 특정 url 주소에서 출력과 입력을 담당하면서 아울러 연결된 네트워크에서까지 동일한 url 주소를 사용하는 request를 통해 모니터링이 가능하게 된다.



#Hworld.py


from flask import Flask

app=Flask(__name__)


@app.route('/')

def index():

  return 'Hello world'


if(__name__=='__main__'):

  app.run(debug=True, host='0.0.0.0')