トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

さくらのVPSにPostgreSQLインストール

[vps]さくらのVPSにPostgreSQLインストール

  前提

以下の手順を行ったときの環境は以下のとおり。

  • サーバ環境
  • そのほか
    • Webサーバ (Apache2) 導入済み

※今回インストール対象とする PostgreSQL のバージョンは、現時点 (2011-05-29) で最新の 9.0.4 です。

  参考サイト

※バージョンを指定したかったので、yum コマンドだけで直接インストールしたのではなく、PostgreSQL の 1 プロジェクトで提供している RPM パッケージを取得して、そこからインストールしました。

  RPM パッケージファイルの入手

  • 上記サイトのメニューから [RPM Chart (Status)] のページを開き、必要な PostgreSQL VersionOs/Arch の組み合わせを選択します。
    • 今回は PostgreSQL 9.0 系を さくらのVPS (デフォルトOSは CentOS 5, x86_64) にインストールするのでここのページです。
  • 表示したリストから必要なパッケージ (*.rpm) ファイルの URL を探します。
    • リストから必要なパッケージを探して個別のページへ飛ぶと、「Packages」項目に *.rpm ファイルへのリンクがあります。
  • 今回インストールしたのは以下のパッケージです[1]
postgresql90-9.0.4-1PGDG.rhel5.x86_64.rpm		// PostgreSQL Client
postgresql90-server-9.0.4-1PGDG.rhel5.x86_64.rpm	// PostgreSQL Server
postgresql90-libs-9.0.4-1PGDG.rhel5.x86_64.rpm	// Libralies
  • これらのパッケージを wget で取得します。
    • 操作は root で行います。ダウンロード先のディレクトリはどこでも構いません[2]
# wget http://www.pgrpms.org/9.0/redhat/rhel-5-x86_64/postgresql90-9.0.4-1PGDG.rhel5.x86_64.rpm
# wget http://www.pgrpms.org/9.0/redhat/rhel-5-x86_64/postgresql90-server-9.0.4-1PGDG.rhel5.x86_64.rpm
# wget http://www.pgrpms.org/9.0/redhat/rhel-5-x86_64/postgresql90-libs-9.0.4-1PGDG.rhel5.x86_64.rpm

  RPM パッケージファイルからインストール

  • さきほど RPM パッケージファイルをダウンロードしたディレクトリで以下のコマンドを実行します。
    • 依存するパッケージ (参考サイトでは libxslt など) が足らないと怒られます。
    • 私の場合は一発でインストールできました。
# rpm -ivh postgresql90-*
準備中...                ########################################### [100%]
   1:postgresql90-libs      ########################################### [ 33%]
   2:postgresql90           ########################################### [ 66%]
   3:postgresql90-server    ########################################### [100%]
  • すべてのパッケージのインストールに成功したら、不要になった PRM パッケージファイルは削除してしまって構いません。
# rm postgresql90-*

  データベースの初期構築など

  • データベースの初期化を行いますが、そのためには「データベースシステム用のデータを格納するディレクトリ[3]」を指定しなければなりません。
    • このディレクトリは環境変数 PGDATA か、コマンド実行時に -D オプションで指定します。
      • 私は環境変数を設定しました。ディレクトリは /var/lib/pgsql/9.0/data です[4]
    • また、PostgreSQL の初期状態では各種コマンドにパスが通っていません。必要に応じてパスを通すように設定してください[5]
  • PostgreSQL の初期構築は postgres アカウントで行う必要がありますので、root ユーザから postgres ユーザへスイッチします。
    • データベースで使用する文字コードはサーバ環境に合わせて UTF-8 としました。
# su - postgres
$ /usr/pgsql-9.0/bin/initbd --no-locale -E UTF8
  • データベースの初期化が終わったら一旦 postgres ユーザを抜けて root ユーザに戻ります。
$ exit
#
  • 必要な人は自動起動設定を行います。
# chkconfig postgresql-9.0 on
# chkconfig --list postgresql-9.0
postgresql-9.0  0:off   1:off   2:on    3:on    4:on    5:on    6:off
  • 自動起動設定を行った場合は、サービスから起動[6]します。
# service postgresql-9.0 start
postgresql-9.0 サービスを開始中:                           [  OK  ]
  • 自動起動設定を行わずに、つど起動・停止する場合は以下のコマンドです。これもコマンドのパスを通おきましょう[7]
    • データディレクトリを環境変数 PGDATA に設定していない場合は、-D コマンドで指定する必要があります。
    • システムの root ユーザでは起動できません。postgres アカウントで実行します。
$ su - postgres
# /usr/pgsql-9.0/bin/pg_ctl start
# /usr/pgsql-9.0/bin/pg_ctl stop

  データベースに接続してみる

  • PostgreSQL を起動した状態で、データベースに接続してみます。
    • まだ追加のユーザを作成していないので、起動ユーザ:postgres で接続します ("-U postgres")。
    • psql コマンドのオプションと対話中のコマンドは『Hishidama's psql Memo』参照。
$ psql -U postgres
postgres=# \d
No relations found.

postgres=# create table test(id char(1));
CREATE TABLE
postgres=# \d
        List of relations
 Schema | Name | Type  |  Owner   
--------+------+-------+----------
 public | test | table | postgres
(1 row)

postgres=# drop table test;
DROP TABLE
postgres=# \d
No relations found.

postgres=# \q

$
  • ついでに postgres ユーザにパスワードをかならず設定しましょう。
$ psql -U postgres
postgres=# alter user postgres password 'パスワード';
ALTER USER

以上でさくらの VPS に PostgreSQL のインストールが完了しました。

  ユーザとデータベースの作成

  • ユーザの作成
    • コマンドのパスは pg_ctl などと同じ。
      • オプション「-U postgres」は postgres アカウントで作業をするように指定します。
      • オプション「-P」は作成するユーザにパスワードを設定するよう指定します[8]
$ createuser -U postgres -P ユーザ名
Enter password for user "ユーザ名": ←パスワードを入力
Enter it again:          ← パスワード再入力
Shall the new user be allowed to create databases? (y/n) n ← データベースの作成権限を与えるか?
Shall the new user be allowed to create more new user? (y/n) n ← ユーザの作成権限を与えるか?
CREATE USER
  • データベースの作成
      • オプション「-U postgres」は postgres アカウントで作業をするように指定します。
      • オプション「-O ユーザ名」は作成するデータベースの所有者を指定します。
      • オプション「-W」はデータベースに接続するまえにパスワード入力を強制するよう指定します。
      • オプション「-E UTF-8」はデータベース内で使用する文字符号化方式を指定します。
$ createdb -U postgres -O ユーザ名 -W -E UTF-8 データベース名
CREATE DATABASE
  • 作成したデータベースに接続する
$ psql -U ユーザ名 データベース名
Password: ← パスワード入力

データベース名=# 
  • [1]devel とか必要であれば対象としてください。私は良くわからなかったので今回は対象にしませんでした。必要ならあとで追加インストールするさ!!1(白目
  • [2]どうせあとで作業が終わったら削除します
  • [3]DB の実体を格納する場所
  • [4]-D オプションで指定するときも同じ
  • [5]フルパスで指定して実行しても、もちろん構いません
  • [6]起動は start、停止は stop
  • [7]もしくはパスの通ってるディレクトリにシンボリックリンクを作成するか、alias を張るか、方法はいろいろ
  • [8]このオプションを除くとパスワードなしユーザが作成可能

LOGIN: 未ログイン

最終更新時間:2011年05月31日 19時21分17秒

Copyright (C) 2009 TMD45.JP, Some rights reserved.