最近、いろんなPostageSQL11のインストールをしたのでまとめておく。
共通事項
PostgreSQLはデフォルトはOSのロケールを使う。 そこでロケールはCを指定するのが一般的なのでno-localeを指定した手順となっている。 また文字エンコーディングもデフォルトはsql_asciiなためUTF-8をを指定する手順となっている。 正しいロケールとエンコードを指定していないと後から本番DBを作り直すことになったりするので、最初からちゃんと作っておこう。 いろんな現場で失敗したDBを見てきたのでマジでちゃんと最初にやっておいてくれ!!
それとpostgresql.confとpg_hba.confの話はしない。 この2つはDB再起動すれば反映できるし、昔書いたことあるのでそちらを見て。
CentOS 7
以下手順。
-- PostgreSQLのインストール # yum localinstall https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm # yum install postgresql11-server postgresql11-contrib postgresql11-devel postgresql11-libs -- PostgreSQLのセットアップ -- postgresユーザで実行する必要があります # su postgres $ /usr/pgsql-11/bin/initdb -E UTF-8 --no-locale -D /var/lib/pgsql/11/data $ exit # systemctl start postgresql-11.service # psql -V psql (PostgreSQL) 11
インストーラでのインストール
GUIでもインストール出来る。 WindowsとMacOSがある。
インストーラシンプルなので指定する箇所は
- インストール先のフォルダ
- デフォルトのままで大丈夫
- Select Componentsの指定
- サーバ以外にもSQLエディタであるpgadmin3のインストールを聞かれる。
- 我々にはpgadmin4があるので無視して良い
- postgres(スーパーユーザー)のパスワード
- 任意のパスワードを指定してください
- アクセスポート
- デフォルトの5432で大丈夫
インストールしたら勝手に起動してる。 自動起動なので初学者には良さそう。 ただしロケールなどはコマンドと違って最初に指定できないのでtemplate0を利用してデータベースを作成する必要がある。
CREATE DATABASE データベース名 LC_COLLATE 'C' LC_CTYPE 'C' ENCODING 'UTF8' TEMPLATE template0;
DBの作り方はこれで良い。 RDSの場合も同様。
※注意点 2018/10/08 現在、Windowsのアインストールでコケる。 postgresql-jpのSlackの #beginners でも話題になってた。 バグっぽいので自分で頑張る必要がある。
PostgreSQL: Re: BUG #12824: Error during uninstall
Dockerを使ってインストール
dockerのインストール自体は割愛、ググって。 PostgreSQLはコミュニティの公式イメージが Docker Hub に公開されてるのでそれをつかう。
dockerの環境があればインストールは下記のコマンドで一発。
# docker run -d --name {コンテナ名} -e POSTGRES_PASSWORD={postgresユーザのパスワード} -p {ホスト側のフォワードするポート:フォワード先のコンテナのポート} postgres{:バージョン(指定しなければ最新)} -- 実際のコマンド例 # docker run -d --name postgres -e POSTGRES_PASSWORD=hogehoge -p 5432:5432 postgres:11 -- コンテナの起動を確認 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06d37d52ee97 postgres:11 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:5432->5432/tcp postgres -- コンテナへログイン $docker exec -ti postgres bash -- 確認 # psql --version psql (PostgreSQL) 11beta4 (Debian 11~beta4-1.pgdg90+1) -- DBにログイン # psql -U postgres
Docker便利。 とりあえず11はもうすぐ出るし、もうSourceからbuildしなくても試せるのでちょっとベンチマークも含めて試す。
以上メモでした。