OpenEuler安裝配置PostgreSQL

編寫時間:2021年9月18日

作者:liupp

郵箱:[email protected]

序號 更新內容 更新日期 更新人
1 完成第一至三章內容編輯; 2021年9月18日 liupp
2
3

一、準備條件

OpenEuler(Hyper-V虛擬機器):

PostgreSQL:

  • 版本:13.4原始碼版

  • 下載地址:https://www.postgresql.org/download/

  • 因PostgreSQL並未對OpenEuler發行版釋出打包安裝版本,需要我們自己下載原始碼進行編譯安裝,其他linux發行版如果有打包版,可以自行下載安裝。

    原始碼下載位置:





*選擇當前穩定版的最新版的tar.gz壓縮檔案,可以複製右鍵複製下載連結,儲存備用。

下載連結:https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz

二、安裝OpenEuler

2.1 安裝提示

作業系統的安裝按照提示進行即可,在進行軟體包選擇的時候,本次選擇了Server模式,右側的軟體包保持預設未選擇。

按照提示安裝完畢後重啟即可進入到登入介面(命令列模式),本次安裝未安裝圖形介面。

注意:系統啟動後,預設DHCP自動分配IP,需要先配置網路。

2.2網路配置

登入成功後,輸入以下命令獲取當前主機的網路配置檔案:

/** 1.切換到網路配置檔案目錄 **/
cd /etc/sysconfig/network-scripts/ /** 2.檢視配置檔名稱 **/
ls

獲取到配置檔名稱如下:

配置檔名稱為“ifcfg-eth0”,此時可以使用 “vi 檔名”來編輯該檔案,如果對vi工具熟悉的情況下,以上操作可以通過一條命令來處理:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

預設配置如下:

需要修改的配置項如下:

  • BOOTPROTO:將dhcp 修改為 none,代表將採用靜態分配IP地址;
  • ONBOOT:將no 修改為 yes,代表在啟動時自動啟用該裝置;
  • 新增:IPADDR=192.168.12.132 //代表分配的IP地址,這裡根據情況自行設定;
  • 新增:GATEWAY=192.168.12.254 //預設閘道器
  • 新增:PREFIX=24 //掩碼
  • 新增:DNS1=202.102.224.68 //預設DNS,多個DNS按序號自行增加;

修改後的配置檔案如下:

修改完成後儲存退出vi編輯模式。

  • vi 開啟檔案後,進入編輯模式 需要按下 “i”鍵,編輯完成後,先按下“Esc”鍵,然後輸入“:wq”為儲存退出。

輸入以下命令重啟網路服務:

  systemctl restart NetworkManager

沒有錯誤提示即代表重啟成功,可通過ifconfig命令或者"ip a"命令檢視當前網路情況,通過ping命令來檢視網路是否通暢。

如果此時重啟網路後仍提示服務不可用,且無法ping通各個網站的話,可以停用當前網絡卡然後重啟啟用即可。(經測試發現採用Hyper-V建立的OpenEuler虛擬機器偶爾出現這種情況,VM配置後直接成功聯網。)命令如下:

# 檢視 網絡卡資訊
nmcli con show # 停用 指定網絡卡 (eth0為查詢到的配置網絡卡資訊)
nmcli con down eth0 # 啟用 指定網絡卡
nmcli con up eth0

此時網路已通暢,ssh預設是開啟的,此時可以通過ssh連線來管理該系統,後續說明均通過ssh來處理。ssh登入成功後如圖所示:

三、安裝PostgreSQL

3.1安裝步驟

  • 閱讀官方原始碼安裝說明;

  • 下載原始碼包;

  • 根據官方說明安裝必須依賴;

  • 根據官方說明編譯安裝PostgreSQL;

  • 配置、啟動PostgreSQL;

如無特殊說明,本說明是以root賬號登入安裝,所以特殊需要系統許可權命令不再需要sudo字首,如實際安裝過程未採用root賬號導致安裝出現錯誤,可嘗試在命令前增加sudo。

3.2官方安裝說明

官方原始碼安裝說明文件地址:https://www.postgresql.org/docs/current/installation.html

入口尋找方法:

開啟文件後,16.1Short Version章節給了基本安裝的命令,其他相關配置的說明見其他章節,16.2Requirements章節說明與之相關的依賴,建議閱讀。

3.3下載原始碼包

1.首先ssh連線上伺服器,連線命令:

ssh [email protected]

回車後輸入root密碼然後回車:看到如下截圖代表登入成功:

2.在使用ssh登入後,預設在root使用者的根目錄,我們可以建立一個tools檔案,將下載的原始碼包放置在該資料夾下,命令如下:

mkdir tools
cd tools
wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz

下載完成見下圖:

3.4安裝依賴

根據文件說明必要的依賴如下:

  • make 需要版本3.80+

  • gcc

  • tar

  • Readline

  • zlib

其他可選依賴根據自身需要選裝。

3.4.1make

檢查當前系統make 版本,可通過如下命令:

make --version

得到版本號為4.3,符合安裝要求,無需再安裝;

3.4.2gcc
gcc -v

查詢到gcc已安裝,且版本為7.3.0,符合安裝條件;

3.4.3tar

tar為解壓軟體,系統已內建,無需安裝;

3.4.4readline

Readline庫:它允許psql記住你輸入的每個命令,這樣就可以通過上下方向鍵快速輸入之前的命令,預設開啟,也可以通過編譯引數--without-readline來禁止它,建議保留預設。

readline 庫系統已經內建,但OpenEuler安裝PostgreSQL還要安裝readline-devel庫。

安裝命令:

dnf install readline-devel

yum install readline-devel
3.4.5zlib

zlib為預設的壓縮庫,同readline,zlib系統已預設內建,但需要額外安裝zlib-devel庫。

安裝命令:

dnf install zlib-devel

yum install zlib-devel
3.4.6 其他

缺少的庫也可以一個命令統一安裝:

dnf install readline-devel zlib-devel

yum install readline-devel zlib-devel

3.5編譯安裝

步驟:

  • 解壓原始碼包
  • 根據官方簡單版本安裝命令編譯安裝
  • 補充操作
3.5.1解壓原始碼包

回到tools資料夾下,通過tar工具解壓原始碼包到當前目錄下,命令如下:

tar -xvf postgresql-13.4.tar.gz

解壓後在當前tools下生成一個 postgresql-13.4的資料夾。

3.5.2解釋官方提供的安裝命令

官方提供的簡單版本的安裝命令如下:

./configure                       ##配置
make ##編譯
su ##切換管理員許可權
make install ##安裝
adduser postgres ##新增postgres使用者
mkdir /usr/local/pgsql/data ##建立data存放目錄
chown postgres /usr/local/pgsql/data ##給postgres使用者授權
su - postgres ##切換到postgres使用者(資料庫的操作不允許使用root使用者)
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data ##初始化資料庫
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start ##啟動資料庫
/usr/local/pgsql/bin/createdb test ##建立test資料庫
/usr/local/pgsql/bin/psql test ##連線test資料庫

官方提供的命令相對簡單,這裡需要解釋一下,部分操作將會修改官方的命令:

configure檔案是一個可執行的指令碼檔案,它有很多選項,在待安裝的原始碼目錄下使用命令./configure –help可以輸出詳細的選項列表。

其中--prefix選項是配置安裝目錄,如果不配置該選項,安裝後可執行檔案預設放在/usr /local/bin,庫檔案預設放在/usr/local/lib,配置檔案預設放在/usr/local/etc,其它的資原始檔放在/usr /local/share,比較凌亂。

如果配置了--prefix,如:

./configure --prefix=/usr/local/test

安裝後的所有資原始檔都會被放在/usr/local/test目錄中,不會分散到其他目錄。

*這裡我們配置的路徑為:

 ./configure --prefix=/usr/local/postgresql

其他有修改命令將會在編譯安裝章節單獨說明。

3.5.3編譯安裝

現在我們逐項進行執行。

請保證當前所在目錄為:/tools/ postgresql-13.4/

3.5.3.1 configure

執行命令

./configure --prefix=/usr/local/postgresql

正確執行完畢應未報錯:

3.5.3.2 make

命令輸入make後回車,編譯過程耗時較長,請耐心等待編譯結束。

命令:

make

編譯過程未出現Error錯誤字樣,代表編譯正常結束。

3.5.3.3 su

該命令為切換root管理許可權,但當前操作我們採用的是root賬號,所以該命令無需執行,如果您使用的是非root賬號,請先執行su命令。

3.5.3.4 make install

命令:

make install

編譯過程未出現Error錯誤字樣,代表編譯正常結束。

3.5.3.5 adduser postgres

命令:

adduser postgres

建立postgres使用者和使用者組,預設密碼隨機,回車後無任何錯誤提示代表建立成功;

3.5.3.6 mkdir /usr/local/pgsql/data

上面 我們將安裝地址修改為了我們自定義的地址,該條命令需要修改一下:

mkdir /usr/local/postgresql/data

3.5.3.7 chown postgres /usr/local/pgsql/data

同樣該命令修改為:

chown postgres /usr/local/postgresql/data

3.5.3.8 su - postgres

切換到postgres使用者

3.5.3.8 資料庫操作

因為我們修改了安裝位置,所以如下命令都要根據實際安裝位置修改。

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data  ##初始化資料庫

修改為:

/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data  ##初始化資料庫

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start   ##啟動資料庫

修改為:

/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l logfile start   ##啟動資料庫

啟動成功。

/usr/local/pgsql/bin/createdb test  ##建立test資料庫

修改為:

/usr/local/postgresql/bin/createdb test  ##建立test資料庫

/usr/local/pgsql/bin/psql test      ##連線test資料庫

修改為:

/usr/local/postgresql/bin/psql test      ##連線test資料庫

出現“test=#”代表已經成功連線test資料庫,可以進行相關sql操作了。

3.5.4.補充操作
3.5.4.1配置資料庫遠端連線

經過以上操作,資料庫已經成功安裝完成,可以通過ps命令檢視後臺程序確認:

但是無法從外部通過資料庫工具連線,所以我們需要簡單對postgres進行配置。

進入postgrelsql下的data目錄,命令及目錄結構如下:

base目錄是表空間目錄,global目錄是相關全域性變數目錄, pg_hba.conf是訪問控制配置檔案,postgresql.conf是postgresql主配置檔案。我們需要修改的配置檔案為pg_hba.conf和postgresql.conf檔案。

修改pg_hba.conf檔案,命令如下:

vi pg_hba.conf

拉到最下面,找到如下圖所示:

修改紅框內容,修改為:

儲存退出。

修改postgresql.conf檔案,命令如下:

vi postgresql.conf

在展開到內容中找到“# - Connection Settings -”配置項:

修改紅圈圈中內容,將前面的“#”去掉,修改'localhost'為’*‘,其他配置項保持不變,儲存退出。

配置完畢後應在防火牆對5432埠放行,此時使用postgres使用者(密碼隨機,如果自行修改postgres密碼知曉的情況下可以直接執行)無法執行,應先退出postgres賬號,返回到root賬號。執行命令如下:

exit    ##退出postgres賬號

##以下命令在root賬戶下執行
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent ##配置防火牆放行5432埠
sudo firewall-cmd --reload ##防火牆重新載入配置檔案

此時切換回postgres賬號,停止postgressql服務後,重新啟動發現無法啟動,報錯如下:

報錯原因:沒有指定啟動日誌的路徑。啟動命令和停止命令中的logfile需要指定為具體的log日誌的命令。此時我們使用postgres賬戶在postgresql目錄建立log資料夾是沒有許可權的,在3.5.3.7章節,我們只給postgres賬號授權了data目錄。我們做如下操作:

  • 1.切換回root賬號;
  • 2.給postgres賬號授權/usr/local/postgresql目錄的許可權;
  • 3.再切換回postgres賬號進行log資料夾的建立;

在log資料夾下建立server.log檔案:

命令如下:

touch log/server.log

建立成功後修改啟動命令為:

/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/server.log start

執行命令,啟動成功。

此時使用外部的sql工具如navicat測試網路是暢通的,但是我們需要修改一下資料庫賬戶postgres的預設密碼才能進行連線,先使用本地postgres賬號連線預設資料庫來修改資料庫賬戶postgres的密碼:

/usr/local/postgresql/bin/psql      ##使用postgres使用者連線預設postgres資料庫;
ALTER USER postgres WITH PASSWORD 'postgres'; #修改資料庫使用者postgres的密碼為postgres;

此時使用Navicat測試資料庫連線成功。

3.5.5.2配置環境變數

截止到現在如果我們想在安裝postgresql的伺服器使用psql或其他提供的工具連線資料庫,就必須輸入psql的全路徑來呼叫,如:

/usr/local/postgresql/bin/psql

並不是很方便我們使用,此時我們可以將postgresql配置到系統環境變數裡面去,注意:請配置到postgres使用者或者其他自定義操作postgresql的使用者的bash_profile環境變數中,不要配置到root賬號的環境變數中,或者可以配置到etc/profile中,單獨配置到root的環境變數中時不能使用的。

配置請以root使用者配置:

vi /etc/profile

##將如下內容新增到檔案末尾
PATH=/usr/local/postgresql/bin:$PATH
export PATH ##儲存退出後執行重新整理配置
source /etc/profile ##切換到postgres使用者
su - postgres ##此時就可以直接執行psql命令了
psql

後記

因為是在本地寫好,再複製到部落格園,如果發現截圖有確實,聯絡留言,我這邊再補全。至此,本篇教程結束,接下來研究PGSQL+Pgpool-Ⅱ實現的HA方案,整理完畢後再發稿。此文原創 ,轉載請註明出處。謝謝。