每天晚上疲勞的睡在床上時,才感覺真真切切地過了一天。人生最重要的不僅是努力,還有方向。壓力不是有人比你努力,而是比你牛叉幾倍的人依然比你努力。即使看不到未來,即使看不到希望,也依然相信,自己錯不了,自己選的人生錯不了。第二天叫醒我的不是鬧鍾,其實,還是夢想!!
2013-07-14 20:08:58
1. 准備條件
1) 裝了GCC的ubuntu操作系統 (我安裝在了虛擬機上)
2) 下載好的postgreSQL 9.19源碼或二進制包(二進制包也可以在ubuntu上直接獲取)
2. postgreSQL安裝
postgreSQL安裝分為源碼安裝和二進制安裝,各有各的好處,源碼安裝可以自己制定一些參數和設置(詳細參考官方文檔);二進制安裝可以不需要怎么配置就可以直接使用了,簡單、方便。但做正規項目部署的話,還是建議使用源碼安裝,可以針對項目進行靈活的配置。
另問題:我安裝上ubuntu后,系統當中並沒有GCC,我是直接上網apt-get install的;看安裝包(ubuntu-12.04.2-server-amd64)中有GCC的目錄,但安裝時老是提示缺少依賴,找依賴要找一大堆,麻煩,有知道怎么使用系統安裝包裝GCC的同學,請共享下經驗唄。
2.1 二進制包安裝
1) 在線獲取postgreSQL9.1,命令如下:apt-get install postgresql-9.1;不要選錯了。之后選擇“Y”即可自動安裝。
安裝完成后postgreSQL已經自動啟動,如下:
2) 安裝完成后只需關注剛初始化的數據庫管理文件和數據文件的存放位置。
數據文件:/var/lib/postgresql/9.1/main/
數據庫配置文件:/etc/postgresql/9.1/main
管理文件和lib庫文件:/usr/lib/postgresql/9.1/,里面包括bin和lib目錄
3) 安裝完成后,postgreSQL會創建一個針對數據庫操作的postgres操作系統用戶,通過root的su passwd postgres 可以更改系統postgres用戶的密碼。我們切換到postgres用戶下面,並執行psql命令(可以直接使用psql命令,是因為二進制包的配置在安裝時已經將$PATH環境變量寫好了),可以看到已經進入到數據中。
4) 此時,postgresql數據庫已經可以在本機訪問了,但要通過客戶端(比如windows上裝的pgAdmin3,或pgpool-II等第三方組件等),還需要配置兩個文件:pg_hba.conf(連接數據庫的身份驗證方式)、postgresql.conf(數據的配置文件),這些文件都在 數據庫配置文件:/etc/postgresql/9.1/main 目錄中。其中的配置在下面會講到。
2.2 源碼安裝
1) 將下載好的源碼包(postgresql-9.1.9.tar.gz)上傳並進入到/usr/local/src目錄下面。如何做linux和windows之間的共享,網上有一大批文章可以參閱,在這里不再做講解。我使用的是簡單的samba共享。
2) 解壓縮源碼包:tar –zvxf postgresql-9.1.9.tar.gz
3) 進入剛解壓縮出的postgresql-9.1.9目錄:cd postgresql-9.1.9/ 可以看到如下文件:
4) 此時,我們需要編譯postgresql,--prefix 參數用於指定安裝目錄,我們先在/usr/local/下創建postgresql目錄,命令如下:mkdir /usr/local/postgresql(圖就不貼了);其中還有很多參數,請大家參考官方文檔。
在安裝過程中會出現缺少兩個組件的依賴,readline和zlib;readline作用是用psql進入數據庫后對操作的記憶,即退出psql后再進入,使用“↑”或“↓”時顯示之前打出的命令,跟dos操作差不多。Zlib的作用是后期對日志的壓縮。當然,在編譯的時候也可以使用--without-readline --without-zlib來忽略這兩個錯誤,但我們現在還是安裝上吧。從網上直接獲取,apt-get install libreadline6-dev zlib1g-dev
編譯postgresql:./configure --prefix=/usr/local/postgresql
make world或make(world指全部編譯,也可以不用加)
make install-world或make install
5) 編譯安裝完成后在/usr/local/postgresql目錄下會出現postgresql的一些管理文件、頭文件、庫文件等目錄。如下圖:
此時,只是安裝了postgresql數據庫的軟件而已,還沒有初始化數據庫。先在/usr/local/postgresql目錄下面創建一個data目錄(當然也可以存放於其他地方),用於存放初始化的數據庫的文件。
現在我們需要一個操作系統級別的管理數據庫的組(定義為postgres)和用戶(定義為postgres)並修改postgres密碼為123,操作命令:
groupadd postgres
useradd –g postgres postgres
passwd postgres
對新創建postgres用戶賦予data目錄的自由操作權限。命令:chown –R postgres /usr/local/postgresql/data
一切准備就緒,我們切換到postgres用戶,並進入到bin目錄,使用initdb命令初始化第一個數據庫。Initdb中我們需要--encoding參數為utf8,設置數據庫編碼為utf8,我們將數據庫初始化到/usr/local/postgresql/data目錄中。其完整命令為:initdb --encoding=utf8 –D /usr/local/postgresql/data
至此數據創建完畢,可以看到啟動數據庫命令的提示,有兩種方法啟動:(1)./postgres –D ../data (2)./pg_ctl –D ../data –l logfile start,相對路勁為/usr/local/postgresql/bin;
如果想在同一台機器中部署兩個數據庫實例,則可以再使用initdb命令將數據庫初始化到另一個目錄中,此目錄要更改為postgres用戶擁有權限,初始化完成后更改端口即可。
2.3 postgreSQL安裝完成后的配置
2.3.1外部遠程訪問postgreSQL
postgreSQL數據庫初始化安裝完畢后,默認只能在本機訪問,而其他電腦無法訪問本機的postgreSQL。如果需要外部訪問postgreSQL,則需要修改幾個文件,postgresql.conf、pg_hba.conf;
找到對應的數據目錄,如果按本文安裝,使用二進制包安裝的,數據庫配置目錄為:/etc/postgresql/9.1/main;如果是按源碼安裝的,數據庫目錄為:/usr/local/postgresql/data;打開后目錄中可以看到有postgresql.conf、pg_hba.conf文件。
1) 修改postgresql.conf文件:
此文件為數據庫的配置文件,包括postgreSQL的連接數量配置、共享內存的配置、日志配置、數據庫復制配置等管理用的配置文件。以后配置集群等需要修改此文件。
找到#- Connection Settings - 節下的
#listen_addresses=’localhost’ 改為listen_addresses=’*’ (’#’號注釋不要,localhost改為’*’,接受為任何連接)
#port=5432改為port=5432(’#’號注釋不要)
2) 修改pg_hba.conf文件:
此文件為數據庫的連接配置文件,用來限制或允許什么樣的地址以什么樣的訪問方式可以訪問postgreSQL。詳細的內容不再多講,此文件頭部有注釋,相信大家都可以看的懂。
在此文件中增加如下行:
host all all 0.0.0.0/0 md5
解釋下含義:
文件格式為:host DATABASE USER ADDRESS METHOD [OPTIONS]
Host:主機訪問類型,local為Unix-domain socket連接訪問方式,host為TCP/IP socket或SSL-encrypted TCP/IP socket連接訪問方式。
第一個all:要訪問的數據庫,all則為全部。
第二個all:以那個用戶訪問數據庫,all則為全部
0.0.0.0/0:允許所有IP訪問
md5:以md5的連接訪問postgreSQL,如果是trust,則連接postgreSQL不需要密碼。但為安全起見,我們使用md5。
至此,兩個文件都已經更改完畢,重新啟動postgreSQL即可。切換postgres用戶,輸入重啟數據庫命令:./pg_ctl –D ../data restart
但此時使用pgadmin-III連接postgreSQL時會出現以下錯誤FATAL: password authentication failed for user "postgres",
原因為初始化數據庫后,系統會自動添加一個無密碼的postgres用戶,而且使用本機訪問數據庫時是trust方式的(詳見pg_hba.conf文件),因此在本機訪問數據庫可以不需要密碼,但非本機的連接則需要密碼,所以我們需要在數據庫中增加postgres用戶的密碼。