明けましておめでとうございます。
さて、今年第1回目は年越しコーディングをしていたところをまとめておきます。
今回はCentOSのnode.jsから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を使うためのモジュールをインストールに使用するためです。
# service postgresql-9.3 initdb
実はこの設定を変更していなくて、プログラムからログインできなく嵌ってました・・・。
# 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
# service postgresql-9.3 start # chkconfig postgresql-9.3 on
# su - postgres bash-4.1$ createuser -d <node.jsプログラム実行するユーザ> bash-4.1$ exit
CentOS6系にnode.jsをインストールする方法は以前の記事「CentOS 6.4 x64 にnvmでnode.jsをインストールする」でインストールします。
$ 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を使う環境ができました。
RSSを取得する