Istallazione classica

The following instructions are for a Ubuntu 22.04 LTS.

Install required packages

First step is install dev libraries packages for python module

sudo apt-get install -y \
    libxml2-dev \
    libxslt-dev \
    postgresql-server-dev-all \
    libgdal-dev \
    python3-dev

If you are running a ubuntu Server version is necessary to install also a XServer for the Qt libraries. Is possible install XVFB a virtual framebuffer X server for X Version 11 and run it.

sudo apt intall -y xvfb

sudo Xvfb :99 -screen 0 640x480x24 -nolisten tcp &
export DISPLAY=:99

Ti suggerisco di creare un service systemd per renderlo attivo all”avvio della macchina.

Installa QGIS Server

wget -qO - https://qgis.org/downloads/qgis-2022.gpg.key | sudo  gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/qgis-archive.gpg --import 
sudo chmod a+r /etc/apt/trusted.gpg.d/qgis-archive.gpg
sudo bash -c "echo \"deb [arch=amd64] https://qgis.org/ubuntu-ltr jammy main\" >> /etc/apt/sources.list"
sudo apt update && sudo apt install -y python3-qgis qgis-server

Installazione di node.js e Yarn

G3W-ADMIN usa il gestore di pacchetti javacript Yarn e Node.js

sudo curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt install -y yarn

Creazione di una virtualenv

Istalla i seguenti pacchetti python virtualenv e virtualenvwrapper

Le seguenti istruzioni sono basate su Python versione 3.6

Install python pip and virtualenvwrapper

sudo apt-get install python3-pip && sudo pip3 install virtualenvwrapper

Creare una cartella dove poter creare gli ambienti dei propri virtualenvs.

mkdir <path_to_virtualenvs_directory>

Per attivare virtuenvwrapper all”accesso al sistema, aggiungi le seguenti righe al file di configurazione “bashrc” del tuo utente

nano ~/.bashrc
....
export WORKON_HOME=<path_to_virtualenvs_directory>
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

Esegui nuovamenti il login per attivare Virtualenvwrapper

sudo su <my_ubuntu_username>

Creazione di Virtualenv

To create a virtualnenv is sufficient call mkvirtualenv follow by the identification name for virtualenv (to use QGIS API into a virtualenv only solution is to give access python system site-packages to it using –system-site-packages option)

mkvirtualenv --system-site-packages g3wsuite

Questo ultimo comando rende attivo il nuovo virtualenv, per le prossime volte è possibile usare il seguente comando per attivare nuovamente il virtualenv:

workon g3wsuite

Utilizzo del venv nativo Python3

Per il deploy di G3W-SUITE chiaramente può essere utilizzato il modulo nativo di Python3 venv, virtualenvwrapper è un modulo di terze parti che semplifica l”uso e la gestione dei virtualenv

Installazione di G3W-SUITE

Clona il codice da github

git clone https://github.com/g3w-suite/g3w-admin.git

Impostiamo il file local_config.py

G3W-ADMIN è un”applicazione Django e per funzionare è necessario impostare un file config.py. Per iniziare copiamo il file local_settings.example.py, impostiamo il database e settiamo le altre configurazioni:

cd g3w-admin/g3w-admin/base/settings
cp local_settings_example.py local_settings.py

imposta il nome del database, la media root e il nome della sessione dei cookies:

...

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': '<db_name>',
        'USER': '<db_user>',
        'PASSWORD': '<db_user_password>',
        'HOST': '<db_host>',
        'PORT': '<db_port>',
    }
}

...

DATASOURCE_PATH = '<static_path_to_gis_data_source>'

...

MEDIA_ROOT = '<path_to_media_root>'

...

SESSION_COOKIE_NAME = '<unique_session_id>'

Con comandi paver

G3W-ADMIN has a series of paver CLI commands to administrate the suite. After prepared environment if sufficient invoke paver install task

paver install

Avviare G3W-SUITE

Per eseguire l”applicazione con paver

paver start

e per stopparla

paver stop

G3W-ADMIN is a django application so is possible run app by standard django manage.py commands

./manage.py runserver

Deploy di G3W-SUITE

Come altre applicazioni Django, G3W-SUITE può essere implementato dalle sue funzionalità wsgi. Sul Web se semplice trovare tutorial per deployare un”applicazione Django.

Il modo più semplice è usare Apache2 come WEB server e il suo modulo mod_wsgi.

Le soluzioni alternative sono:

Passi per l”installazione manuale

L”installazione consigliata è basata sull”utilizzo dello script paver come menzionato sopra, ma nel caso in cui sia necessario personalizzare il processo di installazione, ecco i passaggi di costruzione e configurazione:

Creazione static js code

# Install yarn (requires root):
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | \
    tee /etc/apt/sources.list.d/yarn.list
apt-get update && sudo apt install -y yarn
# Back to unprivileged user, from the repository directory, run:
yarn --ignore-engines --ignore-scripts --prod
nodejs -e "try { require('fs').symlinkSync(require('path').resolve('node_modules/@bower_components'), 'g3w-admin/core/static/bower_components', 'junction') } catch (e) { }"

Assicurati che i build component siano disponibili in modalità statica e raccolti in un secondo momento

cd g3w-admin/core/static
ln -s "../../../node_modules/@bower_components" bower_components

Requisiti di installazione

Possibly within a virtual env:

pip install -r requirements.txt
pip install -r requirements_huey.txt

Settaggio di Django

python manage.py collectstatic --noinput
python manage.py migrate --noinput

Installa alcuni dispositivi per EPSG e altre opzioni di suite:

for FIXTURE in 'BaseLayer.json' 'G3WGeneralDataSuite.json' 'G3WMapControls.json' 'G3WSpatialRefSys.json'; do
    python manage.py loaddata  core/fixtures/${FIXTURE}
done

Sincronizza le voci dell”albero dei menu (riesegui questo comando nel caso in cui tu abbia installato moduli opzionali e non siano visibili nella struttura dei menu dell”amministratore):

python manage.py sitetree_resync_apps

Continuous integration testing

CI tests are automatically run on GitHub by custom actions.

La configurazione del Docker Compose utilizzata nei test CI è disponibile su docker-compose.yml.

L”immagine di prova viene creata dall”immagine di dipendenza e eseguirà tutti i passaggi di installazione e compilazione dal repository locale.

L”immagine di dipendenza viene creata da Dockerfile.deps.

G3W-SUITE supports the latest LTR QGIS version, so at now is the 3.22, therefore there are also dockerfiles and docker compose files for this version: