Virtualbox Guest에 PostgreSQL 서버 설치하기

atie의 이미지

램 3G CoreDuo2 랩탑을 사용합니다. 컴파일 할 때 제외하면 CPU 사용량 치솟는 경우 없고, 컴피즈+그놈데스크탑을 며칠씩 켜놓아도 램 1G 넘게 쓰는 적이 없으니 리눅스에서는 이 이상의 기계를 사는 것은 낭비가 아닐까 싶은 때가 종종 있습니다. 그래서 메모리 1G 짜리 Virtualbox를 2개씩 켜놓기도 하는데요.

다음 글은 Virtualbox Guest에 PostgreSQL 서버를 설치해서,
1) 고사양의 기계를 일 시키고,
2) 데스크탑에 괜히 서버용 프로그램 설치해서 어지럽히는 일 없게 하고
3) 데이타베이스 프로그래밍 환경도 구축해 보는

그런 1석3조의 환경을 만들어보는 것을 요점 정리한 것입니다. 요약 외의 것은 관련 사이트의 도움말을 참조하세요.

VirtualBox 호스트 : 아치 리눅스 (virtualbox_bin 2.1.0) IP 예: 10. 10. 20. 50
VirtualBox 게스트 : 우분투 Intrepid IP 예: 10. 10. 20. 55

a. Virtualbox의 Host Interface 네트웍 설정
- 아치리눅스에서는 /etc/rc.conf의 MODULES 부분에 vboxdrv와 함께 vboxnetflt 모듈을 부팅시 띄우도록 해야 게스트의 호스트 인터페이스를 활성화 시킬 수 있습니다.
- 우분투 게스트는 네트웍 설정에서 호스트 인터페이스 선택하여 가상 머신을 설치합니다. NAT을 선택하여 설치한 후에도 변경할 수 있습니다.

b. 게스트에 ssh 서버 설치
- 컴피즈의 큐브 플러그인이 좋더라도 매번 작업장 바꿔가면 터미널 열어보기 귀찮죠. ssh 열어 호스트에서 게스트의 작업을 하기 위해 설치 합니다.
- 우분투이니, sudo apt-get install ssh 하면 openssh-server도 설치됩니다. 설치 즉시, ssh localhost 해서 접속 확인을 하고, 기본 포트인 22번을 변경하는 것은 /etc/ssh/sshd_config 파일의 PORT 부분을 찾아 적당한 포트로 변경을 합니다. (예: 3333) 변경 후에는 sudo /etc/init.d/ssh restart 해서 변경사항을 적용합니다.
- 호스트에서 게스트의 변경된 ssh로 접속하는 것은 ssh -p 3333 YourUserID@10.10.20.55

c. 게스트에 postgresql 서버 설치
- 우분투이니, sudo apt-get install postgresql 하여 몇 개의 패키지와 함께 설치합니다. 그리고 사용자 postgres의 암호를 등록합니다.

$ sudo -u postgres psql postgres
postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD ' ***암호*** ';
postgres=# \q

$ sudo -u postgres createdb mydb (mydb 라는 database를 만듭니다.)

이제 mydb 데이타베이스에 addressbook 이라는 테이블을 만듭니다.
$ sudo -u postgres psql mydb
mydb=# CREATE TABLE addressbook (name VARCHAR(100), address1 VARCHAR(255), address2 VARCHAR(255));
CREATE TABLE
mydb=# INSERT INTO addressbook VALUES('John Doe', '4500 Parkway Rd.', 'New York, NY 11357');
INSERT 0 1
mydb=# INSERT INTO addressbook VALUES('Jane Smith', '17500 Riverway', 'New York, NY 11357');
INSERT 0 1
mydb=# SELECT * FROM addressbook;
name | address1 | address2
------------+------------------+--------------------
John Doe | 4500 Parkway Rd. | New York, NY 11357
Jane Smith | 17500 Riverway | New York, NY 11357
(2 rows)
mydb=#\q

d. 게스트의 Firewall 설정
- 우분투의 경우는 ufw이 기본 설치가 되고 실전에서도 firewall을 설치해서 db 서버의 접근을 제한하는 것이 일반적이니 여기서는 ufw 기준으로 설명을 합니다. nmap과 ufw의 그래픽 프론트인 gufw를 설치합니다. gufw에서 ssh를 위한 3333와 postgresql의 5432 포트를 엽니다.
- 호스트에서 nmap -PN 10.10.20.55 해서 게스트의 열린 포트를 확인해 볼 수 있겠죠.

e. PostgreSQL 설정 변경 및 재 시동
- /etc/postgresql/8.3/main/postgresql.conf의 해당 부분을 다음처럼 변경합니다.
listen_addresses = '*'
password_encryption = on
- /etc/postgresql/8.3/main/pg_hba.conf의 해당 부분을 본인의 네트웍 설정에 맞게 다음처럼 추가합니다.
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 10.10.20.50/22 md5

- 재기동 합니다. sudo /etc/init.d/postgresql-8.3 restart

f. 테스트 용 perl 프로그램으로 가동 여부를 확인합니다. 아치리눅스에서는 perl-dbi와 perl-dbd-pg 패키지를 설치합니다.
$ cat dbi-test2.pl

#!/usr/bin/perl 
use warnings;
use strict;
 
use DBI;
 
my $dbh = DBI->connect("DBI:Pg:dbname=mydb;host=10.10.20.55", "postgres",
    "암호", {'RaiseError' => 1});
my $sth = $dbh->prepare("SELECT name, address1, address2 FROM addressbook");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
    print "$ref->{'name'} lives at $ref->{'address1'} $ref->{'address2'}\n";
}
$dbh->disconnect();

$ ./dbi-test2.pl
John Doe lives at 4500 Parkway Rd. New York, NY 11357
Jane Smith lives at 17500 Riverway New York, NY 11357

다시 한번 강조합니다. 위의 요약은 요약일 뿐, 그리고 학습용입니다. 실제 적용을 위해서는 해당 사이트에서 매뉴얼을 살펴주시길 바랍니다.

https://help.ubuntu.com/community/PostgreSQL
https://wiki.ubuntu.com/UbuntuFirewall
http://www.ubuntugeek.com/gufw-simple-gui-for-ufw-uncomplicated-firewall.html

댓글

sunyata01의 이미지

ㅋㅋ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.