G3W-ADMIN admin server module for G3W-SUITE. (Django 2.2 and Python 3.6, current branch)
G3W-SUITE works with QGIS-Server LTR versions.
At the moment is not used a classic versioning system for the suite, there are main 3 branches.
Branch | Python version | Django version | QGIS API | Status |
---|---|---|---|---|
dev | 3.6 | 2.2 | Used | Continue developing |
v.3.3.x | 3.6 | 2.2 | Used | Bug fixing |
v.3.2.x | 3.6 | 2.2 | Used | Bug fixing |
v.3.1.x | 3.6 | 2.2 | Used | No longer supported |
v.3.0.x | 3.6 | 2.2 | Used | No longer supported |
dj22-py3 | 3.6 | 2.2 | Not used | No longer supported |
py2 | 2.7 | 1.11 | Not used | No longer supported |
The following instructions are for a Ubuntu 18.04 LTS.
G3W-ADMIN use javacript package manager Yarn and Node.js
sudo apt-get install -y nodejs-legacy npm
for install Yarn follow main installation instructions:
https://yarnpkg.com/en/docs/install#debian-stable
The following instructions are for python 3.6
Install python pip
sudo apt-get install python3-pip
now we can install virtualenvwrapper
sudo pip3 install virtualenvwrapper
To activate virtuenvwrapper on system login, add follow lines to 'bashrc' config file of your user
nano ~/.bashrc
....
export WORKON_HOME=<path_to_virtualenvs_directory>
source /usr/local/bin/virtualenvwrapper.sh
To create a virtualnenv is sufficent call mkvirtualenv commando 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
First step is install dev libraries packages for python module to install with requiriments.txt
sudo apt-get install -y \
libxml2-dev \
libxslt-dev \
postgresql-server-dev-all \
libgdal-dev \
python-dev
G3W-ADMIN is a Django application, and to work is necessary set a config.py file. To start copy local_settings.example.py and set the databse and other:
cd g3w-admin/g3w-admin/base/settings
cp local_settings_example.py local_settings.py
set database, media root and session cookies name:
...
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>'
G3W-ADMIN has a series of paver CLI commands to administrate the suite. After prepared environment if sufficient invoce paver install task
paver install
To run the application with paver
paver start
and for stop
paver stop
G3W-ADMIN is a django application so is possibile run app by standard django manage.py commands
./manage.py runserver
As other Django application, G3W-SUITE can be deployed by its wsgi capabilities. On the web if simple to find tutorial for deploy a Django application.
The simpler way is to use Apache2 as server WEB and its mod_wsgi module.
Alternative solutions are:
The preferred installation is by using the paver
script as mentioned above, but in case you need to customize the installation process, here are the build and setup steps:
# 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) { }"
Make sure build components are available in static and collected later
cd g3w-admin/core/static
ln -s "../../../node_modules/@bower_components" bower_components
Possibily within a virtual env:
pip install -r requirements.tx
python manage.py collectstatic --noinput
python manage.py migrate --noinput
Install some fixtures for EPSG and other suite options:
for FIXTURE in 'BaseLayer.json' 'G3WGeneralDataSuite.json' 'G3WMapControls.json' 'G3WSpatialRefSys.json'; do
python manage.py loaddata core/fixtures/${FIXTURE}
done
Sync menu tree items (re-run this command in case you installed optional modules and they are not visible in the admin menu tree):
python manage.py sitetree_resync_apps
Can be installed the follow module accessories.
Module to cache on disk layers WMS map. To install and usd please read his caching/README.md
Module to manage on disk geo data files. To install and use please read his filemanager/README.md
CI tests are automatically run on CircleCI for the dev
branch only.
The Docker compose configuration used in the CI tests is available at docker-compose.yml.
Another configuration for running local tests is provided with docker-compose-local.yml and can also be used for local testing by running:
docker-compose -f docker-compose-local.yml up
The testing image is built from the dependency image and it will run all install and build steps from the local repository.
The dependency image is built from the Dockerfile.deps.
- Walter Lorenzetti - Gis3W (@wlorenzetti)
- Leonardo Lami - Gis3W (@leolami)
- Francesco Boccacci - Gis3W (@volterra79)
- Alessandro Pasotti - QCooperative (@elpaso)
- Luigi Pirelli - QCooperative (@luipir)
- Mazano - Kartoza (@NyakudyaA) (Dockerization refactoring)