トップ 一覧 ping 検索 ヘルプ RSS ログイン

PostgreSQL 8.3.5 インストールの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!PostgreSQL 8.3.5 インストール
[PostgreSQL][PostgreSQL 8.3.5][Fedora Core]

[日本PostgreSQLユーザ会|http://www.postgresql.jp/]
http://www.postgresql.jp/document/pg835doc/html/installation.html

PostgreSQL 8.3.5 を Fedora Core 6 にインストール
!!インストール
!postgresユーザーの作成
http://www.postgresql.jp/document/current/html/postgres-user.html

*セキュリティ上の理由からサーバプロセスをrootユーザーで起動できない
*運用は、rootユーザーではなく専用の一般ユーザーで行う
*運用するユーザーをOSに追加
*外部へアクセスできる他のサーバデーモンと同じように、PostgreSQLを独立したユーザアカウントで実行することをお勧めします。
*このユーザアカウントは、サーバによって管理されるデータのみを所有するようにすべき
*

 # useradd postgres
 # passwd postgres

postgres ユーザになる
 # su postgres
!ソースの入手
::入手
ftp://ftp.postgresql.org/pub/v8.3.5/postgresql-8.3.5.tar.gz
 $ ftp ftp.postgresql.org
       :
 KERBEROS_V4 rejected as an authentication type
 Name (ftp.postgresql.org:root): anonymous
 Password:[メールアドレス]
       :
 ftp> bin
 ftp> cd /pub/v8.3.5/
 ftp> get postgresql-8.3.5.tar.gz
::展開
 $ gunzip postgresql-8.3.5.tar.gz
 $ tar xvf postgresql-8.3.5.tar
!構成
パラメータ
http://www.postgresql.jp/document/pg835doc/html/install-procedure.html
ちょいと興味があるので、PL/Python とやらも構成しておく
 $ cd postgresql-8.3.5
 $ ./configure --with-python
      :
 configure: error: readline library not found

エラーになった。[readline http://typea-mixi01.appspot.com/yh_s?q=readline+library]がないとのこと。

!エラー対応
結論から言うと、以下の3つのライブラリのインストールが必要
,ライブラリ,内容
,readline,文字列入力用ライブラリ。入力プロンプトでタブ補完や入力ヒストリを参照できたり、emacsライクあるいはviライクなキー操作が可能となる
,ncurses,端末に依存しない形式でテキストユーザインタフェース(TUI)を作成するためのAPIを提供するライブラリ
,zlib,Zip や gzip に使われている圧縮アルゴリズムをライブラリ化したもの

::readline ライブラリのインストール
*[GNUパッケージの入手が必要な場合、近くのGNUミラーサイトから探してください|http://www.postgresql.jp/document/pg835doc/html/install-requirements.html](ミラーサイトの一覧はhttp://www.gnu.org/order/ftp.htmlにあります)。または、ftp://ftp.gnu.org/gnu/から探してください。
とのこと。

 # ftp ftp.gnu.org
    :
 Name (ftp.gnu.org:root): anonymous
 ftp> cd /gnu/readline
 ftp> get readline-5.2.tar.gz

 # gunzip readline-5.2.tar.gz 
 # tar xvf readline-5.2.tar 
 # cd readline-5.2
 # ./configure
 # make
 # make install

::再度configure
まだエラー。
config.logのfailureを見ろと。ディレクトリが見つからないのではないかと。readlineのサポートをはずすこともできるよとも。
 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.

config.log
   :
 dit -lcurses -lcrypt -ldl -lm  >&5
 /usr/bin/ld: cannot find -ledit
 collect2: ld returned 1 exit status
 configure:6738: $? = 1
 configure: failed program was:
   :

[Ncurses ライブラリが足りない|http://www.google.co.jp/custom?domains=typea.info%3Btypea.dip.jp&q=ncurses+install&sitesearch=&sa=google&client=pub-4280062068315072&forid=1&ie=utf-8&oe=utf-8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23336699%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BFORID%3A1&hl=ja]模様
[Ncurses ライブラリが足りない|http://typea-mixi01.appspot.com/yh_s?q=Ncurses+%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%8C%E8%B6%B3%E3%82%8A%E3%81%AA%E3%81%84]模様

::ncursesのインストール

 # ftp ftp.gnu.org
    :
 Name (ftp.gnu.org:root): anonymous
 ftp> cd /gnu/ncureses
 ftp> get ncurses-5.7.tar.gz

 # cd ncurses-5.7
 # ./configure --with-shared --with-normal
 # make
 # make install
::再再度configure
またまたエラー
 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.

http://honana.com/library/zlib.html
http://www.zlib.net/
 # wget -P [ダウンロード先ディレクトリ] http://www.zlib.net/zlib-1.2.3.tar.gz

 # gunzip zlib-1.2.3.tar.gz 
 # tar xvf zlib-1.2.3.tar 
 # cd zlib-1.2.3
 # ./configure
 # make
 # make install

::キャッシュを最新化
 # ldconfig

::構成 〜 インストール
ルートで、インストールディレクトリ(デフォルト)を作成
 # mkdir /usr/local/pgsql
 # chown postgres:postgres /usr/local/pgsql
 # su postgres

 $ cd postgres-8.3.5
 $ ./configure --with-python
 $ make
 $ make install


!設定作業
/etc/bashrc の末尾に以下を追記

 if [ $?LD_LIBRARY_PATH ]then
   LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
 else        
   LD_LIBRARY_PATH=/usr/local/pgsql/lib
 fi
 export LD_LIBRARY_PATH
 PATH=/usr/local/pgsql/bin:$PATH
 export PATH
 export PGDATA=/usr/local/pgsql/data

!!データベースクラスタの作成
http://www.postgresql.jp/document/current/html/creating-cluster.html
!データベース格納領域を初期化
*ディスク上にデータベース格納領域を初期化する必要があります。
*格納領域をデータベースクラスタと呼びます(SQLではカタログクラスタという用語が使用されます)。 
*データベースクラスタはデータベースの集合
*稼働しているデータベースサーバのただ1つのインスタンスを通して管理
*ファイルシステムの観点から見ると、データベースクラスタというのは、全てのデータが格納される1つのディレクトリ

 $ initdb --encoding=UTF8

上記で、PGDATA環境変数を設定しているため、-D オプションをつけていない。
つける場合、$ initdb -D /usr/local/pgsql/data とする
!デフォルトの文字セット
デフォルトの文字セット符号化方式も設定。データベース作成時に上書き可能
http://www.postgresql.jp/document/current/html/multibyte.html

!データベースサーバの起動
http://www.postgresql.jp/document/current/html/server-start.html
*以下でデータベースサーバを起動できる
*PGDATA環境変数を指定している場合、-D オプションは不要
*他のオプションは[こちら|http://www.postgresql.jp/document/current/html/runtime-config.html]を参照
 $ postgres -D /usr/local/pgsql/data

*シェル構文は長くなりがちのため、pg_ctlラッパプログラムが提供されていて、いくつかのタスクを単純化している。
!!ログの設定
http://www.postgresql.jp/document/current/html/logfile-maintenance.html
!PostgreSQLのログ設定

/usr/local/pgsql/data/postgres.conf を編集

::以下の設定によりログ出力
 log_destination = 'syslog'  
 syslog_facility = 'LOCAL0'
 syslog_ident = 'postgres'

::何を出力するか
http://www.postgresql.jp/document/current/html/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT

以下あたりを有効にしてみる
,パラメータ,内容
,log_connections(boolean),クライアント認証の成功終了などのサーバへの接続試行がログに残ります
,log_duration(boolean),すべての完了した文について、その経過時間をログする
,log_statement (文字列),どのSQL文をログに記録するかを制御します。有効な値は、none、ddl、mod、およびallで

/usr/local/pgsql/data/postgres.conf を編集
 log_connections = on
 log_duration = on
 log_statement = 'all' 





!syslogの設定

local0 - local7 までが、ローカル使用用に予約されている。
manを確認
 man -a syslog

::/var/log/postgresにログ出力
 # vi /etc/syslog.conf

 # PostgreSQL log
 local0.*    -/var/log/postgres

::/var/log/messages への出力を抑制
local0.none を追記
 # Log anything (except mail) of level info or higher.
 # Don't log private authentication messages!
 #2008.11.30
 #*.info;mail.none;authpriv.none;cron.none               /var/log/messages
 *.info;mail.none;authpriv.none;cron.none;local0.none    /var/log/messages

::syslog 再起動
 # /sbin/service syslog restart



!!データベースの作成
*データベースを作成する場合、PostgreSQLサーバが起動している必要がある
*[SQLコマンド|http://www.postgresql.jp/document/current/html/sql-createdatabase.html]から、
*データベースを作成できるが、利便性のため、シェルから[createdb|http://www.postgresql.jp/document/current/html/app-createdb.html]を実行しても作成できる。
*削除はdropdbにて可能

 $ createdb testdb
!!データベースへのアクセス
http://www.postgresql.jp/document/current/html/tutorial-accessdb.html
以下によってアクセス可能
*psqlというPostgreSQL対話式端末プログラムを実行
*データベースの作成や操作をサポートする[[pgAdmin|PostgreSQL pgAdminのインストール]]やODBCを備えたオフィススイートなどの既存のグラフィカルなフロントエンドツールを使用
*複数の使用可能言語の1つを使用した、独自のアプリケーションの作成

psql を試す

 $ psql testdb
 Welcome to psql 8.3.5, the PostgreSQL interactive terminal.
 
 Type:  \copyright for distribution terms
        \h for help with SQL commands
        \? for help with psql commands
        \g or terminate with semicolon to execute query
        \q to quit

testdb=#となっているのは、スーパーユーザーであるため。スーパーユーザーでない場合、tetdb=>となる。
以下のコマンドを試す
 testdb=# SELECT version();
                                               version                                               
 ----------------------------------------------------------------------------------------------------
  PostgreSQL 8.3.5 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-13)
 (1 row)

!クライアントからの接続設定
*[[こちら|PostgreSQL pgAdminのインストール]]を参照