#norelated
* PostgreSQLインストール 〜Debian,RedHat系〜 [#f171f69e]

** 経緯 [#z21dfabe]
- データベースPostgreSQLのインストールログ。
MySQLはライセンスが変わったし、やっぱPostgreSQLが好きなので使ってる。

** パッケージインストール [#uae2f3ac]
パッケージでインストールしたが、PHPのビルドにヘッダファイルが必要だったりして結局パッケージインストールは無意味だった。
PHPもPostgreSQLもパッケージインストールする時代が近づいているかもしれない。

 yum -y install postgresql-server
 apt-get install postgresql

インストールすると勝手に「postgres」というユーザができるので、パスワードをまず変更
 # passwd postgres

** ソースインストール [#af2db918]
主にUIに必要なライブラリが必要

-Debian
 apt-get install libreadline5-dev libncurses5-dev zlib1g-dev
-RedHat系
 yum -y install readline-devel ncurses-devel zlib-devel

-インストール済みかの確認(RPM)
 rpm -qa | grep postgres

- ユーザの作成
PostgreSQLをrootではなく、postgresユーザで実行するため、そのユーザを作成
(adduserだと多くの環境で勝手に/home/以下にホームが作成される)
 /usr/sbin/groupadd postgres
 /usr/sbin/useradd -p -g postgres postgres
ホームディレクトリを変更
 vi /etc/passwd
で直接できるが、usermodでやった方がいいぽい
 /usr/sbin/usermod -d /usr/local/pgsql/ postgres

- ソースの取得
 cd /usr/local/src/
 wget ftp://ftp.jp.postgresql.org/source/v8.2.4/postgresql-8.2.4.tar.gz
 tar -xzvf postgresql-8.2.4.tar.gz 
 chown postgres:postgres -R postgresql-8.2.4

** インストール [#y88b124a]
まずはインストール先ディレクトリを作成し、postgresユーザを所有者に
 mkdir /usr/local/postgresql-8.2.4
 chown postgres:postgres -R /usr/local/postgresql-8.2.4/
あとはpostgresユーザになってコンパイル、インストールする
 su - postgres
 ./configure --prefix=/usr/local/postgresql-8.2.4
 make
 make install
 ln -nfs /usr/local/postgresql-8.2.4/ /usr/local/pgsql
 exit

ライブラリの登録
 vi /etc/ld.so.conf
 
 /usr/local/pgsql/libを追記
 
 /sbin/ldconfig

-環境変数の設定(bash)
postgresユーザになってから
 vi ~/.bash_profile
 に追記
 export POSTGRES_HOME=/usr/local/pgsql
 export PGDATA=$POSTGRES_HOME/data
 export PATH=$PATH:$POSTGRES_HOME/bin
 export PGLIB=/usr/local/pgsql/lib 
 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB

 source ~/.bashrc

DBの初期化
UNICODE(UTF-8)の場合(UNIXユーザpostgresになったうえで)
 initdb -D /usr/local/pgsql/data -E UNICODE
--no-localeはいらなくなったかな?

** 起動 [#v1ee1f40]
-pg_ctlを使う起動
 pg_ctl -D /usr/local/pgsql/data  start
基本。データディレクトリ指定
 pg_ctl -D /usr/local/pgsql/data -w start
実行中のオペレーションの完了を待つ
 pg_ctl -D /usr/local/pgsql/data -l logfile.log start
ログファイル指定
 pg_ctl -D /usr/local/pgsql/data -m immediate restart
接続しているユーザの切断を無視して再起動
 pg_ctl -D /usr/local/pgsql/data -o "-i" start
postmasterにオプションを渡す。この例ではTCPを有効にしている

パッケージなら素直に
 /etc/init.d/postgresql start


スクリプト起動・自動起動
--Debian
 update-rc.d postgresql defaults 98 02
 停止は(98で作ったら)
 update-rc.d -f postgresql remove

--RedHat系
起動スクリプトをソースから取得
 install -o root -g root -m 755 /usr/local/src/postgresql-8.2.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgres
 chkconfig --add postgresql
 chkconfig postgresql on
 chkconfig --list postgresql

-デーモン起動
--Debian
 /etc/init.d/postgresql start 
--RedHat系
 /etc/rc.d/init.d/postgresql start


** 設定 [#o403e841]
(UNIXじゃなくてPostgresの)postgresユーザのパスワードを設定
 psql -U postgres template1
 psqlコマンドラインで
 alter user postgres with password 'password';
 \q;

Postgresユーザの一般ユーザ(role)を作成
 createuser -DAP db_user

AutoVacuumの設定
 vi /usr/local/pgsql/data/postgresql.conf

 autovacuum = on 
 stats_row_level = on
 stats_start_collector = on 

syslogにログをはく
 vi /usr/local/pgsql/data/postgresql.conf
 
 log_destination = 'syslog'  
 log_statement = 'all'

syslogの設定にも追加
 vi /etc/syslog.conf
 
 local0.*                                                /var/log/postgresql.log

syslog再起動
 /etc/init.d/syslog restart

接続の設定
 vi /usr/local/pgsql/data/pg_hba.conf 

trustやident sameuserの項はコメントにするかmd5にした方がいい
外からつなぐことがなければTCP接続もしない
 #local   all         postgres                          ident sameuser
 local   all         all                               md5
 #host    all         all         127.0.0.1/32          trust 

*** 確認 [#n4184697]
DBを作る
 createdb -E Unicode -U postgres testdb
 
 psql testdb
適当にテーブル作って
 CREATE TABLE test_user (
 id SERIAL PRIMARY KEY,
 name VARCHAR(30)
 );
適当にレコード挿入して確認
 INSERT INTO test_user VALUES ( 77 , 'sano' );
 SELECT * FROM test_user;


** 参考 [#y9dbc726]
- 公式サイト http://www.postgresql.org/
- インストール(yum) http://fedorasrv.com/postgresql.shtml
- 日本PostgreSQLユーザ会 http://oss.kk-ntc.co.jp/jpug/pukiwiki/pukiwiki.php?FrontPage
- PostgreSQLの設定
http://www.hizlab.net/app/pgsec.html

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS