OSX에서 Servlet/JSP 개발 환경 만들기
  1. Tomcat 설치
  2. Eclipse 설치
  3. PostreSQL 설치

3. PostgreSQL 설치

  왜 MySQL이 아니고 PostgreSQL 이냐고 하시는 분들은 MySQL 설치하시면 되겠습니다. 별 다른 이유는 없습니다. 그냥 어색한(?) DB를 사용하고 싶을 뿐입니다.

 PostgreSQL을 설치하는 방법은 직접 소스를 다운 받아서 컴파일 하는 방법 Port를 이용해여 다운 받고 설치하는 방법 컴파일된 바이너리를 설치하는 방법이 있습니다. 여기서는 가장 쉬운 방법인 컴파일된 바이너리를 내려 받아서 설치했습니다. 그래서 다운 받는 곳과 간단한 설치 화면만 보여 드리겠습니다.

 PostgreSQL 설치 바이너리는 구글에서 검색을 하면 여러(?) 곳에서 만들고 있습니다. 저는 개인적으로 인스톨러까지 갖춰져 있고 나름 관리가 잘 되는 듯한 곳인 EnterpriseDB 라는 곳에서 다운로드하고 설치하여 사용합니다. 이 페이지에서 다운로드 할 수 있습니다. 알고 계시겠지만 Mac OS X용으로 다운로드 받으세요. 제가 설치한 버전은 8.3.5-2 버전으로 다운로드한 파일은 파일명이 postgresql-8.3.5-2-osx.dmg인 이미지 파일입니다. 이 이미지를 마운트 하면 설치 파일이 있습니다. 이 파일로 PostgreSQL을 설치하면 되겠습니다.

사용자 삽입 이미지

인스톨러를 실행하면 위 그림과 같은 설치 화면이 나타납니다. Shared memory에 대한 설정이 없다고 리부팅하라는 메시지가 나타나기도 합니다. 하라는대로 리부팅하고 다시 인스톨러를 실행하면 설치가 됩니다.

 설치 프로그램에서는 특별히 설정할것이 없기 때문에속 해서 Next 버튼을 누르시면 됩니다. 단, 중간에 설치할 경로가 나타나는데, 다른 곳에 설치하시려면 변경하면 되겠습니다. PostgreSQL 설치가 끝나면 Stack Builder라는 것을 설치할 것인지 물어봅니다. 이 Stack Builder에는 다양한 PostgreSQL관련 응용/웹 프로그램, 데이터베이스 드라이버 등을 쉽게 다운로드 받고 설치할 수 있습니다. 우리의 주 목적이 JSP에서 사용하기 위해서 설치하는 것이기 때문에 JDBC가 필요합니다. 그래서 Yes를 선택해서 StackBuilder 설치를 시작합니다. 설치 화면은 아래 그림과 같고 저는 Database Drivers에서 pgJDBC v8.3.603을 체크했습니다. 

사용자 삽입 이미지

Next 버튼을 클릭하면 선택한 각각의 설치 프로그램을 다운 받고, (이 경우에는 JDBC 드라이버만 다운을 받겠지요) 설치 프로그램을 시작합니다.

사용자 삽입 이미지

위 그림은 JDBC 드라이버 설치 화면입니다. Next를 클릭하면 JDBC를 설치할 경로를 설정하는 화면이 나타납니다. 여기서 Next버튼을 누르면 JDBC를 설치하게 됩니다.
 이제 PostgreSQL 설치가 끝났습니다. Finder를 열고, 응용 프로그램에 보시면 PostgreSQL 8.3 폴더와 PostgreSQL 폴더가 만들어져 있습니다. PostgreSQL 폴더에는 PostgreSQL JDBC Driver 홈페이지로 가는 링크 파일만 있고 PostgreSQL 8.3 폴더에 몇가지 응용 프로그램이 설치된 것을 볼 수 있습니다. 

  •  Application Stack Builder는 위에서 살펴본거 처럼 추가 프로그램의 설치를 도와주는 프로그램입니다. 실행하시면 위에서 Stack Builder를 수행했을 때와 동일한 과정을 다시 할 수 있습니다.
  •  pgAdmin III는 PostgreSQL의 GUI 클라이언트 프로그램이라고 생각하시면 됩니다. 데이터베이스를 관리 할 수도 있고 로그인할 사용자를 관리하거나 PostgreSQL 전반적인 기능을 수행할 수 있습니다. 
  • Restart Server, Start Server, Stop Server는 말그대로 PostgreSQL서버를 재시작하고, 시작하고, 중단 시키는 프로그램(스크립트 실행)입니다. 
  • SQL Shell (psql)은 터미널에서 psql을 시작하게 해 줍니다.

 이제 설치도 끝났고 마지막으로 JDBC가 잘 설치 됐는지를 확인하겠습니다.
이를 위해서 Eclipse에서 PostgreSQL에 연결해서 간단한 쿼리문을 실행하는 간단한 테스트 프로그램을 만들어서 수행해 보겠습니다. 이 예제에서는 sangkle이라는 Database를 사용하고, 로그인 롤로 sangkle 이라는 사용자를 사용합니다.

 예제 프로그램을 위한 간단한 테이블을 만들어 보겠습니다. 예제에서 사용할 테이블은 mytable이고 이름(name)과 나이(age) 컬럼을 가지고 있습니다. 그리고 예제를 위해서 세개의 레코드를 삽입합니다.


CREATE TABLE mytable ( 
	name varchar(80) PRIMARY KEY,
	age int 
); 
INSERT INTO mytable (name, age) VALUES ('홍길동', 34);
INSERT INTO mytable (name, age) VALUES ('영구', 44);
INSERT INTO mytable (name, age) VALUES ('맹구', 32);

이클립스를 실행하고 새로운 프로젝트를 생성합니다. JDBC 드라이버를 사용하기 위해서 프로젝트의 Build Path에 JDBC 드라이버 파일(jar)를 추가합니다. 위 JDBC 드라이버 설치 프로그램으로 설치했으면 /Library/PostgreSQL/pgJDBC에  PostgreSQL를 위한 JDBC 드라이버 파일들이 있습니다.
JDK 버전에 맞는 드라이버 파일을 추가합니다. (JDK 버전에 따른 PostgreSQL JDBC 드라이버 파일은 PostgreSQL JDBC 홈페이지에서 확인할 수 있습니다.) OS X에 기본으로 설치된 Java의 버전이 1.5이기 때문에 이 예제에서는 postgresql-8.3-603.jdbc3.jar을 선택했습니다.
그리고 이 프로젝트에 다음과 같은 클래스 하나를 추가합니다.


import java.sql.*;
public class ConnectToPostgreSQL {
	public static void testPg() {
		Connection conn;
		
		try{
			Class.forName("org.postgresql.Driver");
		} catch (ClassNotFoundException cnfe){
			System.out.println("JDBC driver를 찾을 수 없습니다.");
			System.exit(1);
		}
		try {
			conn = DriverManager.getConnection
					("jdbc:postgresql://localhost/sangkle", "sangkle", "비밀번호");
		
			Statement st = conn.createStatement();
			ResultSet rs = st.executeQuery("Select * From mytable");
			while(rs.next()) {
				System.out.printf("Name : %s , Age : %d\n", rs.getString(1), rs.getInt(2));
			}
			rs.close();
			st.close();
			conn.close();
		} catch (SQLException sqle) {
			 System.out.println("연결할 수 없습니다.");
			 System.out.println(sqle.toString());
			 System.exit(1);
		}
	}
	
	public static void main(String args[]) {
		ConnectToPostgreSQL.testPg();
	}
}

위 코드 14행에 데이터베이스명, 사용자 ID, 비밀번호는 알맞게 수정하시기 바랍니다. 위에서 설명했지만 이 예제에서는 데이터베이스 명이 sangkle이고 사용자도 sangkle을 사용합니다.
이 코드를 수행하면 다은과 같은 결과가 나타납니다.


Name : 홍길동 , Age : 34
Name : 영구 , Age : 44
Name : 맹구 , Age : 32
2008/12/16 02:31 2008/12/16 02:31
Sangkle 이 작성.

OSX에서 Servlet/JSP 개발 환경 만들기


  1. Tomcat 설치
  2. Eclipse 설치
  3. PostreSQL 설치

2. Eclipse 설치


문서를 작성할 당시 Eclipse 3.4가 발표되었습니다. 그래서 이 버전을 다운 받아서 설치합니다. 이클립스 다운로드는 아래 다운 로드 주소를 참고 하십시오. 다만 OSX용 이클립스는 Cocoa가 아닌 Carbon을 사용하기 때문에 조금 어색하거나 잘못 표기되는 부분이 있습니다. 그래도 편하고 좋습니다.


이클립스를 Java EE로 받으셨다면 업데이트 할 내용이 별로 없지만, Classic을 받으셨다면 몇가지 플러그인을 설치하셔야 합니다.

이클립스에 웹 개발 플러그인 설치 [보기]



설치 할 걸 다 하셨으면 톰캣을 설정해 보겠습니다. 별로 어렵지 않습니다. 그저 클릭만 열심히 하시면 됩니다. :-)

Preference를 열어서 톰캣을 설정하겠습니다.
사용자 삽입 이미지
위 그림처럼 Preferences 창의 Server - Runtime Environment 탭으로 이동합니다. 여기서 Add...버튼을 클릭하세요. 클릭하시면 아래 그림과 같은 New Server Runtime Environment 창이 나오게 됩니다. 여기서 톰캣을 설정하겠습니다.
사용자 삽입 이미지
위 그림과 같이 Apache Tomcat v6.0을 선택하고 아래에 Create a new local server를 선택해 주고 Next를 수행합니다. Create a new local server를 선택하면 톰캣 설정 파일들을 다른 곳에 복사해서 사용하게 됩니다.
사용자 삽입 이미지

Name은 아무 이름이나 입력하셔도 됩니다. 중요한 것은 Tomcat installation directory입니다. 설치된 톰캣의 위치를 설정하시면 됩니다. 이전에 Tomcat 설치를 타라하셨으면 위 그림과 같은 경로입니다. JRE는 특별히 설정할 것이 없습니다. 그리고 Finish를 클릭하세요.

이제 새로운 프로젝트를 시작해 보겠습니다.
Perspective를 Java EE 또는 Web으로 변경합니다. 이클립스 메인 메뉴에서 File → New Dynamic Web Project를 선택하고 프로젝트 이름을 입력합니다. 여기에서는 "TestSangkle"이라는 이름으로 프로젝트를 만듭니다.
사용자 삽입 이미지
위 그림에서 처럼 Target Runtime을 위에서 설정한 톰캣으로 설정해 줍니다. 여기를 설정하면 그 아래에 Dynamic Web Module versionConfiguration이 자동으로 변경 됩니다.
Finish 버튼을 클릭합니다.

Project Explorer에 TestSangkle 프로젝트가 생겼습니다.
서블릿 하나를 추가합니다.
사용자 삽입 이미지
서블릿 이름을 입력하고 Next 버튼을 클릭합니다.
사용자 삽입 이미지
여기서는 서블릿 이름을 sangkle로 설정하고 url을 /sangkle.do 로 맵핑했습니다.
위 그림과 같이 필요한 정보를 입력하고 Next 버튼을 클릭합니다.
사용자 삽입 이미지
여기서는 서블릿 클래스를 생성하기 위한 옵션을 선택하면 됩니다. 뒤에 doGet을 수정하기 때문에 doGet을 선택하고 doPost 메소드 체크를 해제했습니다.

이제 Sangkle.java파일이 새로 생기고 화면에 나타납니다. 단순히 테스트를 할 것이기 때문에 아래와 같이 doGet 메소드를 변경 합니다.
[code java nocontrols]
protected void doGet ( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(request, response);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Sangkle Test");
out.flush();
}

※ 위 코드에서 PrintWriter를 사용하기 때문에 java.io.*를 import 해 줘야 합니다.

이제 수행을 해 보겠습니다.
사용자 삽입 이미지
Run 버튼을 클릭하거나 하면 위와 같은 Run On Server화면이 나타납니다. 이미 Server를 설정해 놨기 때문에 설정해 둔 서버를 선택하면 됩니다. Next를 클릭합니다.
사용자 삽입 이미지
TestSangkle 프로젝트를 만들 때 이미 톰캣 서버에 대한 구성을 했기 때문에 이 프로젝트를 추가할 필요는 없습니다. Finish 버튼을 클릭합니다.
사용자 삽입 이미지
이제 위 그림과 같이 수행 되는 것을 보실 수 있습니다.
수고하셨습니다. :-)
2008/07/25 10:02 2008/07/25 10:02
Sangkle 이 작성.

OSX에서 Servlet/JSP 개발 환경 만들기


  1. Tomcat 설치
  2. Eclipse 설치
  3. PostreSQL 설치

1. Tomcat 설치


사용자 삽입 이미지
 OSX 10.5(Leopard)에는 자바가 /Library/Java/Home에 설치되어 있습니다. 하지만 환경변수 JAVA_HOME은 설정돼 있지 않습니다. 때문에 설치된 JDK 경로를 JAVA_HOME에 설정해 줘야 합니다. 일반적으로 기본 설치된 터미널을 열면 bash가 기본 쉘로 사용됩니다. 환경변수를 설정하기 가장 좋은 곳은 ~/.profile 입니다. 저는 다음과 같이 설정하고 사용하고 있습니다.

[code bash nogutter nocontrols]
export JAVA_HOME=/Library/Java/Home
export CATALINA_HOME=/Library/Tomcat/Home

 

톰캣 바이너리 다운로드 및 설치


 톰 캣은 소스를 받고 컴파일 하여 설치할 수도 있습니다. 하지만 특이한 설정을 사용하지 않는 이상 컴파일 된 바이너리를 받아서 설치하는 편이 시간과 머리 사용을 절약할 수 있습니다. 톰캣은 여기(톰캣 다운로드)에서 다운 받을 수 있습니다. 이 글을 작성할 때 톰캣의 최신 버전은 6.0.16입니다. 톰캣 홈페이지에서 바이너리 파일 apache-tomcat-6.0.16.tar.gz을 바탕화면(~/Desktop)에 다운 받은 것으로 가정하겠습니다.

톰캣은 /Library에 설치하겠습니다.

[code bash nogutter nocontrols]cd /Library
mkdir Tomcat
cd Tomcat
tar xvf ~/Desktop/apache-tomcat-6.0.16.tar.gz
ln –s apache-tomcat-6.0.16 Home



톰캣 바이너리 파일에는 OSX에는 필요 없는 파일이 있습니다. 이 파일들은 톰캣이 설치된 곳의 bin에 있습니다. 다음 명령을 이용합니다.

[code bash nogutter nocontrols]cd /Libaray/Tomcat/Home/bin
rm –f *.bat *.exe


톰캣 시작 및 중지

이제 톰캣을 시작 해 보겠습니다.

[code bash nogutter nocontrols 1]cd /Libaray/Tomcat/Home/bin
./startup.sh


사용자 삽입 이미지

위와 유사한 화면이 보입니다. 에러가 발생하는지를 잘 보셔야 합니다. 마지막 문장을 잘 보시면 됩니다. 에러가 발생하지 않으면 http://localhost:8080/ 에서 고양이를 보실 수 있습니다.

포트 번호 80으로 변경 - conf/server.xml 수정

톰캣은 HTTP의 기본 TCP 포트 번호인 80을 사용하지 않고 8080을 사용합니다. 80 번을 사용하기 위해서는 물론 다른 서비스가 80번을 사용하고 있지 않아야 합니다. 그리고 톰캣이 설치된 곳의 conf/server.xml 파일을 수정하면 됩니다. (이 예제를 따라하셨으면 /Library/Tomcat/Home/conf/server.xml 입니다. )
[code xml nocontrols 80 ]
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

여기에 port 속성 8080을 80으로 변경하면 됩니다.

Invoker Servlet 사용 - conf/web.xml, conf/context.xml 수정

또, invoker Servlet을 사용하기 비활성된(주석 처리된) 것을 활성화 해 줘야 합니다. 이는 conf/web.xml 파일을 수정합니다. (이 예제를 따라하셨으면 /Library/Tomcat/Home/conf/web.xml 입니다. )
[code xml nocontrols 115 ]
<!--
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
-->


[code xml nocontrols 374]
<!--
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
-->

위 두 곳에 있는 <!--, -->을 삭제합니다.

다음은 context.xml 파일에서 <Context>를 다음과 같이 수정합니다.
[code xml nocontrols 19]
<Context reloadable="true" privileged="true">



Mod_Jk 설치

Mod_Jk 는 아파치(Apache)와 톰캣을 연결해 주는 기능을 담당합니다. 다음 페이지에서 다운 받을 수 있습니다. 이 문서를 작성할 때 최신 버전은 1.2.26 입니다. 바이너리 파일을 다운 받아서 설치하셔도 됩니다. 하지만 약간 문제가 있습니다. OSX에 따라오는 아파치는 유니버설 버전입니다. 이는 여러 프로세스 아키텍처에서 수행할 수 있다는 뜻입니다. PPC, PPC64, i386, x86_64 등등 입니다. 따라서 설치된 HTTPD(아파치 데몬)에 따라서 Mod_Jk를 맞게 설치해야 합니다. 그래서 여기서는 소스 파일을 다운 받고 컴파일 하여 사용하겠습니다.

설치된 아파치 컴파일 정보 찾기
/usr/sbin/httpd –VL
을 수행하면 필요한 정보가 나타납니다.

제가 가지고 있는 Leopard가 설치된 맥북에서는 다음과 같은 결과를 보여 줬습니다.
사용자 삽입 이미지

[code bash nogutter nocontrols]
#빌드 하고 설치하기
cd /usr/local/src/tomcat-connectors-1.2.26-src/native

# 32bit
./configure --with-apxs=/usr/sbin/apxs

# x86_64 ( Core 2 Duo, Xeon )
./configure CFLAGS='-arch x86_64' APXSLDFLAGS=' -arch x86_64' --with-apxs=/usr/sbin/apxs

# PPC
./configure CFLAGS='-arch ppc' APXSLDFLAGS='-arch ppc' --with-apxs=/usr/sbin/apxs

# PPC64
./configure CFLAGS='-arch ppc64' APXSLDFLAGS='-arch ppc64' --with-apxs=/usr/sbin/apxs

# 빌드하기
make

# 설치하기
sudo make install


사용자 삽입 이미지

/etc/apache2/httpd.conf 파일 끝에 다음을 추가합니다.

[code xml nogutter nocontrols]
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module libexec/apache2/mod_jk.so
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/apache2/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/apache2/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything for context /examples to worker named ajp13 (ajp13)
JkMount /examples/* ajp13
JkMount /host-manager/* ajp13
JkMount /docs/* ajp13
JkMount /manager/* ajp13



/etc/apache2 에 workers.properties 파일을 만들고 다음을 붙여 넣기 합니다.

[code xml nogutter nocontrols]
worker.list=ajp13
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009



이제 정말 끝입니다.
톰캣을 다시 시작해 보세요. 이제는 http://localhost 에서도 고양이를 보실 수 있습니다.
만약에 톰캣 시동중에 에러가 발생하면,  설정파일에 뭔가 에러가 생긴것이기 때문에 잘 수정 하시기 바랍니다. :-)
2008/07/25 04:30 2008/07/25 04:30
Sangkle 이 작성.