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