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: