우분투 서버에 PostgreSQL 9.1 설치하기

우분투 서버에 PostgreSQL 서버 9.1 버전을 설치하고 identd 로 데이터베이스 서버 인증을 처리하게 설정하는 방법이다. 우분투 10.04를 기준으로 작업했다.

PostgreSQL 최신 버전의 우분투 패키지를 제공하고 있는 다음 PPA 저장소를 추가한다.

sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update

add-apt-repository 명령어가 없으면 python-software-properties 패키지를 설치한다.

다른 우분투 패키지를 설치하는 것과 마찬가지로 PostgreSQL 9.1 패키지를 설치한다. 덧붙여 개발용 클라이언트 라이브러리(libpq-dev)도 설치한다.

sudo apt-get install postgresql-9.1 libpq-dev

이렇게 설치하면 설정 파일들은 /etc/postgresql/9.1/main 디렉터리에 있게 되고 데이터 디렉터리는 /var/lib/postgresql/9.1/main 가 된다.

만약 데이터 디렉터리를 다른 곳으로 바꾸고자 한다면(아마존 클라우드를 쓴다던가 또는 별도의 디스크에 두길 원한다면) 다음과 같이 한다.(ᅟ예제는 /srv/postgresql/9.1/main 디렉터리에 둔다.)

sudo vi /etc/postgresql/9.1/main/postgresql.conf

  + data_directory = '/srv/postgresql/9.1/main'

sudo mkdir /srv/postgresql/9.1/main
sudo chown postgres:postgres /srv/postgresql/9.1/main
sudo chmod 700 /srv/postgresql/9.1/main
sudo su postgres -c "/usr/lib/postgresql/9.1/bin/initdb \
    -D /srv/postgresql/9.1/main"
sudo ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem \
    /srv/postgresql/9.1/main/server.crt
sudo ln -s /etc/ssl/private/ssl-cert-snakeoil.key \
    /srv/postgresql/9.1/main/server.key

sudo service postgresql stop
sudo service postgresql start

이어 로컬에서 데이터베이스에 접근할 때 ident를 이용하여 인증을 관리하게 하려면 다음과 같이 한다. 먼저 ident 서버로 oidentd를 설치한다.

sudo apt-get install oidentd
sudo vi /etc/default/oidentd
  - OIDENT_OPTION="-mf"
  + OIDENT_OPTIONS="--address=127.0.0.1 -mf"

sudo service oidentd restart

위에서 두번째 작업은 oidentd 서버를 로컬에서만 접속할 수 있게 하기 위해서 하는 작업이다. oidentd 가 127.0.0.1 만 바인드하고 있는지 다음과 같이 확인한다.

sudo netstat -anp | grep LISTEN 
(view 127.0.0.1:113 oidentd line)

ident 로 PostgreSQL 서버의 인증을 관리하도록 다음과 같이 설정 파일을 편집한다. 여기서는 보통 사용할 계정 이름을 spica 로 하였다.

sudo vi /etc/postgresql/9.1/main/pg_hba.conf

    local   all     postgres                        peer map=pg
    local   all     all                             peer map=pg
    host    all     all         127.0.0.1/32        ident map=pg
    host    all     all         ::1/128             ident map=pg

sudo vi /etc/postgresql/9.1/main/pg_ident.conf

    pg          spica                postgres
    pg          spica                spica
    pg          postgres             postgres

sudo service postgresql restart

이렇게 하면 spica 로 셸 계정에 접속한 경우 psql -U postgrespostgres 유저로도 접속할 수 있게 된다.

참고

2012-02-29 05:36 | Permlink | Comments

SDEC 행사 참가 후기

27-28일 이틀동안 경원대에서 열렸던 SDEC(Seoul Data Engineering Camp) 행사에 참가했다.

참가한 후 느낌은 괜찮았다. 한국에서 이만한 행사를 열기는 쉽지 않을꺼라 생각한다. 이처럼 Big Data에 관해 세계적인 선수들의 이야기를 직접 들을 수 있는 기회는 한국에선 흔치 않을꺼다.

행사 장소가 거리도 좀 멀고 장소가 책상도 없어서 불편했고(원래 결혼식이 열리는 곳이라 한다) 무엇보다 점심이 부실한 점(샌드위치와 콜라가 뭐냐...)이 아주 문제였지만 행사 진행은 무리가 없었고 발표자들의 발표도 괜찮았다.

발표들에 대해 내 생각을 정리해 보았다.

  1. Implementing me2day friend suggestion

    • 생각보다 미투데이 추천 친구 데이터셋이 작다는 생각이 들었다. 그리고 1G 도 안되는 데이타라면 어떤 방식으로 처리해도 괜찮지 않을까하는 생각이 들었다(즉 핵심은 데이타 정제에 있지 그래프 데이타 구조 구현이 아닌 것 같다는).
    • RDBMS와 속도 비교에서 40 배 정도 차이가 났다는 내용이 있었다. 어떤 RDBMS로 했는지 궁금하기도 하고 그에 대한 대답을 제대로 듣진 못했지만 제대로 된 메모리 기반 RDBMS로 테스트했으면 어땠을까하는 생각이 들었다.
  2. nStore - A new approach for data distribution and scalability

    • 강력한 MongoDB Diss가 나온 발표였다. 속도나 안정성 모두에서 별로라는 평을 했다.
    • RDBMS Sharding 미들웨어 정도로 생각되었다. Cubrid의 Sharding 미들웨어 정도? OwFS에서 따왔다는 region 개념이 추가되어 같은 region 내에서는 조인이 가능하다는 장점이 있다지만 이거야 RDBMS Sharding에서 당연히 제공하는 거라는 생각이 들었다.
  3. Going by TACC: beyond key-value to fault-tolerant stores with easily customizable semantics

    • TACC(발표자는 택시라고 발음)라는 언어 설명이었다. 명사(Noun)만 있고 동사(Verb)는 없는 언어라고 한다. 동사 역할은 Rule로 처리한다는.
    • key-value store를 구현하는 언어이고 클라이언트 간의 동기화는 프록시를 사용하는 방식이라 한다. 그런데 General-purpose 언어라니 도대체 뭔지 모르겠다.
    • 웹 사이트도 검색해봤지만 만들어지지 않았고 발표자가 말하길 아직 일반에 공개할 수준도 아니라하니 뭐라 얘기할 수 없을듯하다(그러면 왜 발표한 거지?).
  4. Arcus - NHN memcached cloud

    • 발표자가 좀 많이 긴장한 듯 보였다.
    • 발표 초반에 memcached의 일반 개념(특징, 프로토콜, Consistence hashing)에 대한 내용이 많았는데 이는 빼버려도 괜찮지 않았을까? memcached가 나온지 몇년이 되었는데...
    • Arcus = memcached + zookeeper + collection support 정도로 정리할 수 있을 듯하다. 다만 대규모로 운영하며 여러 이슈들이 있었을텐데 이를 좀더 소개해줬으면 하는 아쉬움이 있었다.
  5. Replacing Legacy Telco DB/DW to Hadoop and Hive

    • Hadoop 관련하여 많이 약팔고활동하고 있는 NexR에서 발표.
    • Oracle DB로 구현된 ETL 같은 것을 Hive로 옮기는 작업에 대해 설명.
    • 애초에 Ansi SQL을 쓰는 PostgreSQL이면 옮기기 더 쉽겠다는 뻘 생각을 잠시. 역시 오라클은 쓸 것이 못 되 하는 뻘 생각을 또 잠시.
  6. NoSQL Data Modelling: Concepts and Cases

    • 일반적인 NoSQL 개론 수준. 이 정도라면 평소 NoSQL에 관심을 갖고 동향을 주시했던 사람이라면 대부분 알고 있을 내용이라 생각한다.
    • NoSQL 데이터 모델링에 대한 진전된 생각을 들을 수 있을까 기대했지만 기대에 못 미쳤음.
    • 하지만 Professional NoSQL 책을 득템했으니 가장 큰 수확!
  7. Big Engineer vs. Small Entrepreneur

    • Big Data와는 관계없는 내용이지만 재미있었던 발표.
    • 한국의 클라우드 서비스에 대한 강력한 Diss. "너무 비싸요"
    • 나도 비슷한 처지에서 비슷한 고민을 하고 있던 중이라 재미있었음. 확실히 한국에서 클라우드 서비스를 제공하겠다는 사업자(T**, U**)는 제대로 방향을 잡지 못하고 있다는 생각을 재확인.
  8. S/W 기반 대용량 파일 고속 전송 플랫폼 "래피던트"

    • 흥미있는 주제였으나 너무 배가 고파서 먼저 나오고 말았음(점심 좀 제대로 줬다면...).
  9. Data In, Data Out: Creating Large scale data products at LinkedIn

    • LinkedIn에서 발표. 대량의 메시지 처리에 관한 내용.
    • Kafka로 메시지를 중계해서 hdfs에 저장, hive와 pig로 분석하고 이를 azkaban으로 Job 관리를 함. 결과는 Voldmort에 저장한다고.
    • 데이터센터들 사이에 메시지 중계를 Kafka로 하는 구조를 보여 줌. 한 데이터센터에서는 메시지를 생성하는 서버들을 두고 다른 데이터센터에서 이 메시지를 받아 저장, 처리를 함. 두 데이터센터 간 메시지 중계를 Kafka를 통해서 중계함.
  10. GLORY-FS(Scalable Distributed Filesystem) - Development and Service Experiences

    • Gloy-FS에 대해 개발한 ETRI와 서비스에 적용한 KTH에서 발표
    • Meta Data Server를 두고 데이터 서버에 파일을 쪼개서 복제 저장한다는 개념은 GFS나 MogileFS와 비슷. 더구나 Meta Data Server에 mysql을 쓴다는 설명을 들으니 너무 평범하다는 생각이... 다른 점은 posix API를 제공한다는 건데 이건 별로 강점이 될 것 같진 않다.
    • hot spot 방지 기능(자주 접근되는 파일을 감지해서 복제수를 자동으로 늘리는 기능)을 구현했다고 했는데 질문에서 지적한 대로 캐시 효과에 의해 별 필요없는 기능일 것 같다는...
    • 백업에 대해 질문이 있었는데 백업을 안한다는 대답이. 예전 2008년 플랫폼데이에서 Daum도 백업을 안한다고 했는데 이는 좀 위험한 생각이 아닌가하는 생각이 들었음. 구글 Gmail 장애 사건에서도 보듯이. 뒤의 페이스북 발표에서도 동일한 질문이 나왔는데 페이스북에서는 백업을 한다고 함. 나중에 BoF에서 알게 된 NHN 쪽 개발자에게 듣기로는 NHN도 백업을 한다고.
  11. Using Couchbase for Social Game Scaling and Speed

    • 느낌은 Couchbase에 대해 약파는 느낌. 무슨 기능에 대해 질문을 하면 그건 2.0에서 구현될 예정이라는 대답 뿐...
    • membase와 couchdb에는 관심이 없었는데 CA(Consistency + Availability) 특성과 Transaction 지원 특성을 가지고 있다는 이야기를 듣게 됨. 이는 NoSQL 세계에서 매우 독특한 특징.
  12. Introducing Doozer - a consistent, fault-tolerant data store

    • 처음에 뭔가 했는데 Paxos 구현체라고 함. set, get, wait 만 지원되는 아주 단순한 분산 데이터 저장소라고 한다 -- 이런 식의 접근을 나도 아주 좋아함.
    • zookeeper와 비슷한 기능을 제공하는 것인데 이보단 단순한 접근법을 취하고 있다. zookeeper의 훌륭한 대체가 될 수 있을 것으로 기대.
    • KTH에서 만들었다는 iLock과도 비교될 수 있을 듯. iLock도 Paxos를 구현했다고 했는데 TCP 기반으로 구현했다고 해서 의아한 생각이 들었음. Doozer는 UDP 기반이라고 함. iLock도 오픈소스로 공개되면 좋은 비교가 될 것이라 생각.
  13. Major use cases of Mahout

    • 힘도 들고 Machine Learning은 별로 관심있는 내용이 아니라서 주의깊게 듣지 않았음. 기억나는 내용이 없음.
  14. Realtime Big Data at Facebook with Hadoop and HBase

    • Facebook의 발표. scribe, ptail 로 데이터를 모아 hdfs, hive로 분석하는 내용. 그냥 ptail이 뭔지 하는 의문이 들었음.
    • 한 랙에 20대의 서버를 배치하는 구성이 흥미로왔음. 각 랙당 한대씩 zookeeper 서버를 배치하는 구조. 그런 랙 5대를 한 단위로 본다고.

공식 행사 후에 Doozer에 대해 발표한 Keith Rarick의 Beanstalkd BoF에 참가했다. 몇명 참가자도 없어서 둥글게 앉아서 kr의 beanstalkd 사용 데모도 보고 여러가지 이야기도 나눴다. Doozer 개발에 대한 이야기와 Go 언어에 대한 이야기도 듣고 Heroku 회사에 대한 이야기도 들을 수 있었다. 이번 행사 중 가장 재미난 시간이었다는 생각이 들었다.

정리하자면 이번 행사는 유익했다. 뜬구름 같은 이야기가 아닌 실제 적용 경험들을 들을 수 있었다. 실제 Big Data를 접할 기회가 생길지 어떨지는 모르겠지만 재미있는 주제임은 분명하다.

2011-06-29 17:09 | Permlink | Comments

블로그 엔진을 약간 수정하였습니다

할 일이 없는 것도 아닌데 쓸데없이 블로그 엔진을 약간 수정하였습니다.

  1. 데이터베이스를 mysql에서 postgresql로 바꿨습니다. 이유는 특별한 건 없습니다. 단지 제가 postgresql을 더 좋아하기 때문입니다. 우선은 데이터베이스 구조 변경없이 mysql에서 postgresql로 1:1로 옮겼을 뿐입니다. 이후 시간이 나면 postgresql의 기능을 충분히 활용할 수 있도록 변경해야겠죠.

  2. view template 엔진을 TT(Template Toolkit)에서 Xslate로 변경하였습니다. xslate는 최근에 등장한 템플릿 엔진으로 아주 빠른 성능을 자랑하는 엔진입니다(몇 명 접속하지도 않는 사이트에 굳이 고성능 템플릿 엔진을 쓸 필요까진 없습니다만...). 다만 아직 좀 부족한 점들이 있는지 변경 작업을 하면서 조금 삽질을 할 게 있었습니다. 기회가 되면 포스팅을 할까 생각 중입니다.

  3. 그리고 눈에 띄는 변화로 글자 크기를 키우고 지난 글 보관 목록을 조금 간결하게 바꾸고 태그 목록을 조금 멋지게(?) 바꿨습니다. 디자인 능력은 없어서 그래도 외양은 썰렁해 보이네요 :(

예전부터 바꾸고 싶었던 걸 바꿨으니 이젠 부족한 기능을 구현할 예정입니다. 모바일 페이지를 구현할 생각인데 게으름이 문제군요....

2011-06-22 12:27 | Permlink | Comments

우분투 11.04에서 perlbrew 사용하기

우분투 11.04에서 perlbrew를 이용하여 perl을 설치하려면 링커 에러가 나며 실패한다. perlbrew는 perl을 소스 컴파일하여 설치하는데 우분투 11.04는 기본 라이브러리의 위치가 바뀌어서 기존 perl 배포본의 Configure 스크립트가 이를 제대로 감지하지 못하기 때문이다.

이전 우분투 버전에서는 기본 라이브러리(libc.so, libm.so 등등)는 /usr/lib 디렉터리 밑에 있었다. 11.04 버전에서는 이 위치가 /usr/lib/{architecture-name} 으로 바뀌었다. x86_64라면 /usr/lib/x86_64-linux-gnu 가 되는 거다. 따라서 perl을 컴파일 설치할 때는 Configure 스크립트가 이 위치를 찾을 수 있도록 plibpth 옵션에 이 위치를 지정해주어야 한다.

perlbrew로 설치할 때는 다음과 같이 이 옵션을 지정해주면 된다.

$ perlbrew install perl-5.12.3 -Dplibpth=/usr/lib/x86_64-linux-gnu

perl 메일링리스트에서도 이 문제가 논의되고 패치가 커밋된 걸 보니 다음 버전 배포본에는 이 문제가 해결될 것으로 보인다.

2011-05-05 14:19 | Permlink | Comments

블로그를 옮겨서 새로 열었습니다

그간 이글루스에 블로그를 운영하고 있었습니다. 2010년도 들어 바쁜 것도 있었고 게으름도 있어서 블로그에 소흘해 왔습니다.

최근 갑자기 한가하게 되어 그간 마음먹었지만 단행하지 못했던 블로그 이전을 했습니다. 이글루스의 앞날이 어떻게 될지도 불안했고 특히 이글루스에는 개발자 블로그로 운영하기 위해 꼭 필요한 소스 코드 syntax highlighting이 되지 않아 불편했습니다. 서비스형 블로그를 써볼까도 생각했지만 제 마음에 꼭드는 서비스는 없는 것 같았습니다. 차라리 제 손으로 설치/운영하는 게 나으리라는 생각이 들었고 아예 이 참에 블로그 엔진도 제가 개발해서 사용하자고 생각했습니다. 짬짬이 작업을 해서 어느 정도 돌아갈 정도로는 개발된 것 같아 글을 옮겨서 오픈하게 되었습니다(글은 얼마 되지 않아 옮기는 데 문제는 별로 없었습니다).

블로그 엔진은 Perl 언어에 Catalyst Framework로 만들었습니다. 글 관리, 조회, 검색 정도만 개발하였으며 댓글(comment) 기능은 Disqus 서비스를 이용하였습니다. 실제 개발할 내용도 많지 않았고 Perl과 Catalyst Framework의 높은 생산성 덕분에 개발에 노력이 많이 들지는 않았습니다.

앞으로 그간 공부해왔던 Perl, Catalyst Framework 관련 내용들과 Java Web Framework, Scala, Common LISP 그리고 nosql 관련 내용들을 다루는 블로그가 되겠습니다.

2010-12-16 13:59 | Permlink | Comments
Prev 1 2 3 4 5 Next

About

Laser Keyboard

I'm Jin Kim. Live in Seoul, Korea. Software Developer. Java, Perl, Scala, Common Lisp. Mainly programming in web program and its backend data store. Interested in data processing and distributed computing.

Archive

RSS