8 月
25
|
前回に引き続きPostgreSQLの設定を行います。
その前にQNAPを操作していて不可解な事に気づきましたので、その事について先に書いておきます。
QNAPの管理画面でGUI操作をする場合、インストールするパッケージ(hogehoge.qpkgとなってます)は
本製品用に作られているためアプリの追加・削除等は比較的簡単な操作で済ませることが可能です。
しかし、アプリ開発時には足りないモノがあるため、それをインストールするために利用できるのがOptware IPKGです。
ところが、このIPKGは決してQNAP用に提供されているのではないため矛盾が生じます。
例えばphp
現時点で使われているバージョンはphp5.3.28です(QNAPのファームウェア4.1)
※QNAPのファームウェアのバージョンで異なります。
ipkgコマンドでphpをインストールすると5.2.17となります。
php-pear php-dev その他が必要なのでipkgでインストールしましたが
現用中のバージョンと異なるため何かと問題が発生します。
qpkgでインストールしたpostgresqlは9.2.1ですけどipkgでは8.2系です
私は8.2系の方が使い慣れているのですが先の事を考えてqpkgの方を使うことにしました。
ただし、不便なことにpsqlコマンドが使えないのが残念です。
それでは、postgresqlの設定を行います
そのためにはSSHでログインし下記のファイルを若干編集します。
pg_hba.conf
postgresql.conf
/share/HDA_DATA/.qpkg/PostgreSQL/postgresDB/ シングルドライブ機は、ここに配置されています。
pg_hba.confには接続許可ホストの情報を追記します、作業用に一時的なものなのでとりあえず次の2行を書き足して他はコメントにしておきます。
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 trust
postgresql.confは文字コードの扱いが気に入らないので変更します。
変更をしない場合、DBの新規作成時に指定される文字関連の処理がen_US.UTF8になってしまいます(米語だね)
どうあがいてもja_JP.UTF8を指定できません、特に既存のDBを移植して使うには日本語文字のソートなどで失敗するだろうし他にも問題が出そうです。
本来ならinitdbで初期化するべきところなんですが、それが使えなかったのでpostgresql.confを編集して新規DB作成時にnolocaleに該当する「C」を指定できるようにしました。
それとタイムゾーンが初期値では香港になっているため時差が生じていたのでこれも変更しました。
timezone = ‘Asia/Tokyo’ タイムゾーンこれ 498行目
以下がlocaleの設定 511行目から
lc_messages = ‘C’ # locale for system error message
# strings
lc_monetary = ‘C’ # locale for monetary formatting
lc_numeric = ‘C’ # locale for number formatting
lc_time = ‘C’
エンコードとロケールの事はpostgresql8.2系から9.2系への変更点としてネットに情報がたくさんあるので、興味のある方はご自分で調べてください。
実際には僅かな変更ですからこれらの作業はすぐに終わると思います
私は右も左も分からない状態から開始したので現状把握するのに時間がかかってしまいました。
あっ もう一つ大事なことがあります
オマケで付いてるphpPgAdminから操作する時、ロールを登録する機能があります
その登録時に「ログインできますか?」にチェックを入れないと使えないDBになってしまいます
最初は登録したのに何故使えないのか悩みました。
ロールの扱いというのか考え方が変わっていますのでご注意ください。
チェックを入れないでロールを作成すると8.2系で言うところのグループロールに登録されてしまいます
ログインロールではないため8.2系で作ったのを移植してもDB接続に失敗して慌てることになります。
※DBの設計にもよると思います。
とりあえず、今回はこのへんで