PostgreSQLのインストール

オープンソースのデータベースをインストールします。
オープンソースのデータベースにはPostgreSQLの他にもMySQLなどがありますが、使った事のあるPostgreSQLを選択。
MySQLも一度使ってみたいと考えているので、そのうちインストールして比較でもする予定。


インストールの流れは以下の通りです。
  1. ソースコードのダウンロード
  2. ユーザー作成
  3. インストールディレクトリの作成
  4. 環境変数の設定
  5. configureとmakeとインストール
  1. ダウンロード
    PostgreSQLのソースコードをダウンロードします。ソースコードは/usr/local/srcにダウンロードします。
    ADSLルータでftpdataを通さないようにしているのでPASVモード(-pオプション)で実行します。
    [root src]# ftp -p ftp.sra.co.jp
    ftp> cd pub/cmd/postgres/7.3.2
    ftp> get postgresql-7.3.2.tar.gz
    ftp> get postgresql-7.3.2.tar.gz.md5
    ftp> quit

    次に、ダウンロードしたファイルが正しいものである事を確認する為、MD5チェックサムを行います。
    md5sumの結果がpostgresql-7.3.2.tar.gz.md5ファイルと同じである事を確認します。
    [root src]# md5sum zlib-1.1.4.tar.gz
    abc405d0bdd3ee22782d7aa20e440f08 zlib-1.1.4.tar.gz

    [root src]# cat postgresql-7.3.2.tar.gz.md5
    MD5 (postgresql-7.3.2.tar.gz) = 23d2762571e8c5bb21eee08aab968ccb


  2. ユーザー作成
    PostgreSQL用ユーザーを作成します。
    グループID,ユーザーIDともに731にしていますが、特に指定する必要はないです。
    [root src]# groupadd -g 731 dbadmin
    [root src]# useradd -g 731 -u 731 postgres
    [root src]# passwd postgres <-パスワードはsqlとしました。

  3. インストールディレクトリの作成
    インストール用のディレクトリを作成します。
    作成したディレクトリ及び、解凍したソースコードのオーナーをpostgresとします。
    [root src]# mkdir /usr/local/postgresql-7.3.2
    [root src]# ln -s /usr/local/postgresql-7.3.2 /usr/local/pgsql
    [root src]# chown -R postgres:dbadmin /usr/local/postgresql-7.3.2
    [root src]# chown -R postgres:dbadmin /usr/local/pgsql
    [root src]# chown -R postgres:dbadmin postgresql-7.3.2

  4. 環境変数の設定
    これ以降の作業はpostgresユーザーにて行います。
    環境変数へ、javaとantを登録します。
    これはPostgreSQLをインストールする際に、JDBCのインストールも行う為です。
    JDBCをインストールしない場合は、java,ant共に設定不要です。
    [root src]# su -l postgres
    .bashrc編集
    [postgres postgres]$ vi ~/.bashrc
    export JAVA_HOME=/usr/local/j2sdk
    export ANT_HOME=/usr/local/ant
    export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
    export CLASSPATH=$CLASSPATH:$ANT_HOME/lib/ant.jar
    [
    postgres postgres]$ source ~/.bashrc 設定を読み込みます

  5. configureとmakeとインストール
    SSL通信のサポートと、JDBCのサポートを有効にします。
    SSL通信のサポートにはOpenSSLが必要です。(OpenSSLのインストール)
    また、JDBCのサポートにはjava,antが必須です。(javaのインストールantのインストール)
    [postgres postgresql-7.3.2]$ ./configure --with-java --with-openssl=/usr/local/openssl

    エラーがでました。
    configure: error: readline library not found
    If you have readline already installed, see config.log for details on the
    failure. It is possible the compiler isn't looking in the proper directory.
    Use --without-readline to disable readline support.
    Readlineライブラリがないらしい。
    オプションで外す事も可能らしいが、せっかくなのでreadlineをインストールしようと思う。
    readlineをインストールしてもまた同じエラーがでた。
    どうやら、Makefileで指定されているパスにreadlineのライブラリがない事が原因らしい。
    従って、参照するパスを環境変数で指定します。LDFLAGSにライブラリのパスを、CPPFLAGSにincludeファイルへのパスを参照する為のコンパイルオプションを指定します。
    [postgres postgresql-7.3.2]$ export LDFLAGS=-L/usr/local/lib
    [
    postgres postgresql-7.3.2]$ export CPPFLAGS=-I/usr/local/include/readline
    しかし、またしても同じエラーが、理由が分からないので、config.logを見ると以下のような記述があった。
    ncursesライブラリが無いのが原因らしい。これは以前menuconfigするために別マシンにインストールした事がある。とりあえず、ncursesをインストールする。
    /usr/bin/ld: cannot find -lncurses
    collect2: ld returned 1 exit status
    再びconfigureを実行。
    やっと、readlineライブラリが解決したと思ったら今度はzlibがないと文句を言われる。
    zlibをインストールする。
    configure: error: zlib library not found
    If you have zlib already installed, see config.log for details on the
    failure. It is possible the compiler isn't looking in the proper directory.
    Use --without-zlib to disable zlib support.
    再びconfigureを実行するものの、またしても別のエラーだ。
    checking test program... failed
    configure: error:
    *** Could not execute a simple test program. This may be a problem
    *** related to locating shared libraries. Check the file 'config.log'
    *** for the exact reason.

    Config.Logにはこう書かれている。
    /conftest: error while loading shared libraries: libssl.so.0.9.7: cannot open shared object file: No
    これは、OpenSSLをインストールした時に、ライブラリパスを環境変数のLD_LIBRARY_PATHや、ldconfigなどによる登録を忘れていた為だった。(^^;)
    rootでldconfigを実行して、configureが無事終了。
    あとはmakeだけです。
    [postgres postgresql-7.3.2]$ make
    [postgres postgresql-7.3.2]$ make check
    [postgres postgresql-7.3.2]$ make install

    以上で、インストールは終了です。
    次はデータベースの作成方法についてです。
  6. データベースの作成
    今回のデータベース作成では、データベースをインストールしたpostgresユーザーをそのまま使います。
    まず、データベースを作成するユーザーにPostgreSQLに関する環境変数を指定します。
    通常、~/.bashrcに以下の変数を指定しておきます。
    PG=/usr/local/pgsql
    export PATH=$PATH:$PG/bin
    export MANPATH="$MANPATH":$PG/man
    export PGLIB=$PG/lib

    export PGDATA=$PG/data  <--PGDATAはデータベースのデータを格納するディレクトリです。
    .bashrcを変更したら、"source ~/.bashrc"を実行して変更内容を読み直してください。

    次にデータベースクラスタ(データベース格納領域)を作成します。
    [postgres postgres]$ mkdir $PGDATA
    [
    postgres postgres]$ initdb --encoding=EUC_JP --no-locale

    ネットワーク設定を行います。
    必ずパスワードの入力を必要とします。(管理者ユーザーのローカル接続は除く)
    また、外部から(postgreSQLのインストールしたマシン以外)の接続ではssl通信のみ受け付けます。通常の接続は拒否しています。家のネットワークは192.168.0.Xの為、このようになってます。

    $PGDATA/pg_hba.confを編集します。
    以下の例では、ローカル接続は全て許可。外部からの接続はSSL通信且つパスワード認証を要求します。
    local all postgres trust
    host all all 127.0.0.1 255.255.255.255 password
    hostssl all all 192.168.0.0 255.255.255.0 password
    SSL通信を行う為、OpenSSLにより、秘密鍵、証明書を作成します(作成方法についてはOpenSSLのインストールを参照して下さい)。作成したファイルは$PGDATAで示されるディレクトリに次の名前で保存します。この時、これら2つのファイルはpostgresユーザー所有にし、パーミッションをgroupやotherに与えないようにします。
    秘密鍵:server.key,  証明書:server.crt

    /usr/local/pgsql/data/postgresql.confを編集します。
    tcpip_socket = true <- JDBCなどを使う場合には必要です。
    ssl = true
    <- ssl通信を行う場合(証明書などが必要になります。)

    syslog = 2 # range 0-2      
    <--ログをsyslogに出力する為に必要です。
    syslog_facility = 'LOCAL0'

    データベースエンジンを起動し、データベースを作成します。
    [postgres pgsql]$ pg_ctl start <-- PostgreSQLが起動します。
    [postgres pgsql]$ createdb db1 <--db1という名前のデータベースを作成します。

    作成した”db1”データベースにユーザー、テーブルを作成します。
    以下は一例です。必要なユーザー、テーブルを作成して下さい。
    [postgres pgsql]$ psql db1
    db1=# create user manager password 'hoge' createuser ;
    <--managerというユーザーを作成します。
    CREATE USER
    db1=# \q

    db1=# \c - manager  <--managerでログインし直します。
    create table table01(  
    <--table01という名のテーブルを作成します。
    col01 varchar not null,
    col02 varchar not null,
    primary key (col01)
    );
    db1-# \q

    以上でデータベースの作成はお終いです。


お問い合わせはwebmaster@ryouto.jpまで。
Copyright (C)2003 ryouto.jp. All Rights Reserved.