Erstellen von WebGIS unter Ubuntu20.04 LTS

Einführung

Bisher habe ich einige Standortinformationsvisualisierungen mit QGIS organisiert. Da dies jedoch eine Betriebsmethode auf der Desktopseite ist, eignet sie sich nicht zum Veröffentlichen der visualisierten oder zum gemeinsamen Hochladen mit anderen. Dieses Mal habe ich WebGIS (QGIS-Server) so eingerichtet, dass die von QGIS erstellte Ebene freigegeben wird, sodass ich den Inhalt als Memo belasse.

Ausführungsumgebung

[WebGIS-Installationsumgebung] ・ Ubuntu20.04 LTS (auf GCP) ・ QGIS-Server 3.10.4 ・ Apache 2.4.41

Was willst du tun

    1. Erstellen Sie eine Ubuntu-Instanz in GCP
  1. Installieren Sie QGIS-Server
    1. Apache2 installieren

1. 1. Erstellen Sie eine Ubuntu-Instanz in GCP

・ Rufen Sie den GCP-Startbildschirm auf und klicken Sie auf [Neues Projekt]. (Browser ist Chrome) Qiita-no010_img01.jpg

-Klicken Sie im Navigationsmenü auf [Compute Engine> VM-Instanz]. Qiita-no010_img02.jpg

-Klicken Sie auf [Erstellen], geben Sie die folgenden Informationen ein, wählen Sie sie aus und klicken Sie auf [Erstellen].

● Name: qgis-web-client2 ● Region: Asien-Nordosten1 (Tokio) ● Zone: Asien-Nordosten1-b

● Maschinenkonfiguration Maschinenfamilie: Allzweck Serie: E2 Maschinentyp: e2-klein   ● Startdiskette     OS      :Ubuntu Version: Ubuntu20.04 LTS Festplattentyp: Standardmäßige persistente Festplatte Größe: 10 GB

● Firewall HTTP-Verkehr zulassen HTTPS-Verkehr zulassen

● Netzwerk (Netzwerkschnittstelle) Externe IP: Erstellen Sie eine IP-Adresse

  • Entscheiden Sie den Namen entsprechend.

  • Andere als die oben genannten Einstellungen bleiben als Standardeinstellungen erhalten

Das Erstellen dauert einige Zeit. Wenn die Erstellung abgeschlossen ist, klicken Sie auf Verbinden- [SSH], um den Konsolenbildschirm zu öffnen. Qiita-no010_img03.jpg

Melden Sie sich ab hier als root an und führen Sie es aus. </ font> (Sie können "sudo" als Standardbenutzer des GCP-Kontos verwenden, aber es ist jedes Mal mühsam, darauf zuzugreifen.)

2. Installieren Sie QGIS-Server

Aktualisierungen des Paketverwaltungstools.

python


$ apt update
$ apt -y upgrade

Installation der erforderlichen Pakete.

python


$ apt install -y nano curl iputils-ping net-tools

Installieren Sie das QGIS-Server-Paket

python


$ apt install qgis-server

Überprüfen Sie den Speicherort der ausführbaren Datei des QGIS-Servers. In der offiziellen Dokumentation steht "/ usr / lib / cgi-bin / qgis_mapserv.fcgi".

python


$ find / -name 'qgis_mapserv.fcgi'
/usr/lib/cgi-bin/qgis_mapserv.fcgi

Versuch es.

python


$ /usr/lib/cgi-bin/qgis_mapserv.fcgi

"Loading native module /usr/lib/qgis/server/libdummy.so"
"Loading native module /usr/lib/qgis/server/libwcs.so"
"Loading native module /usr/lib/qgis/server/libwfs.so"
"Loading native module /usr/lib/qgis/server/libwfs3.so"
"Loading native module /usr/lib/qgis/server/libwms.so"
"Loading native module /usr/lib/qgis/server/libwmts.so"
QFSFileEngine::open: No file name specified
Content-Length: 54
Content-Type: text/xml; charset=utf-8
Server:  Qgis FCGI server - QGis version 3.10.4-A Coruña
Status:  500
<ServerException>Project file error</ServerException>

In diesem Stadium scheint es in Ordnung zu sein, zu beurteilen, dass die Antwort normal ist, wenn die Antwort wie oben beschrieben ist.

Schulungsprojekt herunterladen

python


###Erstellen eines Ordners zum Speichern von Projektdaten
$ mkdir /home/qgis/
$ mkdir /home/qgis/projects/

###Laden Sie Schulungsprojekte herunter.
$ wget https://github.com/qgis/QGIS-Training-Data/archive/master.zip -d

###Entpacken Sie die heruntergeladene ZIP-Datei. * "QGIS-Training-Data-2.0 ”Verzeichnis wird erstellt.
$ unzip master.zip

###Kopieren Sie die Lernprogrammdaten der entpackten Datei
$ cp -pr ./QGIS-Training-Data-master/exercise_data/qgis-server-tutorial-data/* /home/qgis/projects/

Überprüfen Sie den Inhalt des Kopierzielverzeichnisses.

python


$ ls -l /home/qgis/projects/

total 13352
drwxrwxr-x 2  Icons
-rw-rw-r-- 1  README.md
drwxrwxr-x 2  Template
-rw-rw-r-- 1  naturalearth.sqlite
-rw-rw-r-- 1  world.qgs
-rw-rw-r-- 1  world3.qgs

#* Die obige Anzeige ist teilweise weggelassen.

3. 3. Apache2 installieren

-Apache Installation & Startbestätigung -Duplizieren und bearbeiten Sie die conf-Datei

  • Erstellen Sie einen virtuellen Host und ordnen Sie die zu lesende conf-Datei den Hostinformationen zu.

Installieren Sie die erforderlichen Pakete für den Apache HTTP-Server.

python


$ apt install -y apache2 libapache2-mod-fcgid

Aktivieren Sie das "cgi" -Modul und greifen Sie über einen Browser unter Ubuntu auf die URL "http: //localhost/cgi-bin/qgis_mapserv.fcgi? SERVICE = WMS & VERSION = 1.3.0 & REQUEST = GetCapabilities" zu.

python


#Modulaktivierung
$ a2enmod cgid

#Starten Sie Apache2 neu
$ systemctl restart apache2

Der folgende Bildschirm sollte im Browser unter Ubuntu angezeigt werden. (Informationen zum Umbau auf Ubuntu finden Sie hier ** [Remotedesktopverbindung zu Ubuntu auf GCP] **) Qiita-no010_img04.jpg

  • Wenn cgid nicht aktiviert ist, wird es" Nicht gefunden "sein.

So aktivieren Sie das Modul und legen den Alias in der Site-Konfiguration fest Erstellen Sie "qgis_demo.conf" in "/ etc / apache2 / sites-available /".

python


$ nano /etc/apache2/sites-available/qgis_demo.conf

/etc/apache2/sites-available/qgis_demo.conf



Erstellt mit folgenden Inhalten (siehe offizielles Dokument)
-------------------------------------------------
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf


        # Tell QGIS Server instances to use a specific display number for xvfb
        # necessary for printing, see below
        FcgidInitialEnv DISPLAY ":99"

        # Activate QGIS log (different from apache logs)
        #Diesmal ist es in Ordnung, wenn dies nicht eingestellt ist
        #FcgidInitialEnv QGIS_SERVER_LOG_FILE /var/log/qgis/qgisserver.log
        FcgidInitialEnv QGIS_SERVER_LOG_LEVEL "0"
        FcgidInitialEnv QGIS_SERVER_LOG_STDERR "1"
        FcgidInitialEnv QGIS_DEBUG 1

        # Add a default QGIS project
        SetEnv QGIS_PROJECT_FILE /home/qgis/projects/world.qgs

        # QGIS_AUTH_DB_DIR_PATH must lead to a directory writeable by www-data
        #Diesmal ist es in Ordnung, wenn dies nicht eingestellt ist
        #FcgidInitialEnv QGIS_AUTH_DB_DIR_PATH "/var/www/qgis-server/qgisserverdb/"
        #FcgidInitialEnv QGIS_AUTH_PASSWORD_FILE "/var/www/qgis-server/qgisserverdb/qgis-auth.db"

        <IfModule mod_fcgid.c>
        # Longer timeout for WPS... default = 40
            FcgidIOTimeout 120
            FcgidMaxRequestLen 26214400
            FcgidConnectTimeout 60
        </IfModule>

        # /usr/lib/cgi-bin/qgis_mapserv.Erstellen Sie einen Alias für den fcgi-Pfad.
        <Location /qgisserver>
            SetHandler fcgid-script
            FcgidWrapper /usr/lib/cgi-bin/qgis_mapserv.fcgi virtual
            Options +ExecCGI -MultiViews +FollowSymLinks
            Require all granted
        </Location>

</VirtualHost>
-------------------------------------------------

Extrahieren Sie die erstellte Site-Einstellungsdatei "qgis_demo.conf", damit sie beim Start von Apache geladen wird.

python


#Löschen Sie die Standardwebsite einmal
$ a2dissite 000-default

#Extrahieren Sie die erstellte Datei
$ a2ensite qgis_demo
Enabling site qgis.demo.
  • / Etc / apache2 / sites-enabled / qgis.demo.conf wird als symbolischer Link zu / sites-available / qgis.demo.conf erstellt. (/ Etc / apache2 / sites-enabled / *. Conf wird ausgeführt, wenn apache startet.)

python


###Modul aktivieren
$ a2enmod fcgid
$ a2enconf serve-cgi-bin

###Starten Sie den Apache-Dienst neu
$ systemctl restart apache2

** Installation von xvfb und Registrierung von Diensten **

python


$ apt install -y xvfb
  • Xvfb selbst ist ein Tool zum Simulieren der Bildschirmeingabe / -ausgabe unter einem Betriebssystem wie Linux, das keine Anzeige hat. Sie können mit Chrome, Firefox usw. testen, ohne eine Desktop-Umgebung vorzubereiten.

[Xvfb] Erstellen einer Servicedatei.

python


$ nano /etc/systemd/system/xvfb.service

/etc/systemd/system/xvfb.service


[Unit]
Description=X Virtual Frame Buffer Service
After=network.target

[Service]
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset

[Install]
WantedBy=multi-user.target

Starten Sie den oben erstellten "Xvfb" -Dienst

python


$ systemctl enable xvfb.service
$ systemctl start xvfb.service
$ systemctl status xvfb.service

Starten Sie Apache neu

$ systemctl restart apache2

Greifen Sie über den Browser in Ubuntu auf die folgende URL zu. Wenn ein Bildschirm wie eine Karte geöffnet wird, ist die Einrichtung abgeschlossen!

http://localhost/qgisserver?MAP=/home/qgis/projects/world.qgs&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-432786,4372992,3358959,7513746&SRS=EPSG:3857&WIDTH=665&HEIGHT=551&LAYERS=countries&FORMAT=image/jpeg

Qiita-no010_img05.jpg

  • Eigentlich war das Öffnen dieser Karte nicht gut und ich hatte große Probleme. (Ich öffne den Bildschirm, aber er war rein weiß.) Die Ursache ist, dass die Trainingsdaten und die Informationen der letzten URL (Parameterteil), auf die im offiziellen Dokument Bezug genommen wird, alt waren.

Zusammenfassung

Als nächstes möchte ich die qgs-Datei speichern und versuchen, Shape-Daten und PostgreSQL-Daten anzuzeigen. (Zunächst müssen Sie möglicherweise MAP usw. einrichten.)

Recommended Posts