Mapserver/Ka-map在案頭Linux下的實驗環境搭建筆記

來源:互聯網
上載者:User
〔裝載〕http://www.thegreatwall.com.cn/public/index.php?B_ID=2294
Mapserver/Ka-map在案頭Linux下的實驗環境搭建筆記

1.目標:
  [實驗目標]:搭建基於案頭Linux(如FC2)的Mapserver實驗環境,包括Webserver+Ka-map運行環境、編譯環境和必要的工具集。
  [本文目標]:降低mapserver在Linux上的搭建難度,推廣開源GIS和其他開源產品的使用。
  [本文讀者]:像我一樣的Mapserver和Linux入門者

2.環境描述
  這是我的實驗環境。

  [硬體]:
  HP
Pavilion dv4000 筆記本
  CPU Celeron M 1.5G
  Mem 512M

  [案頭Linux選擇]:
  Co-Create Linux SP1 1206RC
  由於FC2在去年中已經停止升級維護,所以採用了國內發行的基於FC2的案頭Linux版本Co-Create Linux SP1 1206RC,這個版本由http://www.opendesktop.net/
社區提供支援,是一款xp操作風格,適宜初學者/辦公使用者使用的案頭作業系統。
  Co-Create Linux要求機器的CPU不低於PIII800,記憶體大於128,磁碟空間大於4G。

3.安裝案頭Linux和開發環境:

1、安裝Co-Create Linux2005 SP1 1206RC版,該版提供了基本案頭環境。
:ftp://ftp.opendesktop.net/co-create/desktop/2005sp1/Baby2-i386-disc-SP1-20051206.iso 建議下載後刻盤再安裝。安裝時裸機最好。如果是安裝有windows的機器,要求PC只有一個硬碟,然後在硬碟的末尾開出一個空閑分區來進行安裝。

2、安裝Co-Create Linux2005 SP1 1206RC版開發包
:ftp://ftp.opendesktop.net/co-create/desktop/2005sp1/cocreate-devel-packages-12-06.iso
可以刻盤安裝,也可以下載到硬碟安裝。
硬碟安裝的方法:在Linux終端下(案頭空白處右鍵點擊滑鼠,菜單第一項),在開發包的目前的目錄下運行命令:
mkdir iso
mount cocreate-devel-packages-12-06.iso iso -oloop
cd iso
sh ./Install.sh --all

4.安裝Mapserver運行環境
Mapserver的運行環境包括webserver和支援庫
經測試,在CoCreateLinuxSP1+開發包環境下,Mapserver的依賴性關係如:

圖中箭頭指向表示依賴關係,如Postgresql-devel依賴於Postgresql-lib。
端點連線表示所需的庫檔案存在於某個包中,如libodbc.so.1在unixODBC中有。
此外Ka-map還需要PHP和PHP-GD支援,它們的依賴關係如下

Php-devel在後面的編譯環境中要用到,此處一塊兒列出。

下面安裝相關的軟體包:
1、在http://mappinghacks.com/rpm/fedora/2/ 上,下載:
gdal-1.2.5-mh1.i686.rpm
geos-2.1.1-mh1.i686.rpm
ogdi-3.1.4-mh1.i686.rpm
postgresql-devel-7.4.6-mh1.i686.rpm
postgresql-libs-7.4.6-mh1.i686.rpm
proj-4.4.9-mh1.i686.rpm

2、在http://rpm.phone.net/ 上搜尋基於FC2的其他包,包括unixODBC,httpd,php,php-gd
注意:沒有找到php-gd合適的包,下載其他版本的包,通過直接提取檔案拷貝到指定位置進行測試,可用。

3、安裝
在包所在的目錄下(通過瀏覽器下載的檔案位於/root/Desktop/My_Documents/My_Downloads)運行命令:
rpm -ivh unixODBC-2.2.8-5.i386.rpm postgresql-libs-7.4.6-mh1.i686.rpm postgresql-devel-7.4.6-mh1.i686.rpm geos-2.1.1-mh1.i686.rpm gdal-1.2.5-mh1.i686.rpm ogdi-3.1.4-mh1.i686.rpm proj-4.4.9-mh1.i686.rpm

rpm -ivh httpd-2.0.51-2.9.i386.rpm
php-4.3.4-11.i386.rpm php-pear-4.3.4-11.i386.rpm

cp gd.ini /etc/php.d/.
cp gd.so /usr/lib/php4/.

rpm -ivh
mapserver-4.4.1-mh1.i686.rpm
mapserver-php-4.4.1-mh1.i686.rpm
安裝完畢

4、啟動httpd
service httpd start (或者/etc/init.d/httpd start)
訪問http://localhost/cgi-bin/mapserv顯示No query information to decode. QUERY_STRING is set, but empty.表明mapserver運行環境安裝成功。
注意這個時候的ka-map是運行不了的,原因是php_mapscript.so不能被動態載入。我後來用同一版本(4.4.1)的源碼包在本地編譯出來的php_mapscript.so使用起來則沒有問題,猜測是因為php_mapscipt在由mapserver編譯產生的過程中,需要php的include檔案,所以對php的版本可能要求嚴格一致。

5.安裝Mapserver編譯環境

  上文說到,如果本地的php版本和mapserver編譯時間所用的php版本不一致,php_mapscipt.so檔案不能被動態載入,導致ka-map不能被正常使用。再考慮到一些可能的實驗,如編譯最新的mapserver4.8等,搭建一個mapserv的編譯環境是很必要的。

  經過測試,Mapserver的編譯環境依賴關係如下:

  其中php-devel需要的依賴關係已經在前面表述過了,剩下幾個devel所依賴的包前面已經安裝完畢,不再細述。

1、在http://mappinghacks.com/rpm/fedora/2/ 上,下載:
gdal-devel-1.2.5-mh1.i686.rpm
geos-devel-2.1.1-mh1.i686.rpm
proj-devel-4.4.9-mh1.i686.rpm

2、在http://rpm.phone.net 上搜尋For FC2的ming,ming-devel, pdflib,pdflib-devel,php-devel

3、安裝
命令如下:
rpm -ivh gdal-devel-1.2.5-mh1.i686.rpm geos-devel-2.1.1-mh1.i686.rpm ming-0.2a-2.1.fc2.rf.i386.rpm ming-devel-0.2a-2.1.fc2.rf.i386.rpm pdflib-6.0.1-1.1.fc2.rf.i386.rpm pdflib-devel-6.0.1-1.1.fc2.rf.i386.rpm php-devel-4.3.4-11.i386.rpm proj-devel-4.4.9-mh1.i686.rpm

好,現在mapserver的配置環境告捷!

編譯參考:
1、編譯src.rpm,以mapserver-4.6.0beta3-mh1.src.rpm為例。
  mappinghacks.com上FC2的目錄下只提供了mapserver4.2.1的rpm包,看來已經停止繼續提供新的包的支援了,這樣如果需要mapserver-4.6的rpm包的話,只能自己來嘗試製作。
  由於FC3和FC2結構差別不大,所以我們嘗試由mappinghacks.com提供的FC3的mapserver-4.6.0beta3-mh1.src.rpm在CoCreateLinux上來進行rebuild嘗試。
  命令如下:
rpm -ivh mapserver-4.6.0beta3-mh1.src.rpm
cd /usr/src/redhat/SPECS/
rpmbuild -ba --target=i686 ./mapserver.spec
  結果:編譯成功,產生的mapserver和php_mapscript.so均能正常工作。

2、編譯源碼包
  在http://mapserver.gis.umn.edu/ 上下載mapserver-4.8.1.tar.gz以及4.6.2,4.4.1的源碼包,均編譯成功。
  命令如下;
  展開mapserver-4.8.1.tar.gz
tar xvzf mapserver-4.8.1.tar.gz
cd mapserver-4.8.1
./configure --with-proj --with-php=/usr/include/php
make

  configure的參數有很多,我這裡列舉了最基本的最必須的兩個,前者關於投影,後者產生php_mapscript.so,其他的就根據自己各取所需了,如--with-pdf --with-ming等。

6.Map檔案編輯工具

能夠支援編輯或產生Map檔案的工具有Maplab和QGIS等。

一. Maplab的安裝
  Maplab是基於web的Map檔案編輯工具和指令碼調試工具,包括MapEdit,MapBrowser和GMapFactory三個組件。

A.安裝要求:
  Maplab要求mapserver和php-mapscript的編譯參數是 --with-gd --enable-force-freetype1 --with-php --with-proj –with-wmsclients –with-gdal
  在本文的環境裡就是: --with-gd --enable-force-freetype1 --with-php=/usr/include/php/ --with-proj –with-wmsclients –with-gdal

B.安裝過程:

1)php_dbase支援
  maplab需要php_dbase支援。在http://phprpms.sourceforge.net/dbase 上可下載php_dbase支援庫。
  由於FC2上php版本比較老(4.3.4),而php_dbase上提供的包已經對應php版本到4.3.10。重編php比較麻煩,所以還是去找找以前的版本。
  我下的是EL3上的php-dbase-4.3.2-26.ent.1.i386.rpm,經過實驗沒有問題。
rpm -ivh php-dbase-4.3.2-26.ent.1.i386.rpm

2)http簡要配置
maplab中很多php指令碼的檔案尾碼是phtml,需要在httpd的設定檔中指定一下。
在/etc/httpd/conf下編輯httpd.conf檔案,方法是:
cd /etc/httpd/conf
cp httpd.conf httpd.conf.default
vi httpd.conf或者gedit httpd.conf
加入AddType application/x-httpd-php .phtml 一行;
service httpd restart

3)安裝
下載最新的maplab-2.2.1.tar.gz
tar xvzf maplab-2.2.1.tar.gz
cp maplab-2.2.1 /var/www/html/. -rf
cd /var/www/html/
mv maplab-2.2.1/ maplab
cd maplab
chmod 777 config data ptoject
cd config/
chmod 666 *
cd ..

在瀏覽器裡訪問http://localhost/maplab/htdocs/
此時能訪問到maplab的首頁。

點擊左上排第5個表徵圖按鈕(提示資訊是“Open XML configuration tool”),開啟每個配置頁查看一下,然後點擊“apply”確定。
Maplab安裝結束。

二、 QGIS的安裝
  QGIS是一款輕量級的GIS資料查看編輯軟體,目前還在發展中,由於它支援map檔案輸出,所以我們先介紹一下它。

A.rpm包安裝:
  在http://mappinghacks.com/rpm/fedora/2/ 提供了qgis-0.5.0-0.i386.rpm
這個包在前述的環境下(qgis0.5依賴GDAL和Postgresql-devel),可以直接安裝。
rpm -ivh qgis-0.5.0-0.i386.rpm
  安裝結束後在命令列運行qgis,即可啟動圖形介面的QGIS。
  為方便使用,我們在CoCreateLinux案頭上建立一個捷徑。在案頭空白處點擊滑鼠右鍵,快顯功能表中選擇第二項“建立啟動器”,在彈出的視窗的名稱和命令中分別填入QGIS和qgis,並選擇一個表徵圖(qgis的預設表徵圖位於/usr/share/qgis/images/icons/qgis-icon2.png),點擊確定即可。

B.編譯環境
1、編譯0.6
  mappinghacks提供的FC2的qgis版本比較老,只支援了shp,尚不支援mapinfo的格式,而6.0以後則開始提供支援。所以我們試圖構建qgis的編譯環境以擷取新的版本進行安裝。
  保守的做法,我們試著從該網上提供的FC3的qgis-0.6.0-mh2.src.rpm著手。
  先安裝,rpm -ivh qgis-0.6.0-mh2.src.rpm
  這裡我們可以再簡單深入一步學習:編譯rpm的條件有時會在這個源碼rpm包中提供的一個SPEC檔案有描述。我們可以通過查看該檔案來瞭解qgis0.6的依賴環境。
cd /usr/src/redhat/SPEC
cat qgis-06-grass.spec
  在終端裡按住shift+pageup可以往前察看顯示的內容,你可以看到這樣的兩行:
Requires: gdal postgresql-postgis qt
BuildRequires: gdal-devel postgresql-devel qt-devel
  這個就是告訴我們rpm包安轉和源碼編譯依賴的環境
  這裡的qt編譯支援環境在開發包裡已經提供,但少了這個包,需要下載安裝一下。
http://download.fedora.redhat.com/p....3.2-2.i386.rpm
  剩下的我們還有 postgresql-postgis,這個需要在安裝時使用。
  關於 postgresql-postgis的安裝,我們放到後面資料庫一節討論。目前我們已經具備編譯條件。
rpmbuild -ba --target=i686 ./qgis-06-grass.spec
  編譯結束後產生的包位於/usr/src/redhat/RPMS/i686/下。
  因為是C++編寫的程式,Qgis的編譯時間會長一些,約40分鐘。

2、編譯0.7.4
  我們進一步實驗最新的版本0.7.4,該版本增加了對sqlite和proj的一來要求

1)下載sqlite和sqlite-devel,地址是:
ftp://ftp.pbone.net/mirror/atrpms.n...fc2.at.i386.rpm
ftp://ftp.pbone.net/mirror/atrpms.n...fc2.at.i386.rpm

2)下載最新的源碼包
目前最新是0.7.4的版本
tar xvzf qgis-0.7.4.tar.gz
cd qgis-0.7.4

3)編譯與安裝
./configure
make
make install

4)製作rpm包
  可以編譯製作它的RPM包,這樣通過安裝rpm包來安裝,可以便於以後的程式管理,如卸載升級等。可以基於0.6的SPEC檔案進行修改後供0.7.4製作rpm包,這個過程比較複雜,如果你對Linux很熟悉,可以嘗試一下,這裡不作詳細描述。

  0.7.4版本的qgis支援本地的locale設定,可以很好地顯示中文圖層。我們期待它的進一步完美。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.