阅读:2234回复:0
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支持(ubuntu下rpm转deb文件后安装,不是acidbase) maplab需要php_dbase支持。在 http://phprpms.sourceforge.net/dbase (http://www.rpmfind.net/linux/RPM/Development_PHP.html)上可下载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 (版本号必须与php严格一致) 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设置,可以很好地显示中文图层。我们期待它的进一步完美。 |
|
|