linux下編譯mapser支援庫,包括proj、gdal
阿新 • • 發佈:2020-12-12
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