Note cài QGIS Server trên Linux

Tính cài lại VPS, xong nghĩ đàng nào cũng cài lại, thôi thì nghịch cho đã rồi cài một lần luôn. Đó là lý do ra đời bài note này :v

Cài QGIS Server trên Linux, dựa theo hướng dẫn của chị này^^

Kiểm tra hệ điều hành đang sài

lsb_release -a

Kiểm tra hệ điều hành đang dùng

Add key QGIS Server Source

gpg –keyserver keyserver.ubuntu.com –recv 1F9ADD375CA44993

gpg –export –armor 1F9ADD375CA44993 | sudo apt-key add –

sudo apt-get update


Add key QGIS Server Source

Cài QGIS Server và Apache mod Fcgi

sudo apt-get install qgis-mapserver libapache2-mod-fcgid

Cài QGIS Server và Apache mod Fcgi

Restart Apache

sudo /etc/init.d/apache2 restart

Tuy nhiên do mình cài Lampp nên mình sẽ restart Apache thế này

cd /opt/lampp/
sudo ./lampp start

Test thử

http://dev.dothanhlong.org/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Kết quả không tìm thấy

Test thử services QGIS Server

Thường thôi, vụ này từng bị qua khi cài mapserver rồi =))

Chỉ việc copy file qgis_mapserv.fcgi trong thư mục cgi-bin của hệ thống bỏ vào cgi-bin của lampp thôi. Do mình cài lampp

copy file qgis_mapserv.fcgi trong thư mục cgi-bin của hệ thống bỏ vào cgi-bin của lampp

Kết quả test lần 2

Ok, ngon lành cành đào rồi này =))

Giờ thêm thử bản đồ của mình xem thế nào :p

Quyết định chơi luôn cái bản đồ thửa cho nó “nặng”, xuất ra geojson ~ 39Mb :v

QGIS Server – Bản đồ thửa đất

Save project lại dưới 2 dạng

  • thuadatq9.qgs cho QGIS 2x
  • thuadatq9.qgz cho QGIS 3x

Save QGIS project lại dưới 2 dạng

Mình tạo 2 loại project cho qgis2x và qgis3x để test xem QGIS Server nhận loại nào, kết quả là:

QGIS Server nhận file Project của QGIS 2x

Chép qua thư mục cgi-bin nơi chứa file qgis_mapserv

Chép qua thư mục cgi-bin nơi chứa file qgis_mapserv

Link 2 file qgis_mapserv và wms_metadata ngoài thư mục cgi-bin vào thư mục chứa qgis project mình vừa tạo

Xem thêm về lệnh link trong linux

sudo ln -s ../qgis_mapserv.fcgi
sudo ln -s ../wms_metadata.xml


Link 2 file qgis_mapserv và wms_metadata ngoài thư mục cgi-bin vào thư mục chứa qgis project mình vừa tạo

Test thử QGIS Server

http://dev.dothanhlong.org/cgi-bin/thuadatq9/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Oh no! bị lỗi không cho access vô @@

Lỗi này mình đã thử set lại chmod thư mục như không ăn thua => có thể do cấu hình host, htaccess gì đó..

Sau khi tham khảo một vòng ở các trang như:


It is because the symbolic link points to a directory, which is located outside of directories listed in your "virtualhost".conf files. So you need to write down necessary directives in your /etc/apache2/apache2.conf (or /etc/apache2/sites-available/*.conf or /etc/apache2/conf-available/*.conf) file to access /usr/lib/cgi-bin. Something like:
Alias /cgi-bin/linkName /usr/lib/cgi-bin<Directory /usr/lib/cgi-bin> Options +ExecCGI FollowSymLinks DirectoryIndex disabled AllowOverride None Require all granted # etc.. </Directory>
And maybe (but I’m not sure that it’s necessary): sudo chown -R www-data:www-data /usr/lib/cgi-bin.
If you make Alias /cgi-bin/linkName /usr/lib/cgi-bin you do not need to make a symbolic link.

https://askubuntu.com/questions/855648/cgi-scripts-on-apache2-gives-403-forbidden-when-the-cgi-are-in-a-linked-folder

Cái này mình hiểu sơ vấn đề đang vướng nhưng vẫn ko fix được

Cuối cùng mình tìm thấy cái này và đã làm ok


This happens after you upgrade to apache 2.4.9+
basically just replace
Order allow,denyallow from all
with
Require all granted
should fix this issue.
something like,
<Directory /home/tom/Dropbox/web> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted</Directory>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<Directory "/usr/lib/cgi-bin"> AllowOverride All Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted</Directory>
Here is a note from http://httpd.apache.org/docs/2.4/howto/access.html

https://askubuntu.com/questions/601540/lamp-403-forbidden-access-on-custom-folder

Cách làm là sửa vhost. Căn cứ theo hướng dẫn trên, chỉ sửa lại tên các đường dẫn cho phù hợp với bản thân.

Fix lỗi 403 QGIS Server

Kết quả

http://dev.dothanhlong.org/cgi-bin/thuadatq9/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Test lại QGIS Server với dữ liệu Việt Nam

http://dev.dothanhlong.org/cgi-bin/vntinh/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

QGIS Server với dữ liệu Việt Nam

Vậy là Ok.

Test thêm WMS từ QGIS Server vào QGIS

Test thêm WMS từ QGIS Server vào QGIS
Test thêm WMS từ QGIS Server vào QGIS

Thể hiện WMS từ QGIS Server lên Web bằng OpenLayers

http://dev.dothanhlong.org/stuff/vntinh.html

http://dev.dothanhlong.org/stuff/vntinh.html

Ok, quá ngon. haha

Trước mình có dùng riêng MapServer để tạo ứng dụng chia sẻ Map Services riêng, cơ mà bị vướng phải style SLD upload lên cùng thì mới hiện style được. Do MapServer dùng mapfile của nó làm config nên hơi rắc rối.

Đang làm chưa xong, giờ mò ra cái QGIS Server này chắc phải chuyển sang dùng QGIS Server để làm tiếp cho gọn. Vể cái engine thì QGIS Server cũng dùng kiểu mapserver thôi nhưng… khoái vụ up project lên là chạy, khỏi tạo mapfile, hehe

Ứng dụng YourWMS – Mapserver

Vọc đến đây thôi. Rảnh trước khi cài lại VPS thì thử note cái Geonote Book nữa, kaka

-soiqualang_chentreu-