正式リリースは来年になりますが、待望のPostgreSQL 9.5がベータ版からリリース候補版に上がりました。アナウンスはこちら(12月18日付)。早速Windows用のZIPからポータブルな実行環境を作ったので、手順のメモです。
実行環境
- Windows 7 SP1 64bit
- コマンドプロンプトの代わりにConEmu 151208を使用
関連ウェブページ、本ブログの過去記事
今日の手順は10月13日の記事とほとんど同じで、Visual C++のランタイムを入れたのと、OSを32bitから64bitにした点が違う程度。
(1)ZIPのダウンロードと解凍
前項に挙げたEnterpriseDB社のダウンロードページの先頭に各OS向けのBinaries from installer version 9.5.0 RC1があり、Win x86-64をクリック。別の画面に遷移しますが、じきダウンロードが始まります。デフォルトのファイル名はpostgresql-9.5.0-rc1-windows-x64-binaries.zipでした。サイズは約51MB。
↓ ZIPの中身。pgsqlというフォルダの中に実行ファイルやライブラリ等が入っています。だいたい、インストーラならプログラムフォルダ下に作るもの+ソースやデバッグ用(include、symbolsの両フォルダ)という感じ。
全部を解凍しなくとも、とりあえずbin、lib、shareの三フォルダがあればサーバ起動とpsql等のコマンドラインツールが使え、share/extension内にある拡張もインストールできます(PL/Pythonのように別途「本体」が必要なものは除く)。この三フォルダを適当な場所に解凍すると ↓ サイズは約66MBでした。
(2)Visual C++ 2013ランタイムのコピー
ちょうど一昨日の記事で書いたmsvcr120.dllを、binフォルダ内にコピーします。GUIツール(pgAdminとスタックビルダ)を使う場合はmsvcp120.dllも必要ですが、当面使わないので今回は省略。参考まで今回使ったmsvcr120.dllのプロパティを下に載せておきます。
(3)データベース初期化
解凍したbinフォルダにあるinitdbコマンドを使います。前項のランタイムがないとここでエラーになるはず。initdbの設定は自由で、下記コマンドはスーパーユーザがpostgres、データフォルダがbinと同じ階層のdata、データベース作成時のデフォルトエンコーディングがutf8、同じくデフォルトのロケールがC、としました。
$ cd
R:\postgresql-9.5.0-rc1
$ "bin/initdb" -U postgres -D data -E utf8 --locale=C
データベースシステム内のファイルの所有者は"********"ユーザでした。
このユーザがサーバプロセスを所有しなければなりません。
データベースクラスタはロケール"C"で初期化されます。
デフォルトのテキスト検索設定はenglishに設定されました。
データベージのチェックサムは無効です。
ディレクトリdataを作成しています ... ok
サブディレクトリを作成しています ... ok
デフォルトのmax_connectionsを選択しています ... 100
デフォルトの shared_buffers を選択しています ... 128MB
selecting dynamic shared memory implementation ... windows
設定ファイルを作成しています ... ok
data/base/1にtemplate1データベースを作成しています ... ok
pg_authidを初期化しています ... ok
依存関係を初期化しています ... ok
システムビューを作成しています ... ok
システムオブジェクトの定義をロードしています ... ok
照合順序を作成しています ... このプラットフォームではサポートされません
変換を作成しています ... ok
ディレクトリを作成しています ... ok
組み込みオブジェクトに権限を設定しています ... ok
情報スキーマを作成しています ... ok
PL/pgSQL サーバサイド言語をロードしています ... ok
template1データベースをバキュームしています ... ok
template1からtemplate0へコピーしています ... ok
template1からpostgresへコピーしています ... ok
データをディスクに同期しています...ok
警告: ローカル接続向けに"trust"認証が有効です。
pg_hba.confを編集する、もしくは、次回initdbを実行する時に-Aオプショ
ン、または、--auth-localおよび--auth-hostを使用することで変更するこ
とができます。
Success. You can now start the database server using:
"bin\pg_ctl" -D "data" -l logfile start
問題なければ最後にSuccess.と表示されて終了。作成されたデータフォルダの中に ↓postgresql.confなど設定ファイルもあるはずです。この時点ではサーバは起動していません。
(4)起動・再起動・終了用のバッチファイル作成
PostgreSQLをポータブルに使うため、Windowsのサービスには登録せず必要な時にバッチファイルでサーバ起動するようにします。ついでに再起動と終了も同じバッチで済むようにした例が ↓ で、5月3日、10月13日のと同じ。フォルダ構成が変わらなければだいたい使い回せると思います。
↓ 起動した様子。ログをファイルに出す指定をしてないので(pg_ctlのオプションで可能)コンソールにログが出てバッチファイルの出すプロンプト表示に割り込みつつ、待機します。この状態でRを打つと再起動、Qで終了、それ以外は再度プロンプトを出します。
↓ 試しに再起動させた様子。pg_ctlのメッセージとログの表示が入り乱れますが、サーバ自体は正常に停止と再起動して再び待機状態に入りました。
こんな感じでDOS窓でサーバを立ち上げた後は、ウィンドウ最小化とか、タスクトレイに入れる(ConEMUなら可能)とかで目立たなくできます。
(5)psqlで接続テスト
念のためpsqlで接続・クエリできるか確認できれば ↓ 最小限の環境構築は終わり。
後は、フォルダ全体をどこに移しても同じようにアドホックにサーバを使えて便利。データフォルダの場所を変える場合はまだ試してないけど、たぶんバッチファイル内の変数dirを変えれば済むかと思います。