1. 程式人生 > 其它 >linux下編譯mapser支援庫,包括proj、gdal

linux下編譯mapser支援庫,包括proj、gdal

技術標籤:gisc++linuxc++

linux部署服務:
1,下載proj6-1,geos 3.7.3,gdal-3.2

編譯proj6-1:

1,cd proj,執行./configure,檢視是否確實依賴庫,
若提示缺少sqlite3,執行sudo apt install sqlite3
2,mkdir build
3,cd build
4,cmake ..
5, cmake --build .
6,執行sudo make install,安裝

編譯geos3.7.3:

1,cd geos 3.7.3,執行./configure,檢視是否確實依賴庫,
2,mkdir build
3,cd build
4,sudo cmake ..
5, sudo make -j4
6,執行sudo make install,安裝

編譯gdal-3-2:

1,cd gdal3.2,執行./configure,
出現錯誤:checking for internal_proj_create_from_wkt in -lproj... no
執行:
1.1 export PATH=/usr/local/bin:$PATH,設定proj安裝目錄執行路徑
1.2 sudo ./configure --with-proj=/usr/local 執行檢查
2,若要支援geos,執行
sudo ./configure --with-proj=/usr/local --with-geos=yes
輸出中檢視是否有:GEOS support:              yes
有代表成功。
3,執行sudo make -j4進行編譯

編譯mapserv7-6-1:

1 mkdir build
2 cd build
3 cmake ..
編譯可能不通過,提示缺少庫fribidi,
執行sudo apt-get install libfribidi-dev安裝,
提示 Could NOT find ProtobufC (missing:  PROTOBUFC_COMPILER) ,
執行 sudo apt-get install protobuf-c-compiler
之後執行cmake ..,提示makefile通過
4  執行 cmake \
    -DWITH_CLIENT_WFS=ON \
    -DWITH_CLIENT_WMS=ON \
    -DWITH_CURL=ON \
    -DWITH_PYTHON=ON \
    -DWITH_THREAD_SAFETY=ON \
    -DWITH_APACHE_MODULE=ON \
    -DWITH_XMLMAPFILE=ON \
    -DCMAKE_C_FLAGS="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H -DPROJ_RENAME_SYMBOLS" -DCMAKE_CXX_FLAGS="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H -DPROJ_RENAME_SYMBOLS" \
    ../ 
    開啟對應功能支援,缺少支援庫,自行安裝即可:
    安裝sudo apt-get install apache2-dev,
    sudo apt-get install libxslt-dev
5 執行make -j5開始編譯

部署Apache2:

1,執行命令安裝
$ apt-get install -y apache2 apache2-mpm-worker libapache2-mod-fastcgi
$ a2enmod actions fastcgi alias
$ apt-get install libapache2-mod-php5 php5-common php5-cli php5-fpm php5

2,cd /etc/apache2/sites-available,開啟000-default.conf
找到DocumentRoot /var/www/html,修改/var/www/html為自己cgi程式目錄,如/home/mapserv/bin

解決跨域問題:
 2.1sudo  a2enmod headers
 2.2 sudo gedit  /etc/apache2/sites-available/000-default.conf開啟檔案,新增
	LoadModule headers_module modules/mod_headers.so
	Header set Access-Control-Allow-Origin *
2.3重啟服務 sudo service apache2 restart

3,cd /etc/apache2,開啟apache2.conf,
3.1找到
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

修改/var/www/為步驟2中設定的cig目錄
3.2 設定虛擬目錄對映,對映到cgi程式所在目錄
ScriptAlias /mapserv/ /home/mapserv/bin
3.3 新增
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
4,測試
4.1sudo /etc/init.d/apache2 start啟動服務

4.2瀏覽器中輸入http://127.0.0.1/mapserv/mapserv,則呼叫對應的mapserv程式
	http://127.0.0.1/mapserv/mapserv?map=WMS.map&SERVICE=WMS&VERSION=2.0.1&REQUEST=GetCapabilities
若無法訪問map檔案,則需要新增許可權
chmod 666 WMS.map

支援https,依賴openssl生成的祕鑰

$ openssl genrsa -out server.key 1024

$ openssl req -new -key server.key -out server.csr

$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

$ openssl dhparam -out dh768.pem 768