목차
- 서론
- QGIS 데스크톱 64비트 버전 다운로드
- QGIS 서버 프로그램 설치
- Apache 서버 설치
- 사용 방법 및 문제 해결
서론
QGIS 서버와 관련된 공식 문서가 부족하여 소스 코드 분석도 어려웠고, 문제 발생 시 해결 방법을 찾기가 힘들었다. 본 글에서는 Windows 10 환경에서 QGIS 서버를 설치하고 사용하는 과정을 정리한다. Linux 환경에서도 비슷한 절차를 따르지만 명령어 설치가 가능해 더 간단하다. 최신 버전보다는 장기 지원 버전(LTS)을 사용하는 것이 문제 발생을 줄일 수 있다.
참고 자료:
- QGIS 공식 문서
- QGIS Docker 저장소
QGIS 데스크톱 64비트 버전 다운로드
OSGeo4W 온라인 설치 프로그램을 사용해도 되지만, qgis-server만 선택하면 설치가 완전하지 않을 수 있다. 필자는 최신 버전 3.2.3을 설치했다. 다운로드 서버는 http://download.osgeo.org 를 선택하면 속도가 가장 빠르다.
다운로드 주소: https://qgis.org/downloads/QGIS-OSGeo4W-3.2.3-1-Setup-x86_64.exe
설치 시 주의사항:
- C 드라이브 외의 드라이브에 설치할 것(Windows 10 권한 문제 방지)
- 설치 경로에 공백 포함하지 않을 것(후술할 문제 원인)
QGIS 서버 프로그램 설치
다운로드 주소: http://download.osgeo.org/osgeo4w/x86_64/release/qgis/qgis-server/
32비트 버전은 제공되지 않으므로 64비트 버전만 다운로드 가능하며, 데스크톱 버전과 반드시 일치해야 한다.
다운로드 후 압축을 해제하고 QGIS 설치 디렉토리에 그대로 적용한다. 압축 파일 내 디렉토리 구조가 QGIS 설치 디렉토리 구조와 동일하게 매핑된다.
이후 httpd.d 디렉토리 내 httpd_qgis.conf.tmpl 파일을 복사하여 httpd_qgis.conf 이름으로 변경한다.
파일 편집:
- @osgeo4w@ 를 QGIS 설치 디렉토리로 변경
- @grassversion@ 를 GRASS 버전으로 변경
- @windir@ 를 Windows 디렉토리로 변경
또는 QGIS 설치 디렉토리下的 etc/postinstall 폴더에 있는 qgis-server.bat 스크립트를 실행해도 자동으로 설정된다.
Apache 서버 설치
QGIS 서버는 CGI 프로그램이므로 Apache 서버가 필요하다.
Apache 다운로드: https://www.apachelounge.com/download/
압축을 해제할 때 경로에 공백이 없어야 한다.
httpd.conf 설정
conf 디렉토리의 httpd.conf 파일을 수정한다.
먼저 SVRROOT 변수 값을 변경:
Define SRVROOT "C:/Apache24"
ServerRoot "${SRVROOT}"파일 마지막 부분에 QGIS 설정 파일 포함:
include "C:/Program Files/QGIS 3.2/httpd.d/*.conf"FastCGI 모듈 설치
QGIS 서버는 FastCGI 프로그램이므로 Apache FastCGI 모듈이 필요하다.
下载地址:https://www.apachelounge.com/download/
Apache 버전과 호환되는 모듈을 다운로드하여 Apache 디렉토리下的 modules 폴더에解压한다.
사용 방법 및 문제 해결
Apache bin 디렉토리의 httpd.exe를 실행한다. 오류가 없으면 GetCapabilities 요청으로 테스트한다.
http://127.0.0.1:8080/qgis/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities문제 1: 403 접근 금지 오류
Forbidden
You don't have permission to access /qgis/qgis_mapserv.fcgi.exe on this server.파일이 존재하지만 Apache에서 접근을 차단한 것이다. httpd.conf를 수정:
<Directory />
AllowOverride none
Require all denied
</Directory>을 다음과 같이 변경:
<Directory />
AllowOverride none
Require all granted
</Directory>또는 httpd_qgis.conf 파일에 Require all granted를 추가한다. httpd.exe를 재시작 후 다시 테스트한다.
문제 2: 503 서비스 불가 오류
Apache 로그를 확인하면 경로에 공백이 있는 것이 원인이다.
해결 방법:
- qgis_mapserv.fcgi.exe 파일을 Apache cgi-bin 디렉토리에 복사하고 http://127.0.0.1:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities 로 접근
- 또는 QGIS를 공백 없는 경로에 재설치
문제 3: DLL 파일 누락
필요한 DLL 파일(QtXml4.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll, QtSvg4.dll)이 누락되었다는 오류가 발생한다. QGIS 설치 디렉토리에서 해당 파일들을 찾아서 복사하거나 OSGeo4W 설치 프로그램을 사용하여 다운로드한다.
문제 4: offscreen 플러그인 오류
offscreen 플러그인은 Qt 5.1 이상의離屏 렌더링 기능이다. httpd_qgis.conf 파일에서 QT_PLUGIN_PATH 변수의 경로가 qt4로 설정되어 있으면 qt5로 변경한다.
변경 후 httpd.exe를 재시작하고 테스트를 계속한다.
위 단계를 모두 완료하면 qgis_mapserv.fcgi.exe가 정상적으로 실행된다. ProcessMonitor로 호출 과정을 확인 가능하다.
QGIS 프로젝트 파일(.qgs)을 qgis_mapserv.fcgi.exe가 있는 디렉토리에 배치하면 기본 서비스로 사용 가능하지만, GetCapabilities 요청 시 500 오류가 발생할 수 있다. 이 경우 map 매개변수를 명시적으로 지정해야 한다. 관련 문서와 소스 코드가 부족하여 추가 조사가 필요하다.