OpenEuler安裝配置PostgreSQL
編寫時間:2021年9月18日
作者:liupp
郵箱:liupp@88.com
序號 | 更新內容 | 更新日期 | 更新人 |
---|---|---|---|
1 | 完成第一至三章內容編輯; | 2021年9月18日 | liupp |
2 | 增加PostgreSQL服務開機自動啟動; | 2021年10月25日 | liupp |
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 root@192.168.12.132
回車后輸入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
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
然后重啟服務器開機驗證即可。
后記
此文原創 ,轉載請注明出處。謝謝。
2021年10月25日增加“PostgreSQL服務開機自動啟動”;