Wechat: yu389741| Email: gisdqy@163.com

Shop:https://www.giserdqy.com/shop

Centos6.5环境下编译安装Mapserver7.0.1


最近要部署新的生产,开发,测试环境,所以需要重新安装MapServer环境,现把过程及存在的问题记录下来,以供自己以后参阅,同时也为同行们遇到相似的问题给个解决思路。这是我第一次在linux环境下编译安装Mapserver,有前同事留下一个已经安装好的环境及一些代码作为参考,也给我提供了很大的帮助。

废话少说,上干货。

先将安装过程中遇到的主要问题做个说明:

  • 安装依赖项后,进行其他编译安装,还会报找不到的情况,这时候,重新安装依赖项一般都能解决
  • 编译安装Mapserver出现问题,执行cmake命令报错提示的问题,大部分是依赖项重新安装可以解决,Python devel安装可以解决Python参数未设置的问题,还有其他参数构造不全导致的,改camke后面的参数项,一个个都可以解决
  • 编译安装Mapserver后,一定要将MapServer的库文件拷贝到lib64目录下,并且将mapserv可执行文件拷贝到apache的cgi-bin目录下
  • mapserv文件需要赋予other用户可执行的权限,否则,还是会报没有权限的错误,地图数据目录,cache配置目录都要有可读可写的权限
  • 安装好mapcahce后,需要将相应的库文件拷贝到lib64目录下
  • 停掉Selinux防火墙限制,否则修改apache端口号都无法实施,还有地图数据如果放在非html目录时,无法访问
  • 修改mapcache.html和httpd.conf文件后要重启httpd服务才能生效
  • 每一步设置后,最好先验证是否能够正常运行,否则页面出现问题的时候不好排错。比如编译生成好mapserv的时候,先在本地运行./mapserv看命令是否能够运行;比如启动httpd服务的时候,现在浏览器里输入http://ip:port/是否正常显示apache页面,来验证apache是否正常运行;比如将mapserv拷贝到cgi-bin目录加好权限后打开http://ip:port/cgi-bin/mapserv验证是否正常访问不报错;比如mapcache.html配置好,重启httpd后打开http://ip:port/mapcache/wms/验证是否正常访问不报错;比如在虚拟机环境下配好hosts文件后,并打开相应端口号后,打开新ip+端口号+页面地址是否正常访问


1.安装依赖,大部分都是用的yum安装

yum install libpng libpng-devel freetypegd gd-devel zlib giflib-devel gcc cmake


提示的时候,记得输入Y,本人菜鸟一枚,这最基本的输入都不会。

继续是依赖

yum install aggagg-devel readline-devel zlib-devel libxm2-devel gcc-c++ curl-devel geos-devellibtiff libgeotiff libjpeg geos libxml2 libxml2-devel cairo cairo-devel fcgifcgi-devel


继续

yum install gdalgdal-devel

2.下面继续是依赖

编译安装proj4.9.1,默认安装到/usr/local/lib/pkgconfig

<span style="font-family:Microsoft YaHei;font-size:18px;">#install proj.4
wgethttp://download.osgeo.org/proj/proj-4.9.1.tar.gz
tar xvfproj-4.9.1.tar.gz
cd proj-4.9.1
./configure
make
make install</span>

下载编译安装,默认安装在usr/local/bin

wget ​http://download.osgeo.org/gdal/2.0.2/gdal-2.0.2.tar.gz
tar xvf gdal-2.0.2.tar.gz
cd gdal-2.0.2
./configure
make
make install</span>

安装Postgres PostGIS

#installpostgresql
yum installhttp://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
yum installpostgresql94-server postgresql94-contrib
servicepostgresql-9.4 initdb
chkconfigpostgresql-9.4 on</span>

<span style="font-family:Microsoft YaHei;font-size:18px;">yum installpostgis2_94 postgis2_94-devel


没有成功,出现如下错误:

–> FinishedDependency Resolution

Error: Package:postgis2_94-2.1.8-1.rhel6.x86_64 (pgdg94)

           Requires: hdf5

Error: Package:gdal-libs-1.9.2-7.rhel6.x86_64 (pgdg94)

           Requires: libgta.so.0()(64bit)

Error: Package:gdal-libs-1.9.2-7.rhel6.x86_64 (pgdg94)

           Requires: libhdf5.so.6()(64bit)

Error: Package:gdal-libs-1.9.2-7.rhel6.x86_64 (pgdg94)

           Requires: libcfitsio.so.0()(64bit)

……

 You could try using –skip-broken to workaround the problem

 You could try running: rpm -Va –nofiles–nodigest

则首先执行:

请先安装以下rpm

# CentOS 6, RHEL 6 64-bit:

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

之后重新执行安装PostGIS

可以通过

Rpm –ql geos(包名)查看包安装目录


安装httpd

yum installhttpd httpd-devel fcgi mod_fcgid


下面是编译安装mapcache

build mapcache

cmake的时候找不到geos、fcgi库,分别重装

yum install geosgeos-devel fcgi fcgi-devel

然后再编译安装mapcache

“`shell

yum installsqlite sqlite-devel 
wgethttp://download.osgeo.org/mapserver/mapcache-1.4.1.tar.gz
 
tar xvfmapcache-1.4.1.tar.gz
cdmapcache-1.4.1
mkdir build
cd build
cmake ..
make
make install


如果cmake编译的时候找不到依赖的时候,重新yum安装依赖的项目即可:

重要的一点:

将libmapcache.so和libmapcache.so.1从默认安装的/usr/local/lib,拷贝到usr/lib64/目录下面

安装python-devel,centos系统默认安装了python2.6,但没有安装devel

yum installpython-devel


3.

安装MapServer主体:

wgethttp://download.osgeo.org/mapserver/mapserver-7.0.1.tar.gz
tar xvfmapserver-7.0.1.tar.gz
cd mapserver-7.0.1
mkdir build
cd build
cmake     -DCMAKE_INSTALL_PREFIX=/opt\
       -DCMAKE_PREFIX_PATH=/usr/pgsql-9.4:/usr/share:/usr/lib64:/usr/lib64/python2.6:/usr/local:/opt\
       -DWITH_CLIENT_WFS=ON \
        -DWITH_CLIENT_WMS=ON \
       -DWITH_CURL=ON \
       -DWITH_SOS=ON \
       -DWITH_PHP=OFF \
       -DWITH_PERL=ON \
       -DWITH_RUBY=OFF \
       -DWITH_JAVA=OFF \
       -DWITH_CSHARP=OFF \
       -DWITH_PYTHON=ON \
       -DWITH_SVGCAIRO=OFF \
       -DWITH_ORACLESPATIAL=OFF \
       -DWITH_MSSQL2008=OFF \
                   -DWITH_FRIBIDI=0-DWITH_LIBXML2=1 -DWITH_HARFBUZZ=0 -DWITHCAIRO=0  -DWITH_POSTGIS=0 -DWITH_CAIRO=0 \
        ../>../configure.out.txt
make
make install

测试是否存在:

ls –al mapser

-rwxr-xr-x 1 user user 13745 mars  11 17:45mapser


4.下面是配置部分

httpd安装在:

/etc/httpd/conf/

配置httpd.conf:

将libmapcache.so和libmapcache.so.1拷贝到usr/lib64/目录下面

至此,启动Apache

service httpd start

显示OK即可

配置httpd需要修改几个部分:

Listen 80 默认端口

启动apache遇到错误:httpd: Could not reliably
determine the server’sfully qualified domain name

解决:

[root@serverconf]# vi httpd.conf
#ServerName www.example.com:80

ServerName localhost:80
再重新启动apache即可。

取消注释mapcache模块:

LoadModule mapcache_module modules/mod_mapcache.so


然后增加mapcahce的配置路径

<IfModule mapcache_module>
<Directory /home/mapserver/ms_data/cache>
Header set Access-Control-Allow-Origin "*"
                Require all granted
        </Directory>
        MapCacheAlias /mapcache "/home/mapserver/ms_data/cache/mapcache.xml"
</IfModule>


这时候,安装还没有完成,还需要配置Apache运行mapserver的cgi可执行文件,将编译好的mapserv拷贝到目录/var/www/cgi-bin/

同时赋予其他用户的执行权限

chmod +x mapserv

还要将opt/lib中的相关libmapserver库拷贝到usr/local/lib目录下

拷贝数据文件,将数据文件和cache配置目录放在一起,取消掉selinux限制

root@Centos6 china]# getenforce
Enforcing
[root@Centos6 china]# setenforce 0
[root@Centos6 china]# getenforce
Permissive</span>


还有什么问题,可以参考Apache的日志文件

路径:/var/log/httpd/


apache的一些路径:

cqi路径:/var/www/cgi-bin/

网页内容:/var/www/html/


如果是虚拟机,记得添加hosts文件的ip端口号和主机名映射,请看最后一行是新增的

查看主机名:

[root@Centos6 ~]# hostname
Centos6

查看ip:

[root@Centos6 ~]# hostname
Centos6
[root@Centos6 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:16:3E:0F:C6:FD
          inet addr:172.16.4.12  Bcast:172.16.4.255  Mask:255.255.255.0
          inet6 addr: fe80::16:3eff:fe0f:c6fd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23520945 errors:0 dropped:739 overruns:0 frame:0
          TX packets:19338840 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1800984986 (1.6 GiB)  TX bytes:1416567823 (1.3 GiB)
          Interrupt:11 Base address:0x8000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:320371 errors:0 dropped:0 overruns:0 frame:0
          TX packets:320371 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:45712442 (43.5 MiB)  TX bytes:45712442 (43.5 MiB)

转载自:https://blog.csdn.net/liyan_gis/article/details/52240396