1. MapServer 4に必要なライブラリのインストール
  2. 共有ライブラリの設定
    • MapServerのインストール
    • 動作確認
    • デモデータの設定
      • 動作チェック


        MapServer 4に必要なライブラリのインストール

        • 必要なライブラリ

        • 必要なライブラリをインストールします。

          • libtiff
          • libjpeg
          • libpng
          • freetype
          • gd
          • gdal
          • proj

          PostGISを使用する場合は以下が必要になります。

          • geos
          • yacc

        • Fedora Core 3の場合

        • 以下をyumでインストール

          • libtiff
          • libtiff-devel
          • libjpeg
          • libjpeg-devel
          • libpng
          • libpng-devel
          • freetype
          • freetype-devel
          • gd
          • gd-devel
          • byacc

          その他 PostgreSQL

        • gdalのインストール

        • ftp.remotesensing.org/pub/gdal/から gdalの最新ソースファイル(2006年10月6日現在では gdal-1.3.2.tar.gz)をダウンロードします。

          注意 gdal のコンパイルには、g++が必要です。

          (Fedora Core 3 で、g++をyumでインストールする場合は、yum install gcc-c++ )

          # wget --passive-ftp ftp://ftp.remotesensing.org/pub/gdal/gdal-1.3.2.tar.gz
          # tar xzf gdal-1.3.2.tar.gz
          # cd gdal-1.3.2
          # ./configure
          # make
          # make install

          もし、makeの途中で以下のようなエラーが起こった場合、 python関連のファイルがないので、それらをインストールする必要があります。

          ...
          dal_wrap.c: At top level:
          gdal_wrap.c:110: warning: 'swig_varlink_print' defined but not used
          gdal_wrap.c:157: warning: 'swig_varlink_setattr' defined but not used
          gdal_wrap.c:210: warning: 'SWIG_addvarlink' declared `static' but never defined
          make[1]: *** [gdal_wrap.o] エラー 1
          make[1]: Leaving directory `/usr/local/src/gdal-1.3.2/pymod'
          make: *** [py-module] エラー 2
          CentOS4.3の場合、python, python-develをインストールすればOKです。

        • projのインストール

        • ftp.remotesensing.org/pub/proj/から以下をダウンロードします。 proj-4.4.9.tar.gz proj-nad27-1.2.tar.gz (2006.10.1現在の最新)

          # tar xzf proj-4.4.9.tar.gz
          # cd proj-4.4.9/nad
          # tar xzf ../../proj-nad27-1.2.tar.gz
          # cd ..
          # ./configure
          # make
          # make install

        • geosのインストール

        • PostGISをインストールする場合に必要となります。

          http://geos.refractions.net/から geosの最新ソースファイル(2006年10月6日現在では geos-2.2.3.tar.bz2)をダウンロードします。

          # bzcat geos-2.2.3.tar.bz2 | tar xv
          # cd geos-2.2.3
          # ./configure
          # make
          # make install

        • PostGISのインストール

        • http://postgis.refractions.net/から PostGISの最新ソースファイル(2006年10月5日現在ではpostgis-1.1.4.tar.gz)をダウンロードします。

          # tar zxf postgis-1.1.4.tar.gz
          # cd postgis-1.1.4
          # ./configure --with-pgsql=/usr/local/pgsql/bin/pg_config
          # make
          # make install
          この例では、PostgreSQLは/usr/local/pgsql8.1.2 にインストールされていて、リンクが/usr/loca/pgsqlに 張られているので、--with-pgsqlオプションで、pg_configの位置を指定しています。

          注. PostGISをコンパイルするためには、yaccが必要です。Fedora Core3の場合、yumでbyaccをインストール すれば、yaccもインストールされます

        共有ライブラリの設定

        必要なライブラリをインストールしたら

        /sbin/ldconfig
        を実行し、共有ライブラリのパスを更新します。

          MapServerのインストール

          MapServerをダウンロードしてきて解凍します。

          configure,makeを実行します。

          • configure

          • # ./configure --with-proj=/usr/local
                        --with-postgis=/usr/local/pgsql/bin/pg_config
                        --with-gdal=/usr/local/bin/gdal-config
                        --with-php=../php-4.4.2
                        --with-gd=/usr

            注. 

            --with-php=../php-4.4.2
             はphpのソースがあるディレクトリを指定すること

            参考 Build notes for RedHat 9 and MapServerでは、

            ./configure --without-tiff --without-eppl --with-threads --with-proj
             --with-gdal=/usr/local/bin/gdal-config --with-ogr --with-php=../php-4.3.3
             --with-gd=/usr/local  --with-freetype=/usr/bin  --with-pdf --with-ming
             --with-wmsclient --with-wfs --with-wfsclient
            もし、以下のエラーが発生するなら projが必要です。
            configure: checking whether we should include PROJ.4 support...
            configure: error: "Could not find projects.h or libproj.a/libproj.so in /usr/local/lib."
            projをインストールして、/usr/local/lib/libproj.a /usr/local/lib/libproj.so /usr/local/include/projects.h が存在する場合は、
            /sbin/ldconfig
            を実行します。

          • make

          • # make
            コンパイルが正常に終了した場合、動作確認
            # ./mapserv
            This script can only be used to decode form results and
            should be initiated as a CGI process via a httpd server.
            となればOKです。

            注. 最初コンパイルでエラーがでなかったので、デモを実行しようとしたら、 postgreSQL、projの共有ライブラリのパス指定でエラーが発生しました。 原因は、共有ファイルはあるのでに、共有ファイルへのパス指定を間違ったためでした。

          • インストール

          • MapServerの本体は mapserv で、これをapache経由で実行できるように、apacheのcgi用ディレクトリにコピー。

            cp ./mapserv   [cgi用のディレクトリ]/mapserv
            例. 例えば、apacheのcgi用ディレクトリが /var/www/cgi-bin/の場合
            cp ./mapserv /var/www/cgi-bin/mapserv
            注.
            • MapServerでは、"make install"は使用せず、実行ファイルmapservを必要な場所にコピーして使用します。
            • 今回は、実行ファイル名をmapservのまま変更していないので、[cgi用のディレクトリ]/mapservとしています。

          動作確認

          MapServer の開発元では MapServer のデモ用データ(ファイル名:workshop.zip)を公開しています。 これを使用して動作確認を行います。

          デモデータの設定

          workshop.zipをサーバーの公開ディレクトリに解凍します。

          例. 

          apacheの公開ディレクトリ /var/www/html/
          workshop.zipの解凍データの置き場所 /var/www/html/workshop
          mapserverが使用するテンポラリディレクト /var/www/html/tmp

          上記の場合、workshopディレクトリにあるindex.html (/var/www/html/workshop/index.html)を以下のように修正します。
              <!-- EDIT THE FORM ACTION -->
              <form name="demo" method="GET" action="/cgi-bin/mapserv" onSubmit="submit_form()">
                <input type="hidden" name="layer" value="lakespy2">
                <input type="hidden" name="layer" value="dlgstln2">
                <input type="hidden" name="zoomsize" value=2>
          
                <!-- EDIT THESE HIDDEN VARIABLES -->
                <input type="hidden" name="map" value="/var/www/html/workshop/itasca.map">
                <input type="hidden" name="program" value="/cgi-bin/mapserv">
                <input type="hidden" name="root" value="/var/www/html/workshop">
                <input type="hidden" name="map_web_imagepath" value="/var/www/tmp/">
                <input type="hidden" name="map_web_imageurl" value="/tmp/">
          
                <select name="map_web_template" size="1">
                  <option value="itasca_basic.html"> Basic Application
                  <option value="itasca_adds_scalebar.html">   -- Adds second scalebar
                  <option value="itasca_adds_pan.html">   -- Adds pan controls
                  <option value="itasca_adds_frames.html">   -- Adds frames
                  <option value="itasca_adds_dhtml.html">   -- Adds dhtml rubber-band box
                </select>
                <input type="submit" value="Initialize"></center>
          
              </form>

            動作チェック

            workshopの中のindex.hmtlにアクセスします。 上記の例の場合

            http://127.0.0.1/workshop/index.html
            になります。 デモデータが正しく設定されて以下のような画面が表示されます。

            画面の下部にある[Initialize]ボタンをクリックして、以下のような画面が表示されれば MapServerは正常に動作しています。

            注. 正常に表示されない場合は、apacheのエラーログを確認してください。

            エラーの例  apacheのエラーログ
            [Sun Oct  1 15:08:33 2006] [error] [client 192.168.0.1] Premature end of script headers: /var/www/cgi-bin/mapserv40
            mapserv40: error while loading shared libraries: libproj.so.0: cannot open shared object file: No such file or directory
            これは、共有ライブラリ libproj.so へのパスが通っていなかったために発生しました。 そのため/etc/ld.so.confに/usr/local/lib/を追加して、/sbin/ldconfigを実行したら 正常に動作しました。