2016年1月23日 星期六

CentOS 7.2 安裝 PostgreSQL 9.4

最近在使用CentOS 7.2 build 1511, 之後會用到django rest framework + postgreSQL
於是今天就嘗試安裝相關的環境,這篇就只記錄安裝 postgreSQL 9.4的部份…
首先,使用yum 安裝 postgreSQL 套件
postgreSQL 目前支援的linux作業系統與版本可以到官網上查詢,提供查詢網址如下:
http://yum.postgresql.org/repopackages.php
裡面有不同版本對應作業系統的Repository



●安裝
1. yum install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-2.noarch.rpm
2. yum install postgresql94-server postgresql94-contrib

●啟動才務
安裝完後,需要再另外下指令初始化資料庫,並啟動服務
1. /usr/pgsql-9.4/bin/postgresql94-setup initdb
2. 設定為開機後自動啟動服務
systemctl enable postgresql-9.4.service
3. systemctl start postgresql-9.4.service

●設定連接
使用 vi 或 vim 編輯設定檔
編輯 /var/lib/pgsql/9.4/data/postgresql.conf
設定postgresql的listen ip與連接埠
將 #listen_addresses = 'localhost' 前面的 # 刪掉 -> 僅限local登入
listen_addresses = '*' --> 不限登入ip
將 #port = 5432 前面的 # 刪掉

編輯完成後,按 Esc 離開編輯模式
強制存檔命令:w
離開命令:q

●設定本機連接(要需要才設定,可略過)
編輯 (pg_hba.conf)
編輯 /var/lib/pgsql/9.4/data/pg_hba.conf
將 host all all 127.0.0.1/32 ident 改為 host all all 127.0.0.1/32 trust (把 ident 改為 trust)
PS: 這種改法表示本機都可以登入 PostgreSQL, 要謹慎使用

●重新啟動PostgreSQL
systemctl restart postgresql-9.4

●設定防火牆
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

●查看安裝後的postgreSQL版本
sudo -u postgres psql --version
如果CentOS有啟動SELinux時,必需再輸入以下命令調整連接db之安全政策
setsebool -P httpd_can_network_connect_db 1

何謂SELinux....詳見:http://www.suse.url.tw/redhat/SELinux.htm 

●建立postgresql的super user密碼
預設之super user帳戶為 "postgres"
切換登入的username,命令如下:
su - postgres

●登入postgresql,使用以下命令:
psql
登入後會顯示以下訊息:

psql (9.4.5)
輸入 "help" 顯示說明。


若要離開psql,使用命令\q
●變更使用者"postgres"密碼

postgres=# \password postgres

輸入新密碼:
再次輸入:
postgres=# \q


●新增使用者"testuser"
$ createuser testuser

●新增資料庫"testdb"
$ createdb testdb

●授權testsdb給testuser
$ psql
postgres=# alter user testuser with encrypted password 'centos';
ALTER ROLE
postgres=# grant all privileges on database testdb to testuser;
GRANT

●搭配phpPgAdmin,變更加密演算法為md5,並設定允許登入的ip
編輯檔案
vi /var/lib/pgsql/9.4/data/pg_hba.conf
[...]
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
host all all ::1/128 md5
[...]

●安裝web admin套件 - phpPgAdmin與Apache
1. 安裝EPEL(Extra Packages for Enterprise Linux),其主要目的是提供各種企業級的 Linux 一些額外的高品質套件
yum install epel-release
yum update

2. 安裝 phpPgAdmin與Apache
yum install phpPgAdmin httpd

安裝完後,啟動 apache service
systemctl enable httpd
systemctl start httpd

即可由本地端透過網頁管理postgreSQL
http://localhost/phpPgAdmin

要讓其他電腦也能透過web管理,還設編輯設定檔 /etc/httpd/conf.d/phpPgAdmin.conf
vi /etc/httpd/conf.d/phpPgAdmin.conf
修改以下內容,主要為Require all granted 以及 Allow from all


[...]
Alias /phpPgAdmin /usr/share/phpPgAdmin
< Location /phpPgAdmin >
    < IfModule mod_authz_core.c >
        # Apache 2.4
        Require all granted
        #Require host example.com
    < /IfModule >
    < IfModule !mod_authz_core.c >
        # Apache 2.2
        Order deny,allow
        Allow from all
        # Allow from .example.com
    < /IfModule >
< /Location >

●重新啟動 apache service
systemctl restart httpd

即可使用 http://ip-address/phpPgAdmin 進入管理介面

reference:
http://www.unixmen.com/postgresql-9-4-released-install-centos-7/


●確認postgresql運作狀況
systemctl status postgresql-9.4


看到第二行紅色部份為enabled時,即開機時會自動啟動服務
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.4.service; enabled; vendor preset: disabled)

沒有留言: