2011-03-31

CentOS에서 PostgreSQL 설치/사용하기



  • 설치
    # 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

2011-03-29

CentOS 5.x 설치

최근 가상서버를 이용한 서비스를 알아보니, OS를 내가 원하는 것으로 마음대로 설치할 수 없고, 제공되는 OS만 설치가 가능하였다. 나의 주력 OS는 Debian Linux 인데, 지원되는 곳이 없다. 그나마 카페24에서 우분투를 지원하고 있기는 하다. 업체에서 공통적으로 지원되는 OS는 Redhat Enterprise Linux의 클론인 CentOS 5.x 이다. 아무래도 래드햇이 업계에서 많이 쓰이고 있기 때문일 것이다. 마음에는 안들지만, CentOS를 효과적으로 쓰도록 노력하는 것이 현실적일 것이다. 그 첫 번째 단계인 설치부터 시작한다. *^^* 캡쳐화면이 없긴 하지만, 꽤 도움이 될 것이다.

CentOS 5.x 설치

http://centos.org를 통해서 CentOS-5.5-i386-netinstall.iso 파일을 다운로드 받는다. 약 10MB 정도밖에 안되서 순식간에 받을 것이다. 이것을 CD로 구워서, 설치할 것이며, 전부 인터넷을 통해서 다운로드 받아서 설치하게 될 것이다. 굳이 CD를 여러장 구울필요 없다는 뜻이다.
패키지가 있는 Repository 를 설정해야 하는데, 2011-03-29 현재, 국내에는 6개의 사이트가 존재한다. 아래 WebSite와 Directory 를 눈여겨봐두자. 조금있다가 설치를 진행하면서 이것을 입력할 것이기 때문이다.
WebSiteDirectory
http://data.nicehosting.co.kr/os/CentOS/5.5/os/i386
http://centos.mirror.cdnetworks.com/5.5/os/i386
http://ftp.daum.net/centos/5.5/os/i386
http://mirror.khlug.org/centos/5.5/os/i386
http://centos.tt.co.kr/5.5/os/i386
http://mirror.yongbok.net/centos/5.5/os/i386

Start Page

이제, 구운 CD 를 드라이브에 넣고, 부팅을 하면, boot: 라는 프롬프트가 뜨게 되며, 우리는 전문가이니까, linux text 를 입력하여 텍스트 모드로 설치하도록 한다.

Choose a Language

디폴트 값인 English 를 선택하고 OK를 입력한다.

Keyboard Type

디폴트 값인 us 를 선택하고 OK를 입력한다.

Installation Method

HTTP 를 선택하고 OK를 입력한다.

Configure TCP/IP

[*] Enable IPv4 support
       ( ) Dyanamic IP configration (DHCP)
       (*) Manual configuration
[ ] Enable IPv6 support
       (*) Automatic neighbor discovery (RFC 2461)
       ( ) Dyanamic IP configration (DHCP)
       ( ) Manual configuration
위와 같이 선택하고 OK를 입력한다.

Manual TCP/IP Configuration

IPv4 address: 10.1.11.111_____ / 255.255.0.0_____
Gateway:      10.1.1.1__________________________________
Name Server:  168.126.63.1______________________________
위처럼, 자신의 네트워크 주소, 게이트웨이 DNS 등의 값들을 적고, OK를 입력한다.

HTTP Setup

맨 위의 6개의 Repository 중에서 마음에 드는 곳을 하나 선정하여, 아래와 같이 입력하고, OK를 입력한다.
Web site name :   ftp.daum.net____________
CentOS directory: /centos/5.5/os/i386_____

Would you like to use VNC?

Use text mode 를 선택한다.

Warning

Would you like to initialize this drive, erasing ALL DATA? 라는 질문이 나오며, YES 를 선택한다.

Partitioning Type

Remove all partitions on select drives and create default layout. 을 선택하고 OK를 누른다.
여기에서는 용량이 큰 디스크 하나만 있다고 가정하자. 관리를 위해서 파티션을 나누어서 쓰기도 하지만, 실제로는 대부분 그렇게 효용 가치는 없다.

Warning

You have chosen to remove all partitions 
(ALL DATA) on the following drives:

sda (ATA VBOX HARDDISK 8189 MB)

Are you sure you want to do this?
위와 같은 문구가 나오며, Yes 를 선택한다.

Review Partition Layout

굳이, 리뷰할 필요 없으니, No 를 선택한다.

Configure Network Interface

이미 네트워크 인터페이스 설정을 했으므로, No 를 선택한다.

Miscellaneous Network Settings

Gateway:       10.1.1.1_______________________________
Primary DNS:   168.126.63.1___________________________
Secondary DNS: _______________________________________
여기도 이미 설정되어 있던 값이 보이며, OK를 눌러서 넘어간다.

Hostname Configuration

manually 를 선택하고, 적당한 호스트이름을 작성하고, OK를 눌러서 넘어간다.

Time Zone Selection

Asia/Seoul 을 선택하고 OK를 누른다.

Root Password

보안을 위해서 아주 복잡한 비밀번호를 입력하고 OK를 누른다.

Package selection

모두 UnCheck 하고 OK버튼을 누른다.

Installation to begin

이제 OK 버튼을 누르면, 패키지를 다운로드 하여 시스템에 설치를 하게 될 것이다. OK를 누르고 나서 잠시동안 기다려 보자~!!!

Complete

CD를 드라이브에서 제거하고, Reboot 를 입력한다. 그러면, 시스템이 재부팅되기 시작한다. 아직, 끝난게 아니다. ^^;

Setup Agent

여기에서는 4가지 항목을 설정할 수 있는데, 이 중에서 Firewall configuration 을 선택하고 Run Tool을 누른다.

Firewall Configuration

Security Level: ( ) Enalbeld (*) Disabled

           SELinux: Enforcing
                    Permissive
                    Disabled
Security Level 은 Disabled 를 선택하고, SELinux 에서도 Disabled 를 선택하고 OK를 누른다.
이제, System services 를 선택하고 Run Tool을 누른다.

Services

crond, lvm2-monitor, network, sshd, syslog 만 선택하고, 나머지는 모두 UnCheck 하고 OK를 누른다.
이제, 정말 마지막으로 Exit 를 눌러서 설치/설정을 완료한다.

2011-03-24

(Debian-Perl) Linux 에서 MS-SQL 연결하기

요즘 Perl 짓을 조금 하고 있는 중이다. 어쩌다 보니, MS-SQL도 사용하게 되었는데, 여러가지 방법이 있었지만, FreeTDS를 이용하는 것이 가장 간편한 것 같아서 정리해보았다.


(Debian) Linux 에서 MS-SQL 연결하기

  • Install FreeTDS
    # apt-get install freetds-*
  • Install Sybase module
    # apt-get install libdbd-sybase-perl
  • /etc/freetds/freetds.conf 수정
    ...
    [Our-MS-SQL]
        host = 아이피주소
        port = 1433
        tds version = 7.0
    ...
  • 예제 코드
    #!/usr/bin/env perl
     
    use DBI;
     
    my ($dbh, $sth, $sql);
    
    $dbh = DBI->connect("DBI:Sybase:server=Our-MS-SQL; database=디비이름", "아이디", "비밀번호") || die $DBI::errstr;
     
    $sql = " insert users ( id, name, mobile ) values (1, 'My Name', '010-2654-5555') ";
    $sth = $dbh->prepare($sql);
    $sth->execute();
     
    $sth->finish();
    $dbh->disconnect();

2011-03-23

(Perl) 디렉토리 순회하기

윈도우 파일서버에서 100MB 가 넘는 파일을 찾기 위해서 디렉토리를 순회하는 방법을 찾아보았다. 보통은 File-Find 를 많이 쓰지만, 1TB이상 사용하고 있는 드라이브에서는 검색 도중에 Out of memory 메시지와 함께 멈추는 현상이 있었고, 대신 File-Find-Object 로 해보니, 아주 깔끔하게 검색이 되었다.


디렉토리 순회하기

File-Find

  • 일반적으로 많이 알려진 방법인데, 1TB 용량의 드라이브 검색시 죽는 현상을 발견하였다.
    # 100MB 넘는 파일 목록 출력
     
    use strict;
    use warnings;
    use File::Find;
     
    my $limited_size = 100_000_000; # 100MB
    find(\&process_file, ("P:/"));
     
    sub process_file {
        my $file = $File::Find::name;
        return unless -e $file;
        return unless -f $file;
        return unless -r $file;
        return unless -R $file;
        return if -s $file < $limited_size;
     
        print "$file\n";
    }

File-Find-Object

  • File-Find 를 객체지향적으로 재구성한 모듈으로, 대량의 디렉토리,파일에도 잘 동작한다.
  • 별도로 모듈을 설치해야하는 번거로움이 있긴하다.
    C:\> ppm install File-Find-Object
  • 예제 코드는 다음과 같다.
    # 100MB 넘는 파일 목록 출력
     
    use strict;
    use warnings;
    use File::Find::Object;
     
    my $limited_size = 100_000_000; # 100MB
    my $tree = File::Find::Object->new({}, ("P:\\"));
     
    while(my $file = $tree->next()) {
        next unless -e $file;
        next unless -f $file;
        next unless -r $file;
        next unless -R $file;
        next if -s $file < $limited_size;
     
        print "$file\n";
    }