일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
- pdo
- Spring
- javadoc
- webflux
- spring boot
- Eclipse
- php
- 외국인 노동자
- Ajax
- SQL
- swift
- jquery
- angularjs
- maven
- SQLite
- Apache
- 개발자 이야기
- RSocket
- xml
- mybatis
- 일본
- WebClient
- Java
- Linux
- node.js
- JavaFX
- build tool
- gradle
- Python
- bootstrap
- Today
- 123
- Total
- 3,697,220
슬기로운 개발자 생활
[JSP/Servlet] GAE 애플리케이션 생성 본문
개발 준비가 되면 드디어 Eclipse에서 GAE 애플리케이션을 만들어 보자. 그리고 GAE 사이트에 배포하여 동작시켜 보자.
GAE에 애플리케이션 준비
그럼, 실제로 Eclipse를 사용하여 Google App Engine에서 움직이는 Web 어플리케이션의 개발을 진행해 보자. 우선은 Web 어플리케이션의 기반이 되는 것을 만들어 실제로 GAE로 움직여 보는 정도만 해보도록 하자.
우선 Eclipse에서 개발에 들어가기 전에, GAE의 사이트에서 응용 프로그램의 등록을 해 둔다. GAE 사이트에서는 미리 응용 프로그램을 등록해 두고, 해당 응용 프로그램에 대해 Eclipse에서 개발한 Web 응용 프로그램을 배포(프로그램을 서버에 올려 공개하는 작업)을 하고 있습니다. 즉, GAE 사이트의 응용 프로그램은 "실제 Web 어플리케이션을 배치 위치" 같은 것으로 생각하면 좋을 것이다. 미리 Web 응용 프로그램을 게시할 장소를 확보 해두고, 거기에 배치하는 것이다.
https://console.cloud.google.com/appengine
그럼, 위의 주소(GAE 사이트)에 액세스 하자. 이 페이지는 응용 프로그램의 관리를 하는 페이지이다. 상단 프로젝트 목록 아이콘을 누르면, 거기에 자신이 등록한 응용 프로그램의 목록이 표시된다.
거기에서 플러스(+) 버튼을 누르면, 응용 프로그램의 등록 화면으로 이동한다. 여기에서 다음을 입력하여 등록한다.
- 프로젝트 이름 : 콘솔에서 프로젝트를 알아볼 수 있는 이름을 입력한다.
- 프로젝트 ID : 프로젝트 ID는 프로젝트의 전역적 고유 식별자이다. 프로젝트를 만든 이후에는 프로젝트 ID를 변경할 수 없다.
GAE는 최대 10개까지 무료로 앱을 만들 수 있기 때문에, 필요하게 되면 또 새로운 앱을 등록하면 된다.
등록 앱 이름은 무엇이든 상관 없다. 단, GAE에서 만드는 응용 프로그램은 모두 다른 이름으로 해야 하기에 스스로 적당하다고 생각하는 이름으로 정해 둔다.
프로젝트 만들기
자, 드디어 Eclipse에서 Web 응용 프로그램을 만드는 작업에 들어간다. Eclipse에서는 프로그램의 개발을 할 때 먼저 "프로젝트"라는 것을 만든다. 이를 만들어 보도록 하자.
프로젝트라는 것은 만드는 프로그램에 필요한 다양한 것을 정리하고 관리하는 것이다. 프로그램 작성을 할 시에는 많은 파일을 만들어 지고, 다양한 설정 등을 하거나 필요한 라이브러리를 등록하거나 여러가지 정보를 관리를 해야 한다. 그런 것들을 곳곳에 기록하고 개발자가 직접 관리하는 것은 힘든 때문에 "프로젝트"의 형태로 모두를 일괄 관리할 수 있는 것이다. 그럼, 또 절차대로 작업을 해보록 하자.
[File] 메뉴의 [New] 서브 메뉴에서 [Project ...]를 선택한다.
"Select a wizard"라는 대화 상자가 나타난다. 여기에서 만드는 프로젝트 유형을 선택한다. GAE에서 Java 개발을 할 경우 'Google'이라는 폴더에 있는 "Web Application Project"라는 항목을 사용하기에 이를 선택하고 "Next>"버튼을 클릭한다.
"Create a Web Application Project"라는 화면이 표시된다. 여기에서 만드는 프로젝트를 설정한다. 이는 프로젝트 작성에 있어서 중요하므로 잘 내용을 확인하고 설정한다.
Project name : 프로젝트의 이름이다. 이것은 앞에서 GAE 사이트에서 만든 응용 프로그램의 이름과 관련이 없다. 하고 싶은 이름으로 해도 된다. 여기에서는 "MyGaeApp"으로 한다.
Package : 이것은 생성하는 Java 클래스에서 사용하는 패키지를 지정한다. 이것은 각각 적당히 설정될 수 있지만, 일단 여기서는 "com.devkuma.mygaeapp"으로 한다.
Location : 프로젝트를 배치하는 위치 설정이다. 기본적으로 "Create new project in workspace"라디오 버튼이 선택되어 있다. 작업 영역(workspace)에 프로젝트를 저장하는 것이다. 이는 그대로 두기로 한다
Google SDKs
Use GWT : 이는 Google에서 제공하는 "GWT(Google Web Toolkit)"라는 프레임워크를 사용할지 여부를 지정한다. 이것을 ON으로 하면 GWT를 사용하는 응용 프로그램이다. GWT는 Ajax 기반으로 서버간의 상호 작용을 하는 것으로, 파일이나 프로그램의 구성도 복잡하게 사용하려면 일정 수준 이상의 지식이 요구된다. 여기에서는 서버 사이드 Java의 기초를 공부하는 것이 목적이기 때문에, 여기에서는 체크 상자를 "OFF"로 하고, GWT를 사용하지 않도록 한다.
Use Google App Engine : 이는 "Google App Engine"을 이용하기 위한 것이다. 체크를 ON으로 하면, GAE를 사용하는 형태로 프로젝트가 생성된다. 이것은 반드시 "ON"으로 한다.
Use default SDK : "Use Google App Engine"을 ON으로 하면 그 아래에 이 라디오 버튼이 표시된다. 이것은 기본적으로 설정되어있는 SDK를 사용하는 것이다. 이것은 그대로 둔다.
Identifiers for Google App Engine : 이는 GAE 사이트 프로젝트 식별자 즉, 아이디를 넣은 것인데 일단 "Leave Project ID field Blank"인 채로 놔둔다.
Sample Code : 처음부터 샘플로 일부 소스 코드 및 파일 등을 준비해두기 위한 것이다. "Generate project sample code"를 선택하면 파일이 생성됩니다. 이것은 "ON"상태로 유지 좋을 것이다.
이상, 설정을 다하고 "Finish"버튼을 누르면 프로젝트가 생성된다.
프로젝트의 구성 이해
프로젝트를 만들면 윈도우의 왼쪽에 있는 수직 공간에 "MyGaeApp"라는 폴더가 생성된다. 이 폴더의 왼쪽 ▽ 마크를 클릭하여 확장 보면 그 안에 여러가지 파일이나 폴더가 생성되어 있는 것을 확인 할 수 있다. 이 "MyGaeApp" 폴더가 생성한 프로젝트이다. 이 폴더에 있는 파일 등이 이번 만들 GAE 용 Web 응용 프로그램에 필요한 모든 기능이다.
이 왼쪽 길쭉한 지역은 "Project Explorer"라는 뷰이다. "뷰"라는 것은, Eclipse의 화면에 일부 배치되는 부품과 같다. Eclipse의 화면을 보면 몇 가지 사각형 영역의 조합으로 화면이 구성되어 있는지 알 수 있다. 이 하나 하나의 영역이 "뷰"이다. Eclipse는 개발의 내용이나 상황 등에 따라 필요한 뷰를 화면에 배치하여 작업을 진행하게 되어있는 것이다. 기본적으로 일반적인 서버 사이드 Java 개발에 필요한 뷰를 사용할 수 있도록 배치되어 있는 것이다.
왼쪽에 있는 Project Explorer라는 뷰는 프로젝트 내의 파일이나 라이브러리 등의 내용을 표시하고 관리하는 것이다. 여기에서 파일이나 폴더를 정리하고 두 번 클릭하여 파일을 열고 편집할 수 있다.
그럼 우선 이 Project Explorer에서 "MyGaeApp"폴더를 열고 안에 있는 항목을 살펴 보자. 다음과 같은 것이 있어야 한다.
src 폴더 : Java 소스 코드 파일을 배치하는 곳이다. 이를 확장하면 "com.devkuma.mygaeapp"라는 폴더가 나타나고, 그것을 더 확장하면 "MyGaeAppServlet.java"라는 Java 소스 코드 파일이 있을 것이다. 이는 기본적으로 자동 생성된 샘플 코드이다. 지금은 사용하지 않지만, "Java 클래스를 만들 때 여기에 소스 코드를 배치한다"는 것만은 기억하자.
App Engine SDK : 이것은 프로젝트에서 사용하는 GAE SDK의 라이브러리이다. GAE에는 Google 서비스를 이용하기 위해 독자적으로 제공하는 클래스가 많이 있다. 그것들을 사용할 수 있도록 준비된 라이브러리이다. 이것 자체를 무언가 조작하여 이용하는 일은 없다. GAE 프로젝트라면 자동으로 포함되므로 것으로 따로 만지지 않는다.
JRE System Library : 이것은 Java 시스템 라이브러리이다. Java의 기본이 되는 라이브러리이며 이것이 준비되어 있지 않으면 Java의 주요 기능은 사용할 수 없게 된다. Java 기반 프로젝트에 자동으로 포함되므로 이도 따로 만지지 않는다.
war 폴더 : 이것이 실제로 서버에 전개된 폴더이다. HTML과 스타일 시트, 이미지, 스크립트 등 Web에서 사용하는 파일들은 이 폴더에 넣어 둔다.
프로젝트에 우선 사용하는 것은 "war"폴더이다. 여기에 HTML 파일 등을 배치하고 서버에 접속하는 것이다. 이어서 Java 프로그램을 작성하게 되면 "src"폴더를 이용한다. 다른 두 라이브러리는 정말 아무것도 조작하지 않는다.
war 폴더
실제로 Web 어플리케이션으로 서버에 설치되는 것은 "war"폴더이다. 여기에는 기본적으로 다양한 폴더와 파일이 생성되어 있다. 이것들의 역할에 대해서 정리해 보겠다.
index.html : 기본적으로 샘플 파일로 생성되는 HTML 파일이다. Web 어플리케이션의 주소로 접속하면 이 파일이 가장 먼저 표시된다. 이 파일의 내용을 수정을 하여 첫 페이지를 작성할 수 있다.
favicon.ico : 응용 프로그램 아이콘 파일이다. 기본적으로 GAE의 작은 마크가 저장되어 있다. 나름대로 만든 이미지로 교체하여도 괜찮다.
WEB-INF 폴더 : 이는 Web 응용 프로그램 폴더에서 "공개되지 않은 폴더"이다. 이 속에 넣은 파일은 서버에 게시하고 액세스할 수 없다. 여기에 Web 어플리케이션의 중요한 정보가 저장된다.
lib 폴더 : WEB-INF에 있는 폴더이다. 이 안에는 Web 응용 프로그램에서 사용하는 다양한 라이브러리 파일들이 저장되어 있다. 기본적으로 GAE 관련 라이브러리가 포함된다. 물론 뭔가 라이브러리를 필요하면 여기에 파일을 추가하여 이용할 수 있다.
appengine-web.xml : GAE의 Web 어플리케이션에 관한 모든 설정을 작성한 XML 파일이다. 이 파일은 GAE 특유의 것으로, 다른 일반적인 Java의 Web 응용 프로그램은 없다. 여기에서 여러가지 설정을 할 수 있다.
logging.properties : 이 파일은 GAE 로그 설정 정보를 작성한다. 이 파일도 GAE 이외의 일반적인 Web 응용 프로그램은 없다. 이것은 편집하는 일은 거의 없을 거다.
web.xml : Web 어플리케이션에 대한 각종 정보를 작성하는 XML 파일이다. 이 파일은 GAE뿐만 아니라 일반적인 Java의 Web 응용 프로그램에서 사용할 수 있다.
대충 정리하면 서버 사이드 Java에 의해 Web 응용 프로그램은 다음과 같이 구성되어 있다.
배포하는 응용 프로그램 폴더에 HTML 파일이 보통으로 배치된다. 이는 일반적인 Web과 동일하다.
그 안에 "WEB-INF"라는 폴더가 있다. 이는 서버 사이드 Java 특성으로, 이 폴더는 외부에서 접근이 되지 않는다
WEB-INF 안에는 Web 응용 프로그램의 정보를 작성한 "web.xml"와 라이브러리를 배치하는 "lib"라는 폴더가 있다. (일반적인 Java의 Web 어플리케이션에서는, Java 프로그램인 클래스 파일도 여기에 저장된다)
Web 응용 프로그램 배포
그럼 작성한 프로젝트를 GAE 서버에 배포해 보자. 아직 아무것도 만들지 않지만 샘플 파일이 포함되어 있기 때문에, 일단 이대로 배포를 하여도 동작은 한다.
먼저 프로젝트를 GAE에 설치한 응용 프로그램에 배포하는데 필요한 설정을 해 둔다. "WEB-INF"에 있는 "appengine-web.xml"를 두 번 클릭하여 연다. XML 편집기 (XML 데이터를 편집하는 전용 편집기)에서 파일이 열린다. 이 XML 편집기는 XML 태그 목록 내용을 편집할 수 있도록 되어 있다.
태그 목록은 왼쪽에는 항목의 이름이 표시되고, 오른쪽에는 그 값이 표시된다. 이 오른쪽 값 부분을 더블 클릭하면 값을 편집 할 수 있다. 수정을 한 후에는 [File] 메뉴의 [Save]로 저장한다. 혹은 단축키 Ctrl+S
로 저장할 수 있다.
이 파일을 열면 안에 다음 항목이 있을 것이다. 이를 설정을 하여라.
- application : 이것은 배포하는 GAE 응용 프로그램 이름을 지정한다. 먼저, GAE의 사이트에서 작성했었던 "프로젝트 ID" 를 여기에 입력한다.
만약 XML 편집기가 잘 작동하지 않는 경우는 편집기 영역 아래에있는 'Design', 'Source'라는 탭에서 "Source"를 클릭하여 선택한다. XML 소스 코드를 직접 텍스트 편집기로 편집할 수 있다. 여기서 시작 부분에 적혀 있는 다음 부분을 수정한다.
<? xml version = "1.0"encoding = "utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application> ... 여기에 프로젝트 ID를 쓴다 ... </application>
<version>1</version>
...... 이하 생략 ......
여기서 <application> ~ </application>
태그 사이에 "프로젝트 ID"를 작성하면 된다.
배치 실행
XML 파일의 수정을 하였다면, 프로젝트를 배포를 해보자. 다음 단계에 따라 실행하면 된다.
Package Explorer에서 프로젝트 폴더 ("MyGaeApp"폴더)를 클릭하여 선택한다.
메뉴 아래에 있는 도구바의 왼쪽에서 4번째 아이콘 (파란 동그라미 안에, Google의 'g'가 그려져 있는 녀석)를 클릭하면, 메뉴가 팝업 표시된다. 이 중에서 [Deploy to App Engine ...] 항목을 선택한다.
화면에 Google 계정의 로그인 화면이 나타난다 (아직 Eclipse에서 로그인하지 않은 경우). 여기에서 GAE 계정으로 등록되어 있는 이메일 주소와 비밀번호를 입력하고 "로그인"을 클릭하여 로그인한다.
"Google Plugin for Eclipse가 다음과 같은 권한을 요청하고 있다"라는 표시가 나타납니다. "허용"버튼을 누른다.
- ※ 이 1 ~ 4의 부분은 Eclipse에서 Google에 로그인하고 있으면, 이후는 표시되지 않는다.
"Delpoy"라는 대화 상자가 나타난다. 여기에서 배포하는 프로젝트를 지정한다. 여기에서는 "MyGaeApp"이라고 되어있는 것이므로, 그대로"Deploy "버튼을 누른다. 만약 프로젝트가 설정되어 있지 않으면, 오른쪽의 "Browse ..."버튼을 눌러 프로젝트를 선택한다.
배포가 실행되면, 화면에 대화 상자가 나타나 진행 상황을 진행률 표시 줄에 표시된다. 대화 상자가 사라지면 무사 배포가 종료되면, 웹페이지가 열린다.
그럼 배포되면 GAE 사이트 (https://console.cloud.google.com/appengine/)에 액세스한다. 상단에서 해당 프로젝트를 선택하고 [대시 보드]를 선택하면 버전은 "1"로 표시가 되어 있고, 오른쪽 편에 URL(예 : 프로젝트아이디.appspot.com)이 표시되어 있다. 이 URL을 클릭하면 Web 응용 프로그램에 액세스되고, "Hello App Engine!"라고 표시된 페이지가 나타나면 배포 성공이다!
배포된 주소를 살펴보면 다음과 같이 되어 있는 것을 알 수 있다.
http://프로젝트아이디.appspot.com
GAE의 응용 프로그램은 모두 이런 식으로 주소가 할당된다. 물론 보통의 Web 사이트처럼 공개되어 누구나 액세스할 수 있다. 아직 단지 샘플이기 때문에 공개해도 의미는 없지만, 지금부터 공부해서 나름대로의 Web 어플리케이션이 된다면, 공개하면 많은 사람이 사용해 줄 것이다.
'IT 개발 > JSP, Servlet' 카테고리의 다른 글
[JSP/Servlet] 서블릿(Servlet) (3) | 2017.12.10 |
---|---|
[JSP/Servlet] 세션과 쿠키 (0) | 2017.12.10 |
[JSP/Servlet] 클라이언트와 서버 사이의 값 전달 (0) | 2017.12.10 |
[JSP/Servlet] JSP(Java Server Pages) (0) | 2017.12.10 |
[JSP/Servlet] Google App Engine 개발 준비 (0) | 2017.12.10 |