OpenEuler安裝配置PostgreSQL

一、準備條件

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密碼然後回車:看到如下截圖代表登錄成功:

image-20210918123846921

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

3.5.5.3設置PostgreSQL爲開機啓動

PostgreSQL的開機自動啓動腳本位於PostgreSQL源碼目錄下的contrib/start-scripts目錄下:

其中linux文件爲linux環境下的開機自啓動腳本,將其拷貝到“/etc/init.d”目錄下,並改名爲postgresql:

cp linux /etc/init.d/postgresql

切換到/etc/init.d目錄,使用vi打開postgresql文件修改如下內容:

#修改前:
#Installation prefix
prefix=/usr/local/pgsql

#修改後: 
#Intalllation prefix[2021-10-25]
prefix=/usr/local/postgresql

#修改前:
# Data directory
#PGDATA="/usr/local/pgsql/data"

#修改後:
# Data directory[2021-10-25]
PGDATA="/usr/local/postgresql/data"

# Who to run the postmaster as, usually "postgres".  (NOT "root")
# 將啓動用戶修改爲實際用戶,這裏使用postgres,所以不變。
PGUSER=postgres

#修改前:
# Where to keep a log file
PGLOG="$PGDATA/serverlog"

#修改後:
# Where to keep a log flie[2021-10-25]
PGLOG="/usr/local/postgresql/log/server.log"

然後保存退出。

然後修改postgresql文件的執行權限:

chmod a+x postgresql

添加開機啓動:

chkconfig --add postgresql

然後重啓服務器開機驗證即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章