安裝PostgreSQL有3種方式,分別是:
- 直接在系統平臺上直接使用系統自帶的包管理工具來安裝,例如 RHEL / CentOS 平臺上的rpm包,yum工具等。
- PostgreSQL的官網上下載安裝包來安裝。
- 官網上下載源代碼包,進行編譯安裝。
因為我們是初學者,因此先介紹前面兩種簡單的安裝方式來安裝,第三種編譯源碼的方式安裝比較適合對PostgreSQL非常了解的人員,需要進行定制化服務的時候使用。
系統自帶包管理工具安裝
我們首先介紹通過平臺自帶的管理工具進行安裝,我們使用的平臺是RHEL 7.x平臺,在這個平臺上的管理工具是yum,平臺自帶的yum源(即各種軟件安裝包都有的一個站點地址)有兩個,一個是平臺自帶的Base源,一個是配置的EPEL源。這兩個源的介紹網上都有,這里就不過多說了。在機器能正常聯網以后。安裝PostgreSQL只需要執行下面的命令即可:
yum install postgresql postgresql-server -y
命令正常執行后如下圖所示:
在RHEL7.4的源上安裝的PostgreSQL的版本是9.2.21,而我們在官網上看到的PostgreSQL穩定版的最新版本則是9.6.6。9.2.21的版本可能就太老了,很多新特性和補丁可能會缺失,因此我們不建議使用這種方式安裝的PostgreSQL。
這種方式安裝的PostgreSQL卸載也非常方便,直接使用平臺自帶的包管理工具rpm就行,命令如下:
rpm -e postgresql postgresql-server postgresql-libs
剛才看到安裝的時候安裝了一個postgresql-libs包,也是9.2.21版本,需要一起卸載掉。
通過官網提供的yum源來安裝
看完第一種方式后,我們開始看第二種安裝方式,先打開官網www.postgresql.org,在界面的右上角位置就能看到最新的各個版本的信息,我們看到,最新的版本已經開始是10.1了。
PostgreSQL的版本號規則是:主版本號.次版本號.更新版本,而對于主版本號的更新,一般都是有一些重大的特性變更才會發生主版本號的變更。因此對于最新的10.1版本,我們暫時不做嘗試,先從最新的穩定版本9.6.6開始學習。
點擊Download鏈接,進入到下載頁面
可以看到有很多的版本可以選擇,前面說到我們的平臺是RHEL,因此我們選擇Red Hat版本鏈接,點擊它,在彈出來的新界面中我們看到,它提供的安裝方式也是yum源安裝方式。它會根據我們選擇的系統發行版的版本提供一個對應版本的yum源。PostgreSQL我們選擇9.6版本,平臺選擇ReHat Enterprise Linux7,架構選擇x86_64。如下所示:
頁面顯示出yum源的安裝地址,以及安裝yum源后怎么安裝對應的postgresql版本,以及初始化PostgreSQL和啟動PostgreSQL。我們按照它給出的指南進行操作:
-
安裝PostgreSQL 9.6的yum源
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
image.png -
看到上面的提示安裝完畢后,我們開始安裝PostgreSQL9.6,命令如下:
yum install postgresql96 postgresql96-server -y
image.png -
安裝完成后,需要初始化PostgreSQL,命令如下:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
image.png -
將PostgreSQL添加到自啟動菜單里去,命令如下:
systemctl enable postgresql-9.6
image.png -
啟動PostgreSQL,命令如下:
systemctl start postgresql-9.6
image.png
執行成功后,不會返回任何信息,PostgreSQL默認監聽的端口是5432,我們來看看是不是正常啟動了這個端口,命令是:
netstat -tlunp | grep 5432
image.png
可以看到,PostgreSQL已經開始正常監聽。說明PostgreSQL啟動成功,至此,第一章的內容到此結束。下一章我們開始介紹怎么連接到PostgreSQL。
需要注意的問題:
- 前面使用系統自帶的yum源安裝postgresql后,一定要記得卸載postgresql、postgresql-server和postgres-libs三個軟件包,否則留下舊版本的postgresql-libs包會導致新版本的PostgreSQL無法啟動。
- 遇到的錯誤可以留言,我會及時回復。