관리 메뉴

SW

[Flask] CGI 본문

대학교/BE

[Flask] CGI

SWKo 2020. 2. 10. 15:55

0. Web Server 동작원리

  • Web browser가 Web Server에게 정보를 요청한다.
  • 어떤 요청은 Web Server가 직접 처리할 수 없다. 예를 들어 .py로 끝나는 것은 Web Server가 처리할 수 없다.
  • 그래서 Web Server는 Python에게 CGI기술을 이용해서 위임한다. 
  • Python은 그 코드를 웹페이지로 바꿔준다.
  • Python이 File을 읽고 다시 가져와서 Web Server로 보내준다.
  • Web Server는 다시 Web browser로 보내준다.

1. 환경 구축

  • bitnami 설치
  • apache2 > conf > httpd.conf 에서 #LoadModule cgid_module modules/mod_cgid.so 찾은 후 주석으로 만들어주는 #을 지운다.
  • 확장자가 .py 인것은 cgi-script와 CGI로 실행시키도록 다음과 같이 mod_cgid.so파일에 추가해준다.

  • .py 만들었는데 실행이 안되면 sudo chmod a+x [파일이름.py] 로 실행권한을 추가해주면 된다.

2. 홈페이지를 CGI로 구현

  • htdocs에 hello.py 파일을 만들고 브라우저에서 들어가본다.
  • 에러가 발생하고 error_log에 이유가 적혀있음.
  • 여기선 Permission denied가 이유이다.

  • 그럼 다음과 같이 실행 권한을 추가해준다. 하지만 그래도 Error가 생긴다.

  • #! [python경로] 를 파일 가장 위에 써주면 그 문제는 해결된다.
  • 그러나 또 오류가 생기고 검색 후 다음을 써서 해결하였다.
  • print("content-type:text.html")

  • index.html을 복사해서 index.py에 붙여넣고 웹페이지로 띄워보았다.


3. URL query string을 가져오는 방법

  • index.py?id=HTML  이라는 것에서 ? 뒤에 있는 것을 query string 또는 url parameter라고 부른다.
  • 우리가 웹서버에게 어떠한 query(질의)할 때 사용하는 string이다.
  • url query string을 가져오는 방법은 다음과 같이 하면 된다.
  • 링크들을 클릭할때마다 페이지의 내용이 바뀐다.


4. CGI

  • CGI 를 그림으로 표현해보면 다음과 같다.

  • Web Server와 여러가지 언어들(CGI Program)이 쉽게 연동하기 위해서는 둘 사이에 표준화된 약속이 필요하다.
  • .py는 브라우저가 못읽지만 CGI를 통해 읽을 수 있다.
  • 그 약속이 CGI Program 이다.
  • CGI의 핵심은 웹서버가 사용자의 요청을 받았을 때 그 요청과 관련해서 웹 애플리케이션이 어떠한 처리를 할 수 있도록 query string과 같은 약속되어 있는 이름의 데이터를 환경변수라는 형태로 전달해주는 것이다.
Comments