Construire WebGIS sur Ubuntu20.04 LTS

introduction

Jusqu'à présent, j'ai organisé une visualisation des informations de localisation à l'aide de QGIS, mais comme il s'agit d'une méthode d'opération côté bureau, elle ne convient pas pour publier la version visualisée ou la télécharger conjointement avec d'autres. Cette fois, j'ai configuré WebGIS (QGIS-Server) pour partager la couche créée par QGIS, donc je laisserai le contenu sous forme de mémo.

Environnement d'exécution

[Environnement d'installation WebGIS] ・ Ubuntu20.04 LTS (sur GCP) ・ QGIS-Server 3.10.4 ・ Apache 2.4.41

Que veux-tu faire

    1. Créer une instance Ubuntu dans GCP
  1. Installez QGIS-Server
    1. Installer Apache2

1. 1. Créer une instance Ubuntu dans GCP

・ Accédez à l'écran d'accueil de GCP et cliquez sur [Nouveau projet]. (Le navigateur est Chrome) Qiita-no010_img01.jpg

-Depuis que l'écran de création de projet s'ouvre, choisissez le "nom du projet" et cliquez sur [Créer].

-Cliquez sur [Compute Engine> VM Instance] dans le menu de navigation. Qiita-no010_img02.jpg

-Cliquez sur [Créer], entrez les informations suivantes, sélectionnez-les et cliquez sur [Créer].

<Le côté droit est la valeur de réglage actuelle> ● Nom: qgis-web-client2 ● Région: asia-northest1 (Tokyo) ● Zone: asia-east1-b

● Configuration de la machine Famille de machines: usage général Série: E2 Type de machine: e2-petit   ● Disque de démarrage     OS      :Ubuntu Version: Ubuntu20.04 LTS Type de disque: disque persistant standard Taille: 10 Go

● Pare-feu Autoriser le trafic HTTP Autoriser le trafic HTTPS

● Mise en réseau (interface réseau) IP externe: créez une adresse IP

La création prendra un certain temps, mais une fois la création terminée, cliquez sur Connect- [SSH] pour ouvrir l'écran de la console. Qiita-no010_img03.jpg

A partir de là, connectez-vous en tant que root et exécutez. </ font> (Vous pouvez utiliser sudo comme utilisateur de compte GCP par défaut, mais c'est un problème à chaque fois)

2. Installez QGIS-Server

Mises à jour de l'outil de gestion des packages.

python


$ apt update
$ apt -y upgrade

Installation des packages requis.

python


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

Installez le package QGIS-Server

python


$ apt install qgis-server

Vérifiez l'emplacement de stockage du fichier exécutable du serveur QGIS. La documentation officielle dit / usr / lib / cgi-bin / qgis_mapserv.fcgi.

python


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

Essaye le.

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>

À ce stade, il semble que l'on puisse juger que la réponse est normale si la réponse est telle que décrite ci-dessus.

Télécharger le projet de formation

python


###Création d'un dossier pour stocker les données du projet
$ mkdir /home/qgis/
$ mkdir /home/qgis/projects/

###Téléchargez les projets de formation.
$ wget https://github.com/qgis/QGIS-Training-Data/archive/master.zip -d

###Décompressez le fichier ZIP téléchargé. * "QGIS-Training-Data-2.Le répertoire 0 ”est créé.
$ unzip master.zip

###Copiez les données du didacticiel du fichier décompressé
$ cp -pr ./QGIS-Training-Data-master/exercise_data/qgis-server-tutorial-data/* /home/qgis/projects/

Vérifiez le contenu du répertoire de destination de la copie.

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

#* L'affichage ci-dessus est partiellement omis.

3. 3. Installer Apache2

-Apache installation et confirmation de démarrage -Dupliquer et éditer le fichier conf -Créez un hôte virtuel et associez le fichier de configuration à lire aux informations de l'hôte.

Installez les packages requis pour le serveur HTTP Apache.

python


$ apt install -y apache2 libapache2-mod-fcgid

Activez le module cgi et accédez à l'URL http: //localhost/cgi-bin/qgis_mapserv.fcgi? SERVICE = WMS & VERSION = 1.3.0 & REQUEST = GetCapabilities depuis un navigateur sur Ubuntu.

python


#Activation du module
$ a2enmod cgid

#Redémarrez Apache2
$ systemctl restart apache2

L'écran ci-dessous devrait être affiché sur le navigateur sur Ubuntu. (Pour le remodelage vers Ubuntu, reportez-vous ici ** [Connexion Bureau à distance à Ubuntu sur GCP] **) Qiita-no010_img04.jpg

  • Si cgid n'est pas activé, il sera" Not Found ".

Pour activer le module et définir l'alias dans la configuration du site Créez qgis_demo.conf dans / etc / apache2 / sites-available /.

python


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

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



Créé avec le contenu suivant (voir document officiel)
-------------------------------------------------
<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)
        #Cette fois, ça va si ce n'est pas réglé
        #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
        #Cette fois, ça va si ce n'est pas réglé
        #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.Créez un alias pour le chemin fcgi.
        <Location /qgisserver>
            SetHandler fcgid-script
            FcgidWrapper /usr/lib/cgi-bin/qgis_mapserv.fcgi virtual
            Options +ExecCGI -MultiViews +FollowSymLinks
            Require all granted
        </Location>

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

Extrayez le fichier de paramètres de site créé qgis_demo.conf afin qu'il soit chargé au démarrage d'Apache.

python


#Supprimer le site par défaut une fois
$ a2dissite 000-default

#Extraire le fichier créé
$ a2ensite qgis_demo
Enabling site qgis.demo.
  • / Etc / apache2 / sites-enabled / qgis.demo.conf est créé comme lien symbolique vers / sites-available / qgis.demo.conf. (/ Etc / apache2 / sites-enabled / *. Conf est exécuté lorsque apache démarre.)

python


###Activer le module
$ a2enmod fcgid
$ a2enconf serve-cgi-bin

###Redémarrez le service Apache
$ systemctl restart apache2

** Installation de xvfb et enregistrement des services **

python


$ apt install -y xvfb
  • Xvfb lui-même est un outil pour simuler l'entrée / sortie d'écran sur un système d'exploitation tel que Linux qui n'a pas d'affichage. Vous pouvez tester avec Chrome, Firefox, etc. sans préparer un environnement de bureau.

[Xvfb] Création d'un fichier de service.

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

Démarrez le service Xvfb créé ci-dessus

python


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

Redémarrez Apache

$ systemctl restart apache2

Accédez à l'URL suivante à partir du navigateur dans Ubuntu, et si un écran comme une carte s'ouvre, la configuration est terminée!

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

  • En fait, l'ouverture de cette carte ne s'est pas bien déroulée et j'ai eu beaucoup de mal. (J'ouvre l'écran mais c'était d'un blanc pur.) La cause en est que les données de formation et les informations de la dernière URL (partie paramètre) décrites dans le document officiel mentionné étaient anciennes.

Sommaire

Ensuite, je voudrais stocker le fichier qgs et essayer d'afficher les données Shape et PostgreSQL. (Tout d'abord, vous devrez peut-être configurer MAP, etc.)

Recommended Posts

Construire WebGIS sur Ubuntu20.04 LTS
Apache2 sur Ubuntu20.04 LTS
Enregistrer une vidéo sur ubuntu18.04LTS
Installation d'OpenMX sur Ubuntu 18.04.5 LTS
Installez WordPress 5.5 sur Ubuntu 20.04 LTS
Paramètres Wake on Lan sur Ubuntu 20.04.1 LTS
Création d'un environnement de Deep Learning (Ubuntu 20.04 LTS)
[Ruby] Création d'un environnement de développement Ruby sur Ubuntu
Construire un cluster Hadoop (Cloudera Manager sur Ubuntu 18.04)
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
Enregistrement d'écran sur Ubuntu 20.04
Bluetooth Web sur Ubuntu20.04
Essayez DisplayLink sur Ubuntu 20.04
Installez pyqt5 sur ubuntu
Installez Ruby sur Ubuntu 20.04
Définition de JAVA_HOME sur Ubuntu
Utiliser cpplapack avec ubuntu
Exécutez tiscamera sur Ubuntu 18.04
Créer un environnement de bureau Ubuntu 20.04 LTS sur Raspberry Pi 4 (+ localisation japonaise)
Installez Ubuntu MATE 20.04 LTS sur l'ancien MacBook début 2008 (MB402 * / A, MB403 * / A, MB404 * / A)
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Mettez Ubuntu 20.04.1 dans Raspberry 4
Installez Docker sur Ubuntu Server 20.04
Oracle Java 8 sur Docker Ubuntu
Installez l'agent zabbix (5.0) sur Ubuntu 18.04
Installation du proxy MAV sur Ubuntu 18.04
Introduction des connaissances (wiki) à Ubuntu
Installez Java sur WSL Ubuntu 18.04
Installez Ubuntu Desktop 20.10 sur RaspberryPi4
Ubuntu sur la vitesse de construction de Windows
Exécutez l'applet java sur ubuntu
Comment installer java9 sur elementaryOS Freya ou Ubuntu 14.04 LTS
Configurer un serveur MineCraft Paper avec Ubuntu 20.04.1 LTS ② Mise à jour
Exécutez Eclipse CDT sur Ubuntu
Configurer ansible-playbook sur Ubuntu 20.04
Utilisez un point d'accès virtuel avec Ubuntu 18.04 LTS pour faire de l'ancien iPad un sous-moniteur