11.1. Lesson: QGIS 서버 설치

이 강의의 목표: 데비안 계열 리눅스에 QGIS 서버 를 설치하는 방법을 배웁니다. 우분투 및 우분투에서 파생된 리눅스 같은 모든 데비안 기반 배포판에서도 이 방법을 따르면 됩니다. 각 배포판에 따른 차이는 무시해도 될 정도입니다.

참고

우분투에서는 운영자(admin) 권한이 필요한 명령어 앞에 sudo 를 추가하면 일반 사용자도 설치할 수 있습니다. 데비안에서는 sudo 를 추가할 필요가 없는 운영자(root)로 작업하면 됩니다.

11.1.1. moderate Follow Along: 패키지 설치

이 강의에서는 여기 에 있는 배포판으로만 설치할 것입니다.

다음과 같이 QGIS 서버를 설치하십시오:

apt install qgis-server --no-install-recommends --no-install-suggests

# if you want to install server plugins, also:
apt install python-qgis

QGIS 서버를 사용하려면 동일한 기기에 (X.Org 서버와 함께 설치되는) QGIS 데스크탑 소프트웨어를 함께 설치해서는 안 됩니다.

11.1.2. moderate Follow Along: QGIS 서버 실행 파일

QGIS 서버 실행 파일은 qgis_mapserv.fcgi 입니다. find / -name 'qgis_mapserv.fcgi' 명령어를 실행하면 이 파일이 어디에 설치됐는지 확인할 수 있는데, /usr/lib/cgi-bin/qgis_mapserv.fcgi 와 같은 디렉터리 위치를 출력할 것입니다.

이 단계에서 명령 줄 테스트를 해보고 싶다면 /usr/lib/cgi-bin/qgis_mapserv.fcgi 명령어를 실행해볼 수 있습니다. 다음과 비슷한 내용을 출력할 것입니다:

QFSFileEngine::open: No file name specified
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Content-Length: 206
Content-Type: text/xml; charset=utf-8

<ServiceExceptionReport version="1.3.0" xmlns="https://www.opengis.net/ogc">
 <ServiceException code="Service configuration error">Service unknown or unsupported</ServiceException>
</ServiceExceptionReport>

훌륭한 결과입니다. 서버가 지원 서비스를 요청받지 않았다고 하고 있기 때문이죠. 제대로 설치되고 있다는 뜻입니다. WMS 요청을 하는 방법에 대해서는 다음에 알아보겠습니다.

11.1.3. hard HTTP 서버 환경설정

인터넷 브라우저에서 설치된 QGIS 서버에 접근하기 위해서는 HTTP 서버를 이용해야 합니다. 아파치 HTTP 서버 설치 과정은 아파치 HTTP 서버 절에서 자세히 설명하고 있습니다.

참고

QGIS 서버를 (리눅스 데스크탑에 포함돼 있는) X 서버를 실행하지 않고 설치했는데 GetPrint 명령어도 사용하고 싶다면, 가상 X 서버를 설치해서 QGIS가 이 가상 X 서버를 사용하도록 해야 합니다. Xvfb 설치 과정 을 따라 이 작업을 완료할 수 있습니다.

11.1.4. moderate Follow Along: 또다른 가상 호스트 생성

QGIS 서버를 가리키는 또다른 아파치 가상 호스트를 생성해봅시다. 여러분이 원하는대로 (coco.bango, super.duper.training, example.com 등등) 어떤 이름이든 선택할 수 있습니다만, 단순화를 위해 myhost 를 쓰도록 하겠습니다.

  • myhost 라는 이름이 로컬호스트(localhost) IP를 가리키도록 해봅시다. /etc/hosts 파일에 127.0.0.1 x 와 같이 로컬호스트 IP와 호스트 이름을 추가해보죠. sh -c "echo '127.0.0.1 myhost' >> /etc/hosts" 명령어를 실행하거나, gedit /etc/hosts 명령어로 해당 파일을 직접 편집하면 됩니다.

  • 터미널에서 ping myhost 명령어를 실행하면 myhost 가 로컬호스트를 가리키는지 확인할 수 있습니다. 다음과 같은 내용을 출력할 것입니다:

qgis@qgis:~$ ping myhost
PING myhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.029 ms
  • myhost 사이트에서 QGIS 서버에 접근할 수 있는지 확인해볼까요? curl http://myhost/cgi-bin/qgis_mapserv.fcgi 명령어를 실행하거나, 데비안 기본 브라우저에서 해당 URL을 접근해보면 됩니다. 아마 다음과 같은 내용을 보게 될 겁니다:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /cgi-bin/qgis_mapserv.fcgi was not found on this server.</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at myhost Port 80</address>
</body></html>
  • 아파치는 자신이 myhost 라는 이름의 서버를 가리키는 요청에 답해야 한다는 사실을 모릅니다. 가상 호스트를 설정하기 위한 가장 간단한 방법은 /etc/apache2/sites-available 디렉터리에 myhost.conf 파일을 만드는 것이겠죠. 이 파일의 내용은 qgis.demo.conf 파일의 내용과 동일해야 합니다. 단 하나, ServerName 줄이 ServerName myhost 가 되어야 한다는 것만 제외하면 말이죠. 로그를 저장할 위치도 바꿀 수 있는데, 바꾸지 않으면 두 가상 호스트의 로그들이 동일한 위치에 저장될 겁니다. 물론 바꾸지 않아도 됩니다.

  • 이제 a2ensite myhost.conf 명령어로 가상 호스트를 활성화시킨 다음 service apache2 reload 명령어로 아파치 서비스를 다시 불러와봅시다.

  • 다시 http://myhost/cgi-bin/qgis_mapserv.fcgi URL을 접근해보면 모든 게 제대로 작동한다는 사실을 알 수 있을 겁니다!

11.1.5. In Conclusion

여러분은 데비안 기반 리눅스 배포판에 여러 버전의 QGIS 서버를 패키지로 설치하고 QGIS 서버와 아파치를 환경설정하는 방법을 배웠습니다.

11.1.6. What’s Next?

이제 QGIS 서버를 설치했고 HTTP 프로토콜을 통해 서버에 접근할 수 있으니, 서버가 제공하는 몇몇 서비스에 접근하는 방법을 배워야 합니다. 다음 강의에서는 QGIS 서버 WMS 서비스에 어떻게 접근하는지를 배울 것입니다.