[파이썬] 파이썬3로 CGI 이용하기

2011.07.12 04:36
파이썬에서 지원하는 CGI(Common Gatewaay Interface) 라이브러리를 가지고 놀아보기로 했다. 요즘에 참 웹을 많이 가지고 노는 듯. 요즘 같이 어울리는 녀석이 웹인재인지라...

일단은 CGI를 테스트하기 위해 웹서버가 필요하다. 그것도 모른채 파이썬 공식 사이트의 CGI 라이브러리 설명이랑 웹서핑을 통해 얻은 기본 소스들만 계속해서 보다가 시간만 왕창날렸다. 웹에서 돌아가는건데 당연히 웹에서 테스트해야지.ㅠㅠ 우분투를 쓰고 있고, 아주 오래전에 아파치 웹서버를 설치해 놓았었기 때문에 따로 뭐 더 설치할 것은 없고, 파이썬을 CGI처럼 쓰기 위한 설정작업이 조금 필요했다.

아파치1을 설치했으면 httpd.conf 파일을 설정해야되는 것 같던데, 나는 아파치2를 설치해서 다른 파일을 손봐야했다. /etc/apache2/sites-enabled 폴더에 가면 000-default 파일이 있다. 이 파일은 관리자 권한으로 접근해야 수정할 수 있다.

sudo vi /etc/apache2/sites-enabled/000-default
터미널을 실행한 뒤 위의 명령어를 입력하면 해당 파일을 vi 편집기로 편집할 수 있다. (나는 vi 대신 gedit 을 이용했다.

...

<Directory /var/www>
          Options Indexes FollowSymLinks MultiViews
          AllowOverride None
          Order allow,deny
          allow from all
          Options +ExecCGI
         AddHandler cgi-script .cgi .py
</Directory>
... 



나는 따로 웹서버의 루트 폴더를 사용자 계정으로 바꾸지 않았기 대문에, 웹서버의 루트폴더는 기본 폴더인 /var/www 로 되어있었다. 000-default 파일을 보면 위와 같은 부분이 있다. 당연히 빨간색 두 줄은 내가 직접 추가한 파일이다. 저 빨간색 두 줄을 추가하도록하자.
Options +ExecCGI 는 웹서버에서 CGI를 실행가능하도록 하는 설정이고
AddHandler cgi-script 는 어떤 확장자의 파일을 실행할 것인지 설정한다. 뒤에 실행할 파일의 확장자를 추가해주면 된다. 여기서는 .cgi와 .py를 추가했으므로 cgi파일과 python파일을 실행할 수 있다.
이제 웹서버쪽의 설정은 끝. 파이썬 코드를 작성해보자.

index.html

<!doctype>
<html>
<head>
</head>
<body>

<form name="form" method="get" action="http://localhost/cgi_test.py">
<p>
email : <input type="text" name="email">
name : <input type="text" name="name">
<input type="submit" value="CLICK">
</p>
</form>

</body>
</html>

cgi_test.py

#!/usr/bin/env python
#-*- coding: euc-kr -*-

import cgi
import cgitb    #스크립트 오류 등의 에러발생시 브라우저에 에러 내용을 보여준다.
cgitb.enable()

print("Content-type: text/html\n")    #\n 을 안하면 Internal Server Error 발생!

print('<html>')
print('<head>')
print('<title>Hello Word - First CGI Program</title>')
print('</head>')
print('<body>')

form = cgi.FieldStorage()

if "email" not in form:
    print("Error!")
else:
    print("Your email address is " + form["email"].value)


print('</body>')
print('</html>')



위 두 파일을 웹서버 루트폴더에 넣고 http://localhost/ 에 접속하면 아래와 같이 index.html파일이 열린다.


 텍스트박스에 임의의 내용을 입력하고 버튼을 클릭하면 cgi_test.py가 호출된다. 여기서 cgi라이브러리에 주목하자. cgi.FieldStorage() 가 실행되면서 index.html파일이 넘겨준 form의 내용을 form이라는 이름의 변수에 저장하고 있다. 그리고 넘겨받은 이름 중에 email 이란 것이 없으면 Error, 있으면 그 내용을 출력한다. 



성공적으로 form의 이메일을 잘 받아서 출력해주는 것을 알 수 있다. 이 외의 여러 cgi 관련 라이브러리들은 http://docs.python.org/py3k/library/cgi.html 에서 확인할 수 있다.

중간에 수도 없이 Internal Server Error 메시지를 보기도 하였고, cgitb 라이브러리를 이용하여 브라우저에 뜨는 에러메시지를 보니 파이썬2.7.1이 인터프리터로 나오는 등 무수한 문제점과 의문에 부딪혔었다. 쓸데없이 웹서버 설정을 이리저리 바꾸기도 하고 서버를 재시작하는 등 삽질을 하다가 파이썬3에서는 안된다는 어느 외쿡인의 글을 보면서 좌절하기도 했었는데 막상 성공하고나니 뿌듯하면서도 한편으로는 허무함. 오늘도 이렇게 나의 삽질 내공은 쌓여간다. 

저작자 표시 비영리 동일 조건 변경 허락
신고

박상근 프로그래밍/Python CGI, Python, python3, 아파치, 웹서버, 파이썬, 파이썬3

  1. 아파트2 ㅋㅋ

  2. 웃으라고 한 거예요 ㅋㅋㅋ

  3. 상근아~~~ㅋㅋ 블로깅하다가 우연히 왔는데 왜이리 반갑닝~ ㅋㅋㅋ 즐겨찾기할께 ㅋㅋ

  4. 요즘은 뜸하노~ 포스팅 안하나?

[Python] 이클립스에서 파이썬 개발 환경 구축하기

2011.05.27 22:06
Vim으로 Python을 코딩하다보니 바로바로 내가 틀리게 코딩한 부분에 대해 인식하기가 힘들고, 각 객체에 내장된 라이브러리들을 바로 알기도 힘들다. IDLE(통합 개발 환경)을 설치해보기도 했지만 Vim보다 파이썬에 조금 더 최적화되었다는 정도의 느낌밖에 들지 않는다. 그래서 뭔가 제대로 된 것을 찾다가 이클립스에서 파이썬 플러그인을 설치할 수 있다는 정보를 입수하였다.
 

이클립스를 실행하고 메뉴의 Help -> Install New Software 를 선택한다.

우측 상단의 Add 버튼을 클릭한다.

 Name에 PyDev, Location에 http://pydev.org/update 를 입력하고 OK.

 PyDev와 PyDev Mylyn Intergration을 설치할 수 있다. NEXT 버튼을 클릭하자
(만약 다음으로 넘어가서 설치에 실패한다면 PyDev만 체크하고 NEXT를 클릭하자) 

 

설치할 파일들의 목록들이 나온다. 라이센스 내용을 확인 후 I Accept... 에 체크하고 Finish!

 

이클립스 실행 후, File -> New -> Pydev Project를 선택하여 프로젝트를 시작할 수 있다.

파이썬 프로젝트 생성 화면에서 파이썬의 타입 및 버전, 인터프리터 등을 선택할 수 있다.

 

저작자 표시 비영리 동일 조건 변경 허락
신고

박상근 일상다반사 Eclips, IT, Python, 개발환경, 이클립스, 파이썬, 플러그인

  1. 좋은 정보 감사합니다. ㅎㅎㅎ

[Python] 파이썬으로 Google API 연동 셋팅하기

2011.05.20 08:32
구글에서는 Youtube, GoogleDoc, Blogger 등의 수많은 서비스의 API를 파이썬에서 이용할 수 있도록 지원해준다. 파이썬의 문법을 간단히 익혔으므로 본격적으로 이를 활용하여 간단한 앱들을 만들어보기로 했다. 

http://code.google.com/apis/gdata/articles/python_client_lib.html
다행히도 위 사이트에서  파이썬을 이용한 구글API 사용법을 친절하게 안내해주고 있다.

>>>from xml.etree import ElementTree
먼저 XML 라이브러리 설치 여부를 확인한다. 파이썬 인터프리터에서 위와 같이 입력하였을 때 아무 에러메시지 없이 잘 임폴트 되었다면 이미 설치되어 있는 것이므로 그냥 다음 단계로 넘어가면 된다. 만약 임폴트가 실패하면 http://effbot.org/downloads/#elementtree 에서 다운받아야 한다. 윈도우 사용자라면 exe파일을, 리눅스 사용자라면 zip파일을 받으면 된다. (리눅스 사용자는 압축을 푼 후 sudo ./setup.py install 를 터미널에 입력하여 설치하도록 하자)

http://code.google.com/p/gdata-python-client/downloads/list
위 URL에서 Google Data Library를 다운 받을 차례다. 가장 상위의 최신 버전을 다운받자. (윈도우 사용자는 zip파일을, 리눅스 사용자는 tar.gz파일을 받는다). 

나는 우분투 사용자이므로 tar.gz 파일을 받아 사용자 계정에 압축을 풀고
설치한 경로에서 sudo ./setup.py install 를 터미널에 입력하여 라이브러리를 설치하였다.

뭔가가 마구 설치되고 난 후,
정상 설치 테스트를 하기 위해 
sudo ./tests/run_data_tests.py 를 입력한다.

   위와 같이 OK가 계속 출력되면 정상적으로 라이브러리가 설치되었음을 확인할 수 있다.

이제 파이썬으로 구글API를 이용하기 위한 준비가 끝났다. 터미널에서 라이브러리 설치 경로로 이동해서 샘플 코드를 실행해 볼 수 있다. ./samples/docs/docs_example.py를 입력해보자.  


저작자 표시 비영리 동일 조건 변경 허락
신고

박상근 프로그래밍/Python Google API, IT, Python, 구글api, 라이브러리, 파이썬

  1. 잘 보고 갑니다 ^^ 저희 친하게 지낼 수 있을까요? ㅎㅎ

  2. 네, 친하게 지내BOA요^^

  3. 블로그 취지와 맞지 않군요. 삽질해야지 한번에 성공하시는게 어딨나요?

  4. 아, 삽질의 결과입니다. ㅎㅎ

  5. 저도 파이썬을 공부해보고 싶네요. 잘 부탁드립니다.

  6. 안녕하세요~
    혹시 웹사이트에
    구글 API 설치 하실수 있나요?
    예를 들어.. 지역정보, 구인구직, 부동산..
    이런 기능이 있는 사이튼데요
    거기에 지도 정보를 넣는 기능을 할껀데,
    한국이면 네이버를 쓸수 있는데, 제가 있는곳이 미국이라 구글맵을 사용해야 합니다ㅠ
    kimroosi@naver.com
    여기로 연락좀 주세요~

  7. 박사장~ 잘 보고 간다 ㅋㅋ 지금 돌리본다

[Python] 우분투에서 Django 설치하기

2011.05.20 03:21
Django(장고)는 강력한 언어인 파이썬으로 작성된, MVC 기반의 오픈소스 웹 프레임워크이다. 웹 애플리케이션을 쉽고 빠르게 개발할 수 있도록 도와주며, 최소한의 시간과 노력으로 웹 애플리케이션을 개발할 수 있도록 한다.

Django 설치 이전에 Python 2.4 이상의 2.x 버전이 설치되어 있어야한다. 단, 3.x 버전은 아직 지원하지 않는다.



http://www.djangoproject.com/download/  에서 Django를 다운받을 수 있다. 이를 다운 받은 뒤 사용자 계정에 압축을 풀었다. 터미널에서 sudo python setup.py install를 입력하여 설치를 시작한다. 터미널에서 수많은 설치과정이 진행되는 것을 볼 수 있다.
 




/usr/local/bindjango-admin.py 파일이 생성되어 있는 것을 확인할 수 있다. 현 위치에서 이 파일을 실행시킬 수도 있지만 나는 이 파일을 사용자 계정 위치로 옮겨서 실행하기로 했다. 터미널에서 python /usr/local/bin/django-admin.py startproject mysite 를 입력한다. 여기서 mysite는 자동으로 생성될 django 관련 폴더명을 뜻한다.


mysite라는 폴더가 생성되고 폴더 내에 4개의 파일이 만들어졌다.
 

python mysite/manage.py runserver 를 입력하여 서버를 실행해보자.
 

http://127.0.0.1:8000/ 으로 접속하면 위와 같은 화면을 볼 수 있다.

자, 이제 Django 설치가 간단하게 끝났다. 첫단계를 쉽게 끝냈으니 본격적으로 Django를 공부해보도록 하자! 
 

 
저작자 표시 비영리 동일 조건 변경 허락
신고

박상근 프로그래밍/Python django, IT, Python, 웹프레임워크, 장고, 파이썬

티스토리 툴바