MapServer 4に必要なライブラリのインストール
-
必要なライブラリ
- libtiff
- libjpeg
- libpng
- freetype
- gd
- gdal
- proj
- geos
- yacc
-
Fedora Core 3の場合
- libtiff
- libtiff-devel
- libjpeg
- libjpeg-devel
- libpng
- libpng-devel
- freetype
- freetype-devel
- gd
- gd-devel
- byacc
-
gdalのインストール
必要なライブラリをインストールします。
PostGISを使用する場合は以下が必要になります。
以下をyumでインストール
その他 PostgreSQL
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] エラー 2CentOS4.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 --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
cp ./mapserv /var/www/cgi-bin/mapserv注.
- MapServerでは、"make install"は使用せず、実行ファイルmapservを必要な場所にコピーして使用します。
- 今回は、実行ファイル名をmapservのまま変更していないので、[cgi用のディレクトリ]/mapservとしています。
動作確認
MapServer の開発元では MapServer のデモ用データ(ファイル名:workshop.zip)を公開しています。 これを使用して動作確認を行います。
-
デモ(テスト用)データのダウンロード
MapServer のダウンロードページの一番下の項目の [ MapServer 4.x Demo Application ]をクリックしてworkshop.zipをダウンロード
デモデータの設定
workshop.zipをサーバーの公開ディレクトリに解凍します。
apacheの公開ディレクトリ | /var/www/html/ |
workshop.zipの解凍データの置き場所 | /var/www/html/workshop |
mapserverが使用するテンポラリディレクト | /var/www/html/tmp |
<!-- 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のエラーログを確認してください。
[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を実行したら 正常に動作しました。