スポンサードリンク

前置き

明けましておめでとうございます。
さて、今年第1回目は年越しコーディングをしていたところをまとめておきます。
今回はCentOSのnode.jsからPostgreSQLの最新版の9.3を利用しようとして、嵌ったので環境構築方法を書いておきます。

本題

1. PostgreSQL 9.3をインストールします。

CentOS6系の標準でインストールできるPostgreSQLは古いので、9.3を配布しているyumリポジトリを追加してインストールします。

# LANG_OLD=${LANG}
# export LANG=C
# yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
# yum install postgresql93-server postgresql93-devel
# export LANG=${LANG_OLD}

※postgresql93-develもインストールしているのはnode.jsでPostgreSQLを使うためのモジュールをインストールに使用するためです。

2. PostgreSQL 9.3の初期化を行います。

# service postgresql-9.3 initdb

3. pg_hba.confの設定を変更して、node.jsプログラムからlocalhostでログインできるようにします。

実はこの設定を変更していなくて、プログラムからログインできなく嵌ってました・・・。

# vi /var/lib/pgsql/9.3/data/pg_hba.conf

変更内容は以下のとおり

#host    all     all     127.0.0.1/32    ident ※下のように変更
host    all     all     127.0.0.1/32    trust

#host    all     all     ::1/128         ident ※下のように変更
host    all     all     ::1/128         trust

4. PostgreSQL 9.3の起動と自動起動設定をします。

# service postgresql-9.3 start
# chkconfig postgresql-9.3 on

5. node.jsプログラム実行するユーザのPosgreSQLユーザの作成します。

# su - postgres
bash-4.1$ createuser -d <node.jsプログラム実行するユーザ>
bash-4.1$ exit

6. node.jsをインストールします。

CentOS6系にnode.jsをインストールする方法は以前の記事「CentOS 6.4 x64 にnvmでnode.jsをインストールする」でインストールします。

7. node.jsのプログラムからPostgreSQLが使えるようにnode-postgresをインストールします。

$ export PATH=/usr/pgsql-9.3/bin:${PATH}
$ npm install pg

「export PATH=/usr/pgsql-9.3/bin:${PATH}」を行っていなかった場合、「npm install pg」の最中でpg_configコマンドが実行されるのですが、通常であればPATHが通ってなく、ここでエラーになります。エラーにならないようにするためにpg_configへのパスを通しておきます。

以上で、node.jsからPostgreSQLの最新版の9.3を使えるようになりました。(おそらく)

確認

試しにテーブルを作るプログラムを動かしてみましょう。

まずは、node.jsのプログラムを動かすユーザでデータベースを作ります。

$ createdb test_deletable_db

次にテーブルを作成するプログラム(createtable.js)

var pg = require('pg');
var connectionString = process.env.DATABASE_URL
        || "postgres://" + process.env.USER + ":@localhost:5432/test_deletable_db";

pg.connect(connectionString, function(err, client) {
    if(err != null) {
        console.log(err);
        process.exit(1);
    }
    var query = client.query('CREATE TABLE testtabale (date date)');
    query.on('end', function() {
        console.log('database table created!');
        process.exit(0);
    });
    query.on('error', function(error) {
        console.log(error);
        process.exit(1);
    });
});

これを実行します

$ node createtable.js

エラーが出ずにデータベース(test_deletable_db)にテーブル「testtabale」が作成されていたらうまく動いています。

以上でCentOS6のnode.jsから最新版のPostgreSQL9.3を使う環境ができました。

スポンサードリンク