서버에서 CGI 사용하기

Soap·2021년 8월 9일
0

Project

목록 보기
2/3

이 글은 서버에 Form을 넣고 그 값을 받아 CGI에서 사용하는 방법에 대핸 내용이다.

CGI?
Common Gateway Interface
웹 서버와 프로그램을 연결시켜 입력이나 요청을 서버에서 프로그램으로 전달하고 처리 결과를 프로그램에서 서버로 전달하는 방법

CGI Enable

웹 서버에서 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 Test

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와 Form

이제 서버와 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를 알아보고 간단한 프로그램을 만들어 보았다.

0개의 댓글