[컴][웹] 파이썬 이용한 구글 앱 엔진 사용기

파이썬 이용한 구글 앱 엔진 사용기

구글앱엔진 SDK 다운받기
download google app engine SDK
https://developers.google.com/appengine/
image

image
따로 다운 받아도 되고, google plugin for eclipse(GPE) 를 설치할 때 설치해도 된다.
설치하면, USERPATH 에 product path 가 추가된다.

image


구글 이클립스 플러그인
google plugin for eclipse
https://developers.google.com/eclipse/

eclipse indigo(3.7) 에서 구글 플러그인 인스톨하기
https://developers.google.com/eclipse/docs/install-eclipse-3.7

help –> install new software 를 해서 아래 표시된 2가지를 설치하자.
  • Google Plugin for Eclipse(required)
  • SDKs
image

설치가 끝난 후 eclipse 를 restrat 하게 될 것이다.

New Project Creation
새로운 project 를 만들어 보자.
File –> New –> Project –> Web Application Project
처음에는 interpreter 설정이 되어 있지 않다. 그러면, 링크처럼 보이는 파란글씨를 누르면 Preferences 창이 뜨게 된다. 여기서 Auto Config 를 눌러서 설정 해 주면 된다.
다음에 google app engine SDK path 의 설정이 필요하다.
    • dev_appserver.py
    • appcfg.py
가 있는 google app engine SDK path 를 설정 해 주자.
image

image

image

SDK path


HelloWorld : helloword.py + app.yaml
https://developers.google.com/appengine/docs/python/gettingstartedpython27/helloworld
여기에 있는 예제를 실행 해 보자.
  • helloworld.py
  • app.yaml : 어떤 URL 에 어떤 handler를 호출하는지에 대한 description 이다.
위의 파일들을 만들어서, 위에서 만들었던 project 안에 넣자. 그리고 당연히 Refresh(F5) 를 하자.


실행, web server 띄우기
이제 helloworld 를 실행 시켜 보자.
Run –> Run
처음 실행 시키면 아래 같은 문구가 console 창에 뜬다. 저기 물음에 답해주지 않으면, 계속 실행되지 않고 있으니 참고하기 바란다.
WARNING  2012-07-26 08:53:43,734 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded.
INFO     2012-07-26 08:53:44,592 appengine_rpc.py:160] Server: appengine.google.com
Allow dev_appserver to check for updates on startup? (Y/n): Ydev_appserver will check for updates on startup.  To change this setting, edit C:\Users\namh/.appcfg_nag
INFO     2012-07-26 08:54:58,085 appcfg.py:582] Checking for updates to the SDK.
INFO     2012-07-26 08:55:00,858 appcfg.py:600] The SDK is up to date.
WARNING  2012-07-26 08:55:00,858 datastore_file_stub.py:518] Could not read datastore data from e:\temp\dev_appserver.datastore
WARNING  2012-07-26 08:55:00,943 dev_appserver.py:3498] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
INFO     2012-07-26 08:55:00,961 dev_appserver_multiprocess.py:647] Running application dev~helloworld on port 8080: http://localhost:8080
INFO     2012-07-26 08:55:00,963 dev_appserver_multiprocess.py:649] Admin console is available at: http://localhost:8080/_ah/admin
INFO     2012-07-26 08:55:37,937 dev_appserver.py:2952] "GET / HTTP/1.1" 200 -
INFO     2012-07-26 08:55:38,114 dev_appserver.py:2952] "GET /favicon.ico HTTP/1.1" 404 -


command 창에서 띄우기
src 폴더 안에 helloworld.py 와 app.yaml 이 있다고 한다면 아래처럼 command 를 입력하면 된다.
c:\Program Files\Google\google_appengine\dev_appserver.py" ./src
d:\mine\programming\eclipse\goolgeapp\popmap>"c:\Program Files\Google\google_appengine\dev_appserver.py" ./src
WARNING  2012-07-26 09:03:58,065 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded.
INFO     2012-07-26 09:03:58,430 appengine_rpc.py:160] Server: appengine.google.com
INFO     2012-07-26 09:03:58,436 appcfg.py:582] Checking for updates to the SDK.
NFO     2012-07-26 09:04:01,078 appcfg.py:600] The SDK is up to date.
WARNING  2012-07-26 09:04:01,079 datastore_file_stub.py:518] Could not read data store data from e:\temp\dev_appserver.datastore
WARNING  2012-07-26 09:04:01,119 dev_appserver.py:3498] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
INFO     2012-07-26 09:04:01,132 dev_appserver_multiprocess.py:647] Running application dev~helloworld on port 8080: http://localhost:8080
INFO     2012-07-26 09:04:01,132 dev_appserver_multiprocess.py:649] Admin console is available at: http://localhost:8080/_ah/admin


local 에서 결과 확인하기
http://localhost:8080
에 가면 아래 처럼 화면이 뜰 것이다. 그러면 성공적으로 local 에서의 test 를 마친 것이다.
참고로, 소스를 고친후에 server 를 다시 띄우거나 하지 않아도 된다. 그냥 web browser에서 refresh 를 눌러주면 된다.
image

helloworld.py
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import webapp2

class MainPage(webapp2.RequestHandler):
  def get(self):
      '''
          get() : response of the HTTP GET request
      '''
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.out.write('Hello, webapp World!')
      
      #self.request has the info of request packet
      self.response.out.write(self.request)

'''
    debug = True
    shows the info when the server encounter an error
'''
app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)





위 주석으로 helloworld.py 를 대략 파악하자. webapp2 는 framework 이다. 이 밖에도 google app engine 에서는 여러가지 framework 를 사용할 수 있다.





/sign URL 의 추가

이번에는 localhost:8080 에 form 을 만들고, 이것을 submit 해서 /sign 에 보내는 웹페이지에 대한 작업 내용이다. 아래 그림을 보면 이해가 쉬울 듯 하다.

image



image

댓글 2개:

  1. 작성자가 댓글을 삭제했습니다.

    답글삭제
  2. 안녕하세요 구글앱엔진을 공부 중 인 학생입니다
    현재 phpstrom이란 툴을 사용 해 개발 환경을 구축중입니다
    그런데 콘솔창의 Allow dev_appserver to check for updates on startup? (Y/n) 에 어떻게 답을 줘야 할지 몰라 헤매고 있는 상태입니다
    http://goo.gl/2qalqy <<캡쳐이미지 입니다. 확인 후 답변 주시면 감사하겠습니다. ㅜㅜ

    답글삭제