http://cuojuan.com/
http://cuojuan.com/review/26
使用的Linux發(fā)行版是ubuntu server 6.06,ubuntu 自帶版本最高只有8.1,為了嘗鮮,同時(shí)8.2.0已經(jīng)對(duì)基于windows平臺(tái)的兼容性進(jìn)行了改進(jìn),便于平臺(tái)的轉(zhuǎn)換。同時(shí)源碼安裝可以自己制定一些參數(shù) 和設(shè)置,ubuntu雖然有很好的易用性和兼容性,并且部分特性也較新,但是同window有些相像,減少也封閉了很多細(xì)節(jié)問(wèn)題,讓開(kāi)發(fā)人員沒(méi)有機(jī)會(huì)也不 用嘗試去理解一些程序的安裝過(guò)程和參數(shù),對(duì)于程序開(kāi)發(fā)來(lái)說(shuō),并不一定是件好事。
一 安裝Postgresql8.2.0
1. 下載源碼。
到postgresq.org下載最新的源碼。
2 解壓。
tar -vxf postgresql*.tar.gz
3 配置,進(jìn)入解壓目錄后可以用./configure –help來(lái)查看可用的參數(shù)。我使用的是:
# ./configure –prefix=/home/shaken/postgresql –without-readline –without-zlib
前一個(gè)參數(shù)是把循照慣例把自己的軟件安裝到/opt目錄下,后面兩個(gè)參數(shù)是因?yàn)槲业南到y(tǒng)里沒(méi)有安裝readline和zlib,其實(shí)安裝一下就可以了。
在ubuntu中這樣可以去掉后面的兩個(gè)–without參數(shù):
# apt-get install libreadline5-dev zlib1g-dev
解決在ubuntu安裝postgresql時(shí),configure出現(xiàn)的問(wèn)題。
4 編譯后并安裝:
# make
# make install
5 增加Postgresql數(shù)據(jù)庫(kù)的最高用戶(hù)postgres并設(shè)置密碼:
# adduser postgres
# mkdir /home/shaken/postgresql/data
# chown postgres /home/shaken/postgresql/data
最好再這樣:
# chown -R postgres /home/shaken/postgresql
6 以用戶(hù)postgres登陸:
# su – postgres
7 初始化數(shù)據(jù)庫(kù):
$ /home/shaken/postgresql/bin/initdb -D /home/shaken/postgresql/data
8 運(yùn)行數(shù)據(jù)庫(kù)服務(wù)器:
$ /home/shaken/postgresql/bin/postmaster -D /home/shaken/postgresql/data>logfile 2>&1 &
9 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù):
$ /home/shaken/postgresql/bin/createdb test
10 在本機(jī)上運(yùn)行客戶(hù)端進(jìn)行管理:
$ /home/shaken/postgresql/bin/psql test
這就要求你對(duì)基礎(chǔ)的sql語(yǔ)法要熟悉了。
到這里Postgresql就算安裝完成了。但是為了能遠(yuǎn)程使用該數(shù)據(jù)庫(kù)—比如說(shuō)我要在網(wǎng)絡(luò)上另外一臺(tái)Windows電腦上使用pgAdmin來(lái)管 理 使用該P(yáng)ostgresql服務(wù)器—則還需要進(jìn)行一些修改,這些修改主要包括兩方面的修改,一是修改Postgresql的兩個(gè)配置文件,二是修改數(shù) 據(jù)庫(kù)的一些用戶(hù)權(quán)限:
11 修改Postgresql的配置文件Postgresql.conf,該文件在數(shù)據(jù)目錄/home/shaken/postgresql/data下,將其中的一句:
listen_address=’localhost’
前面的注釋去掉,并把’localhost’該為’*’。
12修改Postgresql的配置文件pg_hba.conf,該文件在數(shù)據(jù)目錄/home/shaken/postgresql/data下,在文件后面加一句:
host all all 192.168.0.0/24 password
這句的意思是:同網(wǎng)絡(luò)中192.168.0.*的機(jī)器可以以密碼的形式使用所有的數(shù)據(jù)庫(kù)。更具體的參數(shù)意義直接看該配置文件中的注釋就可以了。
這里一定要配置正確,否則無(wú)法在遠(yuǎn)程連接postgresql數(shù)據(jù)庫(kù)。
13 重新啟動(dòng)postgresql服務(wù)器:
$ /home/shaken/postgresql/bin/pg_ctl stop -D /home/shaken/postgresql/data
停止原來(lái)的服務(wù)器
$ $ /home/shaken/postgresql/bin/postmaster -i -D /home/shaken/postgresql/data >logfile 2>&1 &
再次啟動(dòng),加一個(gè)-I參數(shù)
14 一些數(shù)據(jù)庫(kù)用戶(hù)權(quán)限的簡(jiǎn)單配置,以下是在psql中使用
# create userwen1 password ‘123456’;
創(chuàng)建一個(gè)用戶(hù)并設(shè)置密碼
# createdatabase data1 owner wen1;
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
# create tablewen11(name varcha(10))
創(chuàng)建一個(gè)數(shù)據(jù)表
# alter table wen11 owner to wen1;
修改數(shù)據(jù)表的屬主。
現(xiàn)在可以在局域網(wǎng)內(nèi)的其他電腦使用其他postgresql客戶(hù)端工具,以用戶(hù)名wen1打開(kāi)data1數(shù)據(jù)庫(kù)了。
還需要改進(jìn)的一些問(wèn)題:
1 中文支持的問(wèn)題:使用encoding=’UTF-8’創(chuàng)建數(shù)據(jù)庫(kù)好不好?
2 系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)postgresql的問(wèn)題:完全可以參考Debian的相應(yīng)啟動(dòng)腳本。
二 phppgadmin的安裝配置(可選的過(guò)程)
為了管理配置我的數(shù)據(jù)庫(kù)服務(wù)器,對(duì)于我這樣的postgresql生手,需要一個(gè)方便的管理程序。這樣的管理工具很多,考慮自己以前使用mysql 有一個(gè) 便利的phpmyadmin,我選擇了phppgadmin。 phpPgAdmin是一個(gè)充分地功能基于互聯(lián)網(wǎng)的postgresql管理實(shí)用程序。它處理所有基本的功能并且某個(gè)先進(jìn)的功能譬如觸發(fā)器, 視圖等,是一個(gè)基于B/S模式的管理軟件,必須安裝在服務(wù)器端。
具體的安裝過(guò)程為:
1 下載源碼,現(xiàn)在的最新版本為4.0.1
# cd
# wget http://……./phpPgAdmin-4.0.1.tar.gz
2 解壓:
# tar zxvf phpPgAdmin-4.0.1.tar.gz
3 檢查系統(tǒng)是否已經(jīng)安裝好apache+php以及php對(duì)postgresql的支持,如果沒(méi)有,以下為安裝:
# apt-get install apache php4 php4-pgsql
注意修改apache的配置文件以使apache支持php。
4 使phpPgAdmin在客戶(hù)端可用,我一般是在apapche目錄下建立符號(hào)連接:
# ln -s /root/phpPgAdmin-4.0.1 /var/www/pgadmin
5 修改phpPgAdmin的配置文件 config/config.inc.php,其中必須要修改的參數(shù)有:
$conf['servers'][0]['host']=’localhost’;
標(biāo)明數(shù)據(jù)庫(kù)服務(wù)器在本機(jī)
$conf ['extra_security'] = false;
允許使用postgres帳號(hào)登陸。
6 在客戶(hù)端使用瀏覽器,輸入地址:
http://……/pgadmin
就可以進(jìn)行postgresql數(shù)據(jù)庫(kù)的管理了。
三 安裝postgis
1 最好先安裝proj4和OGR,我偷懶沒(méi)有安裝,應(yīng)該只是性能上打折扣吧,并不影響安裝使用。
Debian下可以這樣:安裝postgis的時(shí)候,先:
#apt-get install proj libgeos libgeos-dev
2 下載源碼。
3 解壓進(jìn)入目錄。
4 配置:
# ./configure –prefix=/opt/postgis –with-pgsql=/home/shaken/postgresql/bin/pg_config
意思很明顯
5 編譯、安裝:
# make
# make install
6 之后的一些工作:
$ /home/shaken/postgresql/bin/createdb data1
$ /home/shaken/postgresql/bin/createlang plpgsql data1
$ /home/shaken/postgresql/bin/psql-d data1 -f lwpostgis.sql
$ /home/shaken/postgresql/bin/psql-d data1 -f spatial_ref_sys.sql
注意找到并進(jìn)入包含后面那兩個(gè)sql文件的目錄再進(jìn)去執(zhí)行。
下面可以使用postgis了,先試試Postgis提供那兩個(gè)轉(zhuǎn)換shape文件和postgis數(shù)據(jù)的小程序吧。
四 PostGIS的初步使用
網(wǎng)絡(luò)上關(guān)于PostGIS的使用的文章不多,而且說(shuō)得不夠詳細(xì),今天經(jīng)過(guò)一番摸索,得到一些基本應(yīng)用的經(jīng)驗(yàn),希望能減少一些大家入門(mén)的周折。
以下假設(shè)我要把一個(gè)test.shp文件(實(shí)際上完整的應(yīng)包含三個(gè)文件)的數(shù)據(jù)導(dǎo)入到Postgresql數(shù)據(jù)庫(kù)data1中的test數(shù)據(jù)表,為 了安全 起見(jiàn),數(shù)據(jù)庫(kù)Data1及相關(guān)的數(shù)據(jù)表的屬主都設(shè)置為wen1,然后在GIS客戶(hù)端如QGIS uDig等使用這個(gè)PostGIS數(shù)據(jù)。詳細(xì)的過(guò)程為;
1 假設(shè)PostGreSQL數(shù)據(jù)庫(kù)服務(wù)器和PostGIS都安裝好。(見(jiàn)另文”源碼安裝Postgresql8.1.3+PostGIS1.1.2″)
2 以數(shù)據(jù)庫(kù)的超級(jí)用戶(hù)postgres進(jìn)入psql:
# /home/shaken/postgresql/bin/psql (注意路徑)
以下的操作都是在psql控制臺(tái)。
3 基本設(shè)置:
# create user wen1 password ‘123456’; 創(chuàng)建一個(gè)用戶(hù)并設(shè)置密碼
# create database data1 owner wen1; 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
# alter table spatial_ref_sys owner to wen1;
# alter table geometry_columns owner to wen1 ; 這兩句修改兩個(gè)postgis相關(guān)的表的屬主為wen1,很重要,一般文章中似乎沒(méi)提到這兩點(diǎn)。
4 數(shù)據(jù)轉(zhuǎn)換,以下工作退出psql,在shell界面進(jìn)行。
先把三個(gè)test.shp文件復(fù)制到/opt/postgis/bin目錄下并轉(zhuǎn)到該目錄下,注意路徑,注意目錄和文件的權(quán)限—也許退出postgres用戶(hù)到root用戶(hù)簡(jiǎn)單一些。
# /opt/postgis/bin/shp2pgsql test test data1 > test.sql
# /home/shaken/postgresql/bin/psql -d data1 -f test.sql
注意參數(shù)都要寫(xiě)對(duì),不明白的話(huà)一定要用–help參數(shù)查看。
5 在客戶(hù)機(jī)器上打開(kāi)QGIS,依次選擇”圖層”–>”添加PostGIS圖層”–>”新建”,然后設(shè)置好正確的服務(wù)器IP,數(shù)據(jù)庫(kù)名data1,用戶(hù)wen1及密碼,再點(diǎn)擊”連接”,然后下方會(huì)出現(xiàn)test圖層的名字,選擇就可以了。
uDig的使用也大同小異。
一點(diǎn)體會(huì):
1 要先弄懂PostgreSQL的使用,尤其是各種權(quán)限的概念和關(guān)系,這是一般從Windows下轉(zhuǎn)移來(lái)的人很缺乏的。
2 最好選擇一個(gè)好的PostgreSQL客戶(hù)端工具來(lái)幫助調(diào)試,推薦使用PgAdmin。