이 글은 서버에 Form을 넣고 그 값을 받아 CGI에서 사용하는 방법에 대핸 내용이다.
CGI?
Common Gateway Interface
웹 서버와 프로그램을 연결시켜 입력이나 요청을 서버에서 프로그램으로 전달하고 처리 결과를 프로그램에서 서버로 전달하는 방법
웹 서버에서 Python을 이용해 CGI를 구현할 수 있도록 설정했다.
설정 방법은 Bitnami\wampstack-8.0.9-0\apache2\conf
에 있는 httpd.conf
파일을 editor로 열고
아래와 같은 부분을 찾아 주석 처리를 해제한다.
#LoadModule cgi_module modules/mod_cgi.so
→ LoadModule cgi_module modules/mod_cgi.so
그리고 httpd.conf
파일에서 아래와 같은 부분을 찾아 Files 태그를 다음과 같이 추가한다.
<Directory "(htdocs 경로)">
<Files "*.py">
Options ExecCGI
AddHandler cgi-script .py
</Files>
</Directory>
저장하고 서버를 Restart한다.
CGI를 활성화했으니 Python 프로그램이 잘 작동되는지 확인해 보았다.
htdocs
폴더에 test.py
파일을 만들었다.
#!(python.exe 경로)
print("content-type:text/html; charset=UTF-8\n")
print("Hello CGI!")
주의해야 할 점은 1~2번째 줄의 주석과 헤더 출력이다.
1번째 줄에는 이 파일이 파이썬으로 실행되기 위해 필요하고,
두번째 줄은 보내는 데이터의 종류와 인코딩을 지정하고, 표시되어 출력되지는 않는다.
저장하고 웹 브라우저에서 127.0.0.1/test.py
에 접속하면 다음과 같이 잘 실행된 것을 확인할 수 있다.
이제 서버와 CGI가 상호작용하도록 해보았다.
htdocs
폴더에 index.html
을 수정하여 form을 추가하였다.
<html>
...
<body>
<form action="test.py" method="post">
<input type="text" name="a">
<input type="text" name="b">
<input type="submit" value="Submit">
</form>
...
</body>
</html>
그리고 test.py
코드를 다음과 같이 작성했다.
#!(python.exe 경로)
print("content-type:text/html; charset=UTF-8\n")
import cgi
form = cgi.FieldStorage()
str_a = form['a'].value
str_b = form['b'].value
print(str_a + str_b)
웹 브라우저에서 127.0.0.1
또는 127.0.0.1/index.html
로 접속한 뒤 input에 'Hello'와 'World'를 입력하고 Submit을 누르면 다음과 같이 문자열이 연결되어 출력된다.
이로써 CGI를 알아보고 간단한 프로그램을 만들어 보았다.