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.
[WebGIS-Installationsumgebung] ・ Ubuntu20.04 LTS (auf GCP) ・ QGIS-Server 3.10.4 ・ Apache 2.4.41
・ Rufen Sie den GCP-Startbildschirm auf und klicken Sie auf [Neues Projekt]. (Browser ist Chrome)
-Klicken Sie im Navigationsmenü auf [Compute Engine> VM-Instanz].
-Klicken Sie auf [Erstellen], geben Sie die folgenden Informationen ein, wählen Sie sie aus und klicken Sie auf [Erstellen].
● 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.
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.)
Aktualisierungen des Paketverwaltungstools.
python
$ apt update
$ apt -y upgrade
Installation der erforderlichen Pakete.
python
$ apt install -y nano curl iputils-ping net-tools
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.
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.
-Apache Installation & Startbestätigung -Duplizieren und bearbeiten Sie die conf-Datei
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] **)
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
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