Amazon LinuxにPostgreSQL 9.2.2をインストールする
PostgreSQL 9.2.2を使ってみたい
Amazon RDSには対応していないPostgreSQLではありますが、毎年のバージョンアップと高速化、さらには、GIS対応やレプリケーションなど、気になる機能がたくさんあります。そこで、今回はソースからビルドして使ってみたいと思います。
まずはダウンロードして解凍
$ wget http://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz $ tar zxvf postgresql-9.2.2.tar.gz
関連ライブラリをインストール
$ sudo yum install make gcc -y $ sudo yum install flex bison -y $ sudo yum install readline-devel ncurses-devel zlib-devel -y
ビルドしましょう。smallインスタンスで20分程度待ったかかもしれません。気長に待ちましょう。
$ cd postgresql-9.2.2 $ gmake $ sudo gmake install
contribのインストール
関連ライブラリもインストールします。
$ cd postgresql-9.2.2 $ cd contrib $ gmake $ sudo gmake install <h2 id="toc-">データベース初期設定</h2> <p>教科書に載っているいつもの手順です。まずはユーザ作成から</p> $ sudo adduser postgres $ sudo passwd postgres $ sudo mkdir /usr/local/pgsql/data $ sudo chown postgres /usr/local/pgsql/data $ sudo TH=$PATH:/usr/local/pgsql/bin
postgresユーザになって設定ファイルを編集します
$ su - postgres > /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data --no-locale
バッファやメモリの設定などを行います。設定値はインスタンスタイプに合わせて調整しましょう。また、インターネットからアクセスするためにIP指定します。VPC内で使っているようでしたら、例えば、10.0.1.100等の指定をします。
> vi /usr/local/pgsql/data/postgresql.conf shared_buffers = 512MB work_mem = 4MB wal_buffers = 64kB listen_addresses = '10.0.1.100'
次にネットワークの設定です。インターネットからの接続を許可します。今回はサンプルなので緩いですが、実際は特定のサブネットからのアクセスが望ましいと思います。
> vi /usr/local/pgsql/data/pg_hba.conf host all all 127.0.0.1/32 md5 host all all 0.0.0.0/32 md5
サービス起動の設定です。
$ sudo cp ~/postgresql-9.2.2/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql $ sudo chmod 755 /etc/rc.d/init.d/postgresql $ sudo chkconfig --add postgresql $ sudo chkconfig --level 35 postgresql on $ sudo chkconfig --list | grep postgresql
起動してみましょう
$ sudo service postgresql start Restarting PostgreSQL: ok $ sudo service postgresql status pg_ctl: server is running (PID: 3669) /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data"
コンソールから接続確認
接続確認するためにはpsqlコマンドを用います。
$ su - postgres > /usr/local/pgsql/bin/psql
テスト接続するためにユーザとデータベースを作成しています。
postgres=# create role test PASSWORD 'testpass' CREATEDB LOGIN; postgres=# create database test owner test template=template0 encoding='utf-8'; postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+-----------+---------+-------+----------------------- postgres | postgres | SQL_ASCII | C | C | template0 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres test | test | UTF8 | C | C | (4 rows) postgres-# \q
まとめ
手順を押さえておけば簡単ですね。次回は、GISやレプリケーションについて実験してみたいと思います。余談ですが、もはやこのブログ執筆は自分用のメモ書きとなっていて、1年後にググったら自分のブログが出てくるという状況ですがw、どんどん新しい情報を詰め込みたいと思います。全体を理解するためには「多ドク」と「多ログ」です。