SW
[Flask] CGI 본문
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과 같은 약속되어 있는 이름의 데이터를 환경변수라는 형태로 전달해주는 것이다.
'대학교 > BE' 카테고리의 다른 글
[Node.js] 노드의 기본 기능 (0) | 2020.02.12 |
---|---|
[Node.js] 노드 & 자바스크립트 (0) | 2020.02.12 |
[Node.js] 노드로 만들 수 있는 서버와 용도 (0) | 2020.02.12 |
[Flask] 기본 애플리케이션 구조 (0) | 2020.02.11 |
[Ruby on Rails] Ruby on Rails (0) | 2020.02.05 |
Comments