a12949fba1
It uses chrome driver rather than firefox/gecko, however. |
||
---|---|---|
apps | ||
bin | ||
ojusomap | ||
support | ||
traefik | ||
.dockerignore | ||
.gitignore | ||
.gitlab-ci.yml | ||
docker-compose.yml | ||
Dockerfile | ||
environment.sh | ||
environment.template | ||
example.env | ||
local.env | ||
local.yml | ||
manage.py | ||
ojuso-logo.svg | ||
README.md | ||
requirements-devel.txt | ||
requirements-test.txt | ||
requirements.txt | ||
setup.cfg | ||
system-requirements-debian.txt | ||
system-requirements-fedora.txt |
ojuso-map
Kickass map for the Ojuso Project
Getting Started
(These instructions are for GNU/Linux. Running this application on other platforms will probably work.. good luck!)
Check out the code
$ git clone git@gitlab.com:autonomic-cooperative/ojuso-map.git
$ cd ojuso-map
All commands from here on should be run in the ojuso-map
directory.
Install System Dependencies
Debian / Ubuntu
$ xargs < system-requirements-debian.txt sudo apt-get install -y
Fedora
$ xargs < system-requirements-fedora.txt sudo dnf install
If you hadn't previously installed Postgres, you will need to initialise the database and start the server:
$ sudo postgresql-setup --initdb --unit postgresql
$ sudo systemctl start postgresql
Set up the Python environment
It is highly recommended to use a Python "virtual environment", which lets you install a separate parallel set of packages for each app you're working on. As an example:
$ pip list | grep Django
$ source .venv/bin/activate
$ pip list | grep Django
Django 1.11.6
$ deactivate
$ pip list | grep Django
$
See the virtualenv documentation for full instructions
virtualenvwrapper
(recommended)
Follow the virtualenvwrapper
installation instructions
to set it up, then create a new virtual environment and install dependencies in
one step with:
$ mkvirtualenv -a . -p /usr/bin/python3 -r requirements-devel.txt ojuso-map
Then, edit the postactivate
script:
$ $EDITOR $VIRTUAL_ENV/bin/postactivate
and add a cheeky line to automatically load environment variables (see below):
source `cat $VIRTUAL_ENV/.project`/.env
Manual
Set up your Python virtual environment in the .venv
folder:
$ python3 -m venv .venv
$ source .venv/bin/activate
Then install python dependencies:
$ pip3 install --upgrade pip setuptools
$ pip3 install -r requirements-devel.txt
Initialise and load configuration
Copy example.env
to .env
. If you're using virtualenvwrapper
, this file
will now be loaded every time you run workon ojuso-map
(to reload it after
changes, run deactivate && workon ojuso-map
). Otherwise, you'll need to load
it manually with e.g.
$ source .env
or using direnv (in which case you should call your file .envrc
) or autoenv.
Set up database
You need to configure Postgres to allow password (it calls it md5
)
authentication, and set up a user with superuser privileges on a database.
Follow these instructions to change the Postgres
authentication options (NB on Fedora / Centos, pg_hba.conf
is located in
/var/lib/pgsql/data
), then connect to the database:
$ psql -U postgres
(you may need sudo -u postgres psql
depending on your security configuration)
Now, either set a password on the postgres
user:
postgres=# ALTER USER postgres WITH PASSWORD 'postgres';
or create a new user account and database:
postgres=# CREATE DATABASE ojuso;
postgres=# CREATE USER ojuso WITH PASSWORD 'ojuso';
postgres=# ALTER ROLE ojuso SET client_encoding TO 'utf8'; // this is recommended for django
postgres=# ALTER ROLE ojuso SET default_transaction_isolation TO 'read committed'; // so is this
postgres=# GRANT ALL PRIVILEGES on database ojuso to ojuso;
postgres=# ALTER USER ojuso with superuser;
Type \q
to exist the postgres shell.
If you chose the second option, edit your specific database name, username and
password into your .env
file.
Run The Migrations
$ python manage.py migrate
Start the server
$ python manage.py runserver
(Use Ctrl+C
to stop the server)
Resuming work
After shutting down the server / restarting your computer / etc., you will need to run some things to get going again.
With virtualenvwrapper
;
$ workon ojuso-map
$ python manage.py runserver
or if you followed "Manual" instructions above:
$ cd ojuso-map
$ source .venv/bin/activate
$ python manage.py runserver
(and $ source .env
if you're not using auotenv
or direnv
)
Running The Tests
$ pip install -r requirements-test.txt
$ python manage.py collectstatic
$ pytest -v
Troubleshooting
Sometimes, you see crashes like the following with psycopg
:
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module:
$USER/.virtualenvs/ojuso-map/lib/python3.6/site-packages/psycopg2/.libs/libresolv-2-c4c53def.5.so:
symbol __res_maybe_init version GLIBC_PRIVATE not defined in file libc.so.6 with
link time reference
In which case the following can help:
$ pip3 uninstall psycopg2 && pip3 install --no-binary :all: psycopg2