troggle-unchained/README.txt

212 lines
7.4 KiB
Plaintext
Raw Normal View History

2023-02-03 11:34:24 +00:00
Updated 3 February 2023
2021-04-10 02:12:13 +01:00
2020-05-27 01:04:37 +01:00
Troggle is an application for caving expedition data management,
originally created for use on Cambridge University Caving Club (CUCC)expeditions
and licensed under the GNU Lesser General Public License.
2021-04-10 02:12:13 +01:00
Troggle has been forked into two projects. The original one is maintained by Aaron Curtis
2023-02-03 11:34:24 +00:00
and was used for Erebus caves in Antarctica.
The CUCC variant uses files as the definitive data, not the database, and lives at http://expo.survex.com/repositories/troggle/.git/
2011-07-11 02:10:22 +01:00
For the server setup, see /_deploy/debian/wookey-exposerver-recipe.txt
2021-10-29 20:18:36 +01:00
and see http://expo.survex.com/handbook/troggle/serverconfig.html
Much material which was in this file has been moved to
http://expo.survex.com/handbook/troggle/serverconfig.html
2020-07-26 02:26:04 +01:00
See copyright notices in
http://expo.survex.com/handbook/computing/contribute.html
2021-10-29 20:18:36 +01:00
and for context see
http://expo.survex.com/handbook/computing/onlinesystems.html
2020-07-26 02:26:04 +01:00
2011-07-11 02:10:22 +01:00
Troggle setup
2020-05-27 01:04:37 +01:00
=============
0. read the very extensive online documentation and stop reading this README.
http://expo.survex.com/handbook/troggle/troglaptop.html
http://expo.survex.com/handbook/troggle/serverconfig.html
http://expo.survex.com/handbook/troggle/trogdangoup.html
and at troggle/debian/serversetup
2021-10-29 20:18:36 +01:00
1. set up the ssh key-exchange with the git server so you can clone troggle
http://expo.survex.com/handbook/computing/keyexchange.html
2021-04-10 02:12:13 +01:00
2020-05-27 01:04:37 +01:00
Setting up directories
----------------------
2021-10-29 20:18:36 +01:00
see http://expo.survex.com/handbook/troggle/troglaptop.html and
http://expo.survex.com/handbook/troggle/serverconfig.html
2020-05-27 01:04:37 +01:00
2021-05-03 22:47:57 +01:00
Next, you need to fill in your local settings. Copy _deploy/WSL/localsettingsWSL.py
2020-05-27 01:04:37 +01:00
to a new file called localsettings.py and edit it and settings.py to match
your machine's file locations.
Follow the instructions contained in the file to fill out your settings.
2021-05-03 22:47:57 +01:00
{ in _deploy/old/ we have these which are all very out of date:
localsettings-expo-live.py is the python2.7 settings for the server.
2020-05-27 01:04:37 +01:00
localsettingsubuntu.py
localsettingsdocker.py
localsettingswindows.py
localsettingspotatohut.py
}
Python3, Django, and Database setup
2011-07-11 02:10:22 +01:00
-----------------------------------
2022-06-25 19:34:42 +01:00
We are now using Django 3.2 and will move to 4.2 in 2024
2023-02-03 11:34:24 +00:00
We are installing with python 3.11 (the server is running 3.9)
2020-05-27 01:04:37 +01:00
2022-06-25 19:34:42 +01:00
Install Django using pip, not with apt, on your test system in a venv.
2021-10-29 20:18:36 +01:00
Conventionally on our main master expo server we install everything that we can as debian packages, not using pip.
[installation instructions removed - now in http://expo.survex.com/handbook/troggle/troglaptop.html ]
[venv description removed - read it in http://expo.survex.com/handbook/troggle/troglaptop.html ]
2022-10-27 12:30:59 +01:00
READ the os-trog.sh script !
READ the venv-trog.sh script !
2021-12-05 17:11:12 +00:00
Automatic Provisioning and Configuration
----------------------------------------
We don't do this - yet.
2022-10-27 12:30:59 +01:00
2021-12-05 17:11:12 +00:00
The most appropriate configuration tools today (2021) appear to be Bolt or Ansible
https://puppet.com/docs/bolt/latest/bolt.html (declarative, local)
https://docs.ansible.com/ansible/latest/user_guide/intro_getting_started.html (procedural, remote)
https://puppet.com/blog/automating-from-zero-to-something/
We don't need anything for the deploy server itself, but we could do with something for setting
up test servers quickly to help get newbie developers up to speed faster. But learning a new tool
creates a barrier in itself. This is one reason most of us don't use Docker.
2020-06-18 21:50:16 +01:00
CSS and media files
-------------------
2022-02-20 00:21:56 +00:00
We are not using the STATICFILES capability.
We are serving css files from troggle/media/.. (see urls.py)
Plain CSS pages
---------------
When running the test server
manage.py runserver 0.0.0.0:8000
and without Apache running, we are serving CSS using using this Django 'view':
2020-06-18 21:50:16 +01:00
view_surveys.cssfilessingle
i.e.
cssfilessingle() in core/view_surveys.py
2020-06-17 01:00:50 +01:00
2020-05-27 01:04:37 +01:00
Setting up survex
-----------------
You need to have survex installed as the command line tools 'cavern' is
2020-05-27 01:04:37 +01:00
used as part of the survex import process.
$ sudo apt install survex
Setting up tables and importing survey data
-------------------------------------------
Run
$ sudo python databaseReset.py
from the troggle directory will give you instructions.
[ NB Adding a new year/expedition requires adding a column to the
folk/folk.csv table - a year doesn't exist until that is done.]
2020-05-14 19:37:46 +01:00
MariaDB database
----------------
Start it up with
$ sudo mysql -u -p
when it will prompt you to type in the password. Get this by reading the settings.py file in use on the server.
then
> CREATE DATABASE troggle;
> use troggle;
> exit;
2011-07-11 02:10:22 +01:00
2020-05-14 19:37:46 +01:00
Note the semicolons.
You can check the status of the db service:
$ sudo systemctl status mysql
You can start and stop the db service with
$ sudo systemctl restart mysql.service
$ sudo systemctl stop mysql.service
$ sudo systemctl start mysql.service
2011-07-11 02:10:22 +01:00
While logged in at a terminal session as expo on expo.survex.,com
$ mysql -h localhost -u expo -p<password>
will get you the MariasDb command prompt: https://www.hostwinds.com/guide/how-to-use-mysql-mariadb-from-command-line/
2021-04-25 01:48:03 +01:00
then (Note the SEMICOLONS !):
>drop database troggle;
>create database troggle;
>quit
Somewhere I have notes for the GRANT PRIVS type runes...
Ah yes:
CREATE DATABASE troggle;
GRANT ALL PRIVILEGES ON troggle.* TO 'expo'@'localhost' IDENTIFIED BY 'somepassword'; FLUSH PRIVILEGES; (at mysql root prompt)
(explained on https://chartio.com/resources/tutorials/how-to-grant-all-privileges-on-a-database-in-mysql/)
(but you need to create the database too)
2021-04-25 01:48:03 +01:00
The GRANT ALL PRIVILEGES bit requires you to logon in to MariaDB as root. sudo doesn't cut it.
these permissions are set in a different 'info' database which usually is untouched even if database troggle gets creamed.
2023-02-03 11:34:24 +00:00
The 'somepassword' is specified int he localsettings.py file.
2021-04-25 01:48:03 +01:00
PERMISSIONS
https://linuxize.com/post/usermod-command-in-linux/
2023-02-03 11:34:24 +00:00
THIS MAY BE OUT OF DATE - from 2022 we are running Apache as user 'expo' not 'www-data'
2021-12-05 17:11:12 +00:00
so that the online editing system for SVX files works.
The same goes for /expoweb/ files, so that "edit this page" works and the New Cave
and New Entrance forms work.
2021-04-25 01:48:03 +01:00
sudo usermod -a expo expocvs
2022-10-27 12:30:59 +01:00
the expocvs group is used for git
2021-04-25 01:48:03 +01:00
2021-12-05 17:11:12 +00:00
all the users should be in this group
2020-03-12 17:40:03 +00:00
Running a Troggle server with Apache
------------------------------------
Troggle also needs these aliases to be configured. These are set in
/home/expo/config/apache/expo.conf
on the expo server.
At least these need setting:
DocumentRoot /home/expo/expoweb
WSGIScriptAlias / /home/expo/troggle/wsgi.py
2020-03-14 20:08:44 +00:00
<Directory /home/expo/troggle>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
2022-02-20 00:21:56 +00:00
the instructions for apache Alias commands are in comments at the end of
the urls.py file.
2020-06-06 23:03:37 +01:00
2021-10-29 20:18:36 +01:00
Unlike the django "manage.py runserver" method, apache requires a restart before it will use
2020-03-12 17:40:03 +00:00
any changed files:
2020-07-21 02:48:41 +01:00
sudo service apache2 restart
Olly's comments 20 July 2020:
olly: looking at /lib/systemd/system/apache2.service suggests so
olly: ExecStart=/usr/sbin/apachectl start
olly: ExecStop=/usr/sbin/apachectl stop
olly: ExecReload=/usr/sbin/apachectl graceful
2020-05-27 01:04:37 +01:00
2023-02-03 11:34:24 +00:00
Additions
---------
The python code has been manually cleaned using the 'black' and 'ruff' lint tools,
and the 'deptry' dependency checker. This needs doing every year or so.
See dependencies-check-deptry.txt
See troggle/pyproject.toml for configurations
2021-10-29 20:18:36 +01:00
2020-05-27 01:04:37 +01:00
Experimental additions
----------------------
2022-02-20 00:21:56 +00:00
These are untried tools which may help us document how troggle works in future.
2020-05-27 01:04:37 +01:00
pip install pygraphviz
pip install pyparsing pydot # installs fine
django extension graph_models # https://django-extensions.readthedocs.io/en/latest/graph_models.html