実行環境 関連サイト Postgres.appインストール ~ 動作確認(以上、昨日)
Contents


プログラムとデータの場所を確認

MacSSH接続する設定は825日の最後に行いました。Windows側のSSHクライアントはGit Portable付属のを使用。接続してまず、PostgreSQLのプログラムとデータの場所を確かめておきます。データフォルダのパスは長い上に半角空白があるので、そのうち別の場所に移したいけど、今回はこのまま。
# programs
ls /Applications/Postgres.app/Contents/Versions/9.5/bin

# data
ls /Users/user/Library/Application\ Support/Postgres/var-9.5


プログラムフォルダの中を見ると、PostGISで使うshp2pgsqlなどのコマンドラインツールがあります。あと同様にPostGIS関係でgdalの各種ツールも。後者はWindows版のPostGISにはないです。

psqlだけは、エイリアスか何かが設定されているのか、パスなしで使えるようです。


設定ファイル編集、サーバ再起動

ここからは、いつもCentOS等の仮想マシンでやっている、PostgreSQLがローカルホスト以外からの接続を受け付けるための設定。データフォルダにある2つの設定ファイル(postgresql.conf、pg_hba.conf)を編集します。編集内容はOSによらず同じなので、慣れれば楽。まずpostgresql.confConnection Settingsのセクションで、listen_addreses'*'に変更。
vi /Users/user/Library/Application\ Support/Postgres/var-9.5/postgresql.conf
# listen_addresses = 'localhost' -> '*'

今回、直前にAutoHotkeyのキー割り当てを少し変えたせいかConEmu + SSH + viの動作が変で、スクロールすると表示が乱れました。そこで途中から、久しぶりに普通のコマンドプロンプトに替えて作業。2つの設定ファイルを少し編集するだけだったので、何とか耐えられました。。。


postgresql.confに続き、pg_hba.confで具体的に接続許可する相手のアドレス等を、例えば下のように追加します。右端のmd5はパスワード認証。この場合、PostgreSQLユーザにパスワードが設定されていないと接続できないので、未設定ならここで忘れずにクエリしておきます。
vi /Users/user/Library/Application\ Support/Postgres/var-9.5/pg_hba.conf
# Add  : host  [Database]  [User]  [Address]           [Method]
# e.g. : host   all         all     xxx.xxx.xxx.xxx/32  md5
psql
# ALTER ROLE "user" PASSWORD '********';


編集した内容は、PostgreSQLサーバを再起動して初めて有効になります。OS Xでのサービス制御にまだ疎いので、今回はpg_ctlコマンドを使いました。-Dオプションでデータフォルダを指定します。他にログ出力先の設定などいろいろオプションがありますが、今回はとりあえずこれだけ。
/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_ctl restart -D [Data Folder]

再起動できたので、次にWindows側のpsql、pgAdminで接続します。


Windows側クライアントで接続

psqlは、SSHと同様にConEmuを使うので、見た目は余り変わりません。-hオプションでMacIPアドレスを指定し、先ほどの設定ファイル編集が正しければ接続できるはず。Windows側はまだPostgreSQL 9.4なので、psqlのバージョンがサーバより古いという「注意」が出ます。
psql -U user -h xxx.xxx.xxx.xxx

psql (9.4.1, サーバー 9.5alpha1)
注意: psql メジャーバージョン 9.4, サーバーバージョン 9.5.
         psql の機能の中で、動作しないものがあるかもしれません。
"help" でヘルプを表示します.

user=# SELECT version();

version
------------------------------------------------------------------
 PostgreSQL 9.5alpha1 on x86_64-apple-darwin14.3.0, compiled by Ap
ple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn), 
64-bit
(1 行)


接続したデータベース(ユーザ名と同じもの)の拡張を調べると、まだPostGISは入ってなかったので、この際インストールします。CREATE EXTENSION postgis;の一文をクエリするだけ。
# SELECT extname, extversion FROM pg_extension;
 extname | extversion
---------+------------
 plpgsql | 1.0
(1 行)
# CREATE EXTENSION postgis;
# SELECT extname, extversion FROM pg_extension;

 extname | extversion
---------+------------
 plpgsql | 1.0
 postgis | 2.2.0dev
(2 行)

# SELECT postgis_full_version();

       postgis_full_version
------------------------------------------------------------------
 POSTGIS="2.2.0dev r13773" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel
. 4.9.1, 04 March 2015" GDAL="GDAL 1.11.2, released 2015/02/10" LI
BXML="2.9.2" LIBJSON="0.11" RASTER
(1 行)


psqlのテストはここまで。最後に、Windows側のpgAdminから接続する設定をします。例えば下のように新規サーバを追加し、OKを押すと即座に接続を試みます。


↓ 警告が出ますが、内容は先ほどのpsqlと同じで「サーバの方がクライアントより新しく、いくつかの機能は使えないかもしれない」というもの。これが出れば既に接続成功した証拠です。二つ目の画像が、オブジェクトブラウザでサーバを開いたところ。PostGIS 2.2devの関数が1100以上ありました。


まとめと感想