OpenEuler安裝配置PostgreSQL
編寫時間:2021年9月18日
作者:liupp
序號 | 更新內容 | 更新日期 | 更新人 |
---|---|---|---|
1 | 完成第一至三章內容編輯; | 2021年9月18日 | liupp |
2 | |||
3 |
一、準備條件
OpenEuler(Hyper-V虛擬機器):
- 版本:20.03 LTS SP2
- 下載地址:https://www.openeuler.org/zh/download/
PostgreSQL:
版本:13.4原始碼版
因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方案,整理完畢後再發稿。此文原創 ,轉載請註明出處。謝謝。