• 설치
    # yum install postgresql84 postgresql84-devel postgresql84-libs postgresql84-contrib postgresql84-server
    
  • DB 초기화
    # service postgresql initdb
    
    /var/lib/pgsql/data 에 초기화된 파일들이 생성된다.
  • 설정파일 위치 : /var/lib/pgsql/data
  • 시스템 부팅시 자동으로 실행되게 하려면, ntsysv 에서 postgresql 을 체크해주어야 한다.
  • 사용자, DB 생성
    # su - postgres
    # psql
    postgres=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
    postgres=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
    
  • 계정으로 로그인할 수 있도록 연결설정
    # su -
    # cd /var/lib/pgsql/data/
    # vi pg_hba.conf
    모두 주석으로 막고 아래만 남김
    host    all         all         0.0.0.0           0.0.0.0           password
    local   all         postgres                                        trust
    local   all         all                                             password
    
    # vi postgresql.conf
    listen_addresses = '*'
    
    # /etc/init.d/postgresql restart
    # psql -d 디비이름 -U 아이디 -W
    

저는 데비안 리눅스를 무척 좋아하여 왠만한 개발과 운영을 데비안 리눅스로 하고 있습니다. DBMS는 될 수 있으면 PostgreSQL을 사용하려고 합니다. MySQL처럼 쉽게 설치할 수 있고 간단하게 운영할 수 있기 때문이지요. 그리고 라이센스가 MySQL에 비해서도 자유로운 장점도 있습니다. 최근에는 다우기술에서도 상용서비스 지원을 하고 있습니다. 간단하게 설치/DB,사용자생성/백업,복구 등에 대해 정리해보겠습니다.


  1. 데비안 리눅스에서 설치하기
  2. # apt-get install postgresql-8.4 postgresql-server-dev-8.4
    
  3. 사용자, DB 생성
  4. # su - postgres
    # psql
    template1=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
    template1=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
    
  5. 계정으로 로그인할 수 있도록 연결설정
  6. # su -
    # cd /etc/postgresql/8.4/main/
    # vi pg_hba.conf
    모두 주석으로 막고 아래만 남김
    host    all         all         0.0.0.0           0.0.0.0           password
    local   all         postgres                                        trust
    local   all         all                                             password
    
    # vi postgresql.conf
    listen_addresses = '*'
    
    # /etc/init.d/postgresql restart
    # psql -d 디비이름 -U 아이디 -W
    
  7. DB List 보기
  8. # psql -U postgres -l
              List of databases
        Name     |    Owner    | Encoding
    -------------+-------------+----------
     eecit       | eecit       | UNICODE
     openwatcher | openwatcher | UNICODE
     template0   | postgres    | UNICODE
     template1   | postgres    | UNICODE
    (4 rows)
    
  9. SQL Dump
  10. # export DATE=`date +%Y-%m-%d`
    # /usr/bin/pg_dump -U 아이디 -d 디비이름 > /opt/db_backup/db_backup_$DATE.bak
    
  11. Restoring the dump
  12. $ psql -U 아이디 -d 디비이름 < infile
    

Debian Linux의 Tomcat에서 PostgreSQL Connection Pool 설정하는 방법을 정리해보았습니다. Tomcat 은 이미 설치되어 있고, 웹루트 디렉토리도 만들어져 있다고 가정하겠습니다.

PostgreSQL 설치
# apt-get install postgresql-8.3 postgresql-server-dev-8.3
사용자, DB 생성
# su - postgres
# psql
template1=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
template1=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
계정으로 로그인할 수 있도록 연결설정
# su -
# cd /etc/postgresql/8.3/main/
# vi pg_hba.conf
모두 주석으로 막고 아래만 남김
host    all         all         0.0.0.0           0.0.0.0           password
local   all         postgres                                        trust
local   all         all                                             password
# /etc/init.d/postgresql-8.3 restart
테스트용 테이블 생성
CREATE TABLE tb_admin
(
 id Serial NOT NULL,
 login Varchar(20) NOT NULL UNIQUE,
 passwd Varchar(20) NOT NULL,
 name Varchar(20) NOT NULL,
 register_date Date NOT NULL,
 login_datetime Timestamp,
 status_code Varchar(4),
 email Varchar(40),
 mobile_phone Varchar(20),
 PRIMARY KEY (id)
) Without Oids;
 
INSERT INTO tb_admin(login, passwd, name, register_date, status_code, email, mobile_phone)
VALUES('honggildong', 'ajtwlddl', '홍길동', '2009-11-03', '0000', 'hgd@gmail.com', '010-2222-5555');
 
INSERT INTO tb_admin(login, passwd, name, register_date, status_code, email, mobile_phone)
VALUES('jangnara', 'dlQmsdl', '장나라', '2009-11-03', '0000', 'jnr@gmail.com', '010-3746-7665');
PostgreSQL JDBC Driver 설치
  1. http://jdbc.postgresql.org/ 에서 다운로드 한다.
    Debian Linux 에서는 다음과 같이 설치한다. /usr/share/java 에 설치된다.
    # apt-get install libpg-java
    
  2. JDBC Driver 를 $CATALINA_HOME/common/lib 에 복사한다.
    Debian 의 Tomcat6 에서는 /usr/share/tomcat6/lib 에 복사한다.
    # cd /usr/share/java
    # cp postgresql-jdbc3-8.4.jar /usr/share/tomcat6/lib/
    
Tomcat 설정
  1. server.xml 의 <Context> 태그 안쪽에 다음을 추가한다.
    <Resource name="jdbc/DBName"
                        auth="Container"
                        type="javax.sql.DataSource"
                        driverClassName="org.postgresql.Driver"
                        loginTimeout="10"
                        maxWait="5000"
                        username="아이디"
                        password="비밀번호"
                        testOnBorrow="true"
                        url="jdbc:postgresql://127.0.0.1/디비이름" />
    
  2. web.xml 에 다음을 추가한다.
    <resource-ref>
            <description>PGSQL DB Connection</description>
            <res-ref-name>jdbc/DBName</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
    
테스트 코드 (index.jsp)
  1. JSP 코드를 다음과 같이 작성한다. 관련 DB와 테이블은 작성되어 있어야 합니다.
    <?xml version="1.0" encoding="UTF-8" ?>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>DB Test</title>
    </head>
    <body>
    <%
    DataSource   ds = null;
    Connection conn = null;
    Statement  stmt = null;
    ResultSet    rs = null;
     
    try {
        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        ds = (DataSource) envCtx.lookup("jdbc/DBName");
        conn = ds.getConnection();
        stmt = conn.createStatement();
        rs  = stmt.executeQuery("select id, login, passwd, name, register_date, login_datetime, status_code, email, mobile_phone from tb_admin");
        while(rs.next()) {
            out.println("ID: " + rs.getString("id"));
            out.println(", Login: " + rs.getString("login"));
            out.println(", Password: " + rs.getString("passwd"));
            out.println(", Name: " + rs.getString("name"));
            out.println(", Register Date: " + rs.getString("register_date"));
            out.println(", Login Datetime: " + rs.getString("login_datetime"));
            out.println(", Status Code: " + rs.getString("status_code"));
            out.println(", E-Mail: " + rs.getString("email"));
            out.println(", Mobile Phone: " + rs.getString("mobile_phone") + "<br/>");
        }
        rs.close();
        stmt.close();
        conn.close();
    } catch (Exception e) {
        out.println("<br /><font color='red'><strong>SQL Exception: " + e + "</strong></font><br/>");
    }
    %>
    </body>
    </html>
    
  2. JSTL 을 이용하는 경우에는 $CATALINA_HOME/common/lib (/usr/share/tomcat5.5/common/lib) 에 standard.jar, jstl.jar 파일을 복사하고 코드를 다음과 같이 작성합니다.
    <%@ page contentType="text/html;charset=utf-8" session="true" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
    <sql:query var="rs" dataSource="jdbc/DBName">
    select id, login, passwd, name, register_date, login_datetime, status_code, email, mobile_phone from tb_admin
    </sql:query>
     
    <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>DB 테스트</title>
      </head>
      <body>
     
    <c:forEach var="row" items="${rs.rows}">
        ID: ${row.id}, 
        Password: ${row.passwd},
        Name: ${row.name}, 
        Register Date: ${row.register_date},
        Login Datetime: ${row.login_datetime},
        Status Code: ${row.status_code},
        E-Mail: ${row.email},
        Mobile Phone: ${row.mobile_phone} <br/>
    </c:forEach>
     
      </body>
    </html>
    

'DBMS > PostgreSQL' 카테고리의 다른 글

CentOS에서 PostgreSQL 설치/사용하기  (0) 2011.03.31
Debian Linux 에서 PostgreSQL 설치/사용하기  (0) 2009.11.11

+ Recent posts