MacOS源碼編譯安裝 PostgreSQL

  • 編譯環境 Mac OSX 下只要裝了 Xcode 就行,全部編譯須要的工具和類庫都有了。CentOS 下須要安裝下面的軟件包。
$ sudo yum install make gcc readline-devel zlib-devel flex bison

若是是從 git 倉庫 checkout 出的源碼,還須要額外安裝下面兩個包:git

$ sudo yum install flex bison

Debian 下經過下面命令安裝編譯須要的軟件包:sql

$ sudo aptitude install make gcc libreadline-dev zlib1g-dev
  • 下載最新的源碼包 Linux 下我喜歡把源碼包下載到 /usr/local/src 目錄下,Mac OSX 默認沒有這個目錄,須要建立一個, 參見:[[./system-setup.org][創建一個用來進行源碼編譯的目錄]]。而後從 PostgreSQL [[http://www.postgresql.org/ftp/source/][官網下載]] 最新的源碼包。
$ curl -O https://ftp.postgresql.org/pub/source/v9.4.5/postgresql-9.4.5.tar.bz2
$ tar xjvf postgresql-9.4.5.tar.bz2 -C /usr/local/src
  • 編譯安裝到指定目錄 將 9.4.5 這個版本編譯並安裝到 /usr/local/pgsql/9.4.5 這個目錄下,而後爲該目錄建立一個 default的軟連接,表示當先正在使用的數據庫版本。
$ cd /usr/local/src/postgresql-9.4.5
$ ./configure --prefix=/usr/local/pgsql/9.4.5
$ make
$ sudo make install
$ sudo ln -s /usr/local/pgsql/9.4.5 /usr/local/pgsql/default
  • 建立一個數據庫管理員用戶 Mac OSX 下不能直接建立用戶,由於新增的用戶默認都有管理員權限,好在系統默認有一個 _postgres 用戶能夠直接用。 CentOS 下仍是須要老老實實的建立一個 postgres 用戶。注意兩個系統的用戶名不一樣,Mac OSX 的帶一個下劃線。
$ sudo useradd -c "PostgreSQL Server" postgres
  • 數據庫初始化 建立一個目錄 /var/lib/pgsql,用來存貯數據庫的數據文件。併爲 postgres 設置訪問權限。 用 postgres 建立一個當前主版本的數據目錄 9.4,並作一個 default 軟連接。注意在 initdb 時指定一個數據庫超級用戶 postgres, 不然 Mac OSX 使用默認的 _postgres 會有問題。
$ sudo mkdir /var/lib/pgsql
$ sudo chown postgres:postgres /var/lib/pgsql

# 若是是 Mac OSX 應該是 _postgres:wheel 
$ sudo chown _postgres:wheel /var/lib/pgsql

# 若是是 Mac OSX 要將 sudo -u 後的 postgres 改成 _postgres,但最後的 -U postgres 不變
$ sudo -u postgres mkdir /var/lib/pgsql/9.4
$ sudo -u postgres ln -s /var/lib/pgsql/9.4 /var/lib/pgsql/default
$ sudo -u postgres /usr/local/pgsql/default/bin/initdb \
                   -D /var/lib/pgsql/default/data -U postgres
  • 數據庫訪問設置 Mac OSX 主要是本機測試用,不用作下面的設置,若是是 CentOS 服務器上須要下面的設置。 首先指定能夠訪問數據庫的客戶端 ip。
$ sudo vi /var/lib/pgsql/default/data/pg_hba.conf

修改防火牆配置,放行 5432 端口的訪問。數據庫

$ sudo vi /etc/sysconfig/iptables
.....
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
.....

$ sudo service iptables restart
  • 啓動數據庫 用 postgres 用戶啓動數據庫,並容許外部客戶端經過 5432 端口進行訪問,只是本機自用的話就去掉 -i 的啓動參數。
$ sudo -u postgres /usr/local/pgsql/default/bin/pg_ctl \
                   -D /var/lib/pgsql/default/data -o '-i -p 5432' \
                   -l /var/lib/pgsql/default/pgstartup.log start

正式數據庫服務器的 postgres 用戶會有本身的 HOME 目錄,能夠經過下面命令啓動服務器

$ sudo -i -u postgres /usr/local/pgsql/default/bin/pg_ctl \
                      -D /var/lib/pgsql/default/data -o '-i -p 5432' \
                      -l /var/lib/pgsql/default/pgstartup.log start

Mac OSX 下啓動命令要去掉 sudo 的 -i 參數。curl

$ sudo -u _postgres /usr/local/pgsql/default/bin/pg_ctl \
                    -D /var/lib/pgsql/default/data -o '-i -p 5432' \
                    -l /var/lib/pgsql/default/pgstartup.log start
相關文章
相關標籤/搜索