statoolinfosweb/README.md

168 lines
4.6 KiB
Markdown

# StatoolInfosWeb
StatoolInfosWeb is a webapp to value the data from StatoolInfos protocol.
## LICENSE
StatoolInfosWeb is released under the GNU AGPL+ license. Enjoy!
Authors:
* Christian Pierre MOMON <christian.momon@devinsy.fr>
Contributors : Angie, MrFlos, Quentin Duchemin, Fabrice61, Thomas TConstans, labecasse, Antoine Jaba, setop, Jérémy Collot, Pilou, Kepon, Laurent Sleto, Rodinux…
### Cat Avatar Generator images
I am glad to use the beautiful artwork of David Revoy (http://www.peppercarrot.com).
* Graphics CC-BY http://creativecommons.org/licenses/by/4.0/
* Service: https://www.peppercarrot.com/extras/html/2016_cat-generator/
* Source: https://framagit.org/Deevad/cat-avatar-generator
* Originally inspired of the code for "MonsterID" by Andreas Gohr http://www.splitbrain.org/go/monsterid.
### Circle-icons
I am glad to use the generous artwork of ElegantThemes.com :
* https://www.elegantthemes.com/blog/freebie-of-the-week/beautiful-flat-icons-for-free
* "These icons are completely free and Open Source under the GPL".
### Logo
Author: Christian Pierre MOMON <christian.momon@devinsy.fr>
License: Creative Commons CC BY-SA last version.
### Other stuff
License of other stuff:
* csv-logo.svg, json-logo.svg, ods-icon.svg:
* Author: Christian P. Momon
* License: CC BY-SA 3+.
* other: without any specific information, default license of images is CC BY-SA 3+.
## DOCUMENTATION
Read CONCEPT.md and ONTOLOGY.md files.
## Requirements
- Java 17
- Eclipse 4.29 (2023-09).
## INSTALL
### Requirements
Install Java :
```
apt-get install openjdk-17-jre-headless
```
Download the last release: https://forge.devinsy.fr/statool/statoolinfosweb/releases
### Apache Web Server
Add a JK section:
```
# Configure du mod-jk.
JkUnMount /.well-known/statoolinfos/* ajp13_worker
JkUnMount /.well-known/acme-challenge/* ajp13_worker
JkMount /* ajp13_worker
```
Enable the JK module:
```
a2enmod jk
```
### Tomcat Server
Create a dedicated directory:
```
mkdir /srv/infos.mydomain.eu/
```
Create a log configuration file:
```
cd /srv/infos.mydomain.eu/
wget https://forge.devinsy.fr/statool/statoolinfosweb/src/branch/main/webapp/WEB-INF/log4j2.properties
```
Edit the `/srv/infos.mydomain.eu/log4j2.properties`:
```
appender.logfile.fileName = /var/log/tomcat10/statoolinfosweb.log
appender.logfile.filePattern = /var/log/tomcat10/statoolinfosweb-%i.log.gz
```
Create a directory dedicated to webapps:
```
mkdir /var/log/tomcat10# cd /var/lib/tomcat10/webapps/statoolinfoweb
cd /srv/infos.mydomain.eu/
ln -s /var/log/tomcat10# cd /var/lib/tomcat10/webapps/statoolinfoweb webapps
```
Put the StatoolInfosWeb WAR file in `/srv/infos.mydomain.eu/` and create a link into the webapps directory:
```
cd /srv/infos.mydomain.eu/webapps/
ln -s /srv/infos.mydomain.eu/SIW.ar ROOT.war
```
Create a context file:
```
cd /etc/tomcat10/Catalina
mkdir infos.mydomain.eu
cd infos.mydomain.eu
wget https://forge.devinsy.fr/statool/statoolinfosweb/src/branch/main/webapp/META-INF/context.xml -o ROOT.xml
```
Edit it:
```
<Environment name="kiss4web.environment.name" value="PROD" type="java.lang.String" override="true"/>
<Environment name="kiss4web.website.url" value="https://infos.mydomain.eu/" type="java.lang.String" override="true"/>
<Environment name="kiss4web.log4j2.path" value="/srv/infos.mydomain.eu/log4j2.properties" type="java.lang.String" override="true"/>
<Environment name="statoosinfosweb.configuration.file" value="/srv/statoolinfos/conf/mydomain.eu.conf" type="java.lang.String" override="true"/>
```
Add a dedicated `host` section in `/etc/tomcat10/server.xml`:
```
<Host name="infos.libre-service.eu" appBase="webapps/infoslibreserviceeu"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="infos.libre-service.eu-access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
```
### StatoolInfos /!\/!\/!\
The `cache` directory must be readable by Tomcat.
## About page caching
The web pages are put in a HTML cache so they are not build again at each request.
The HTML cache is automatically clear when the data directory is modified. The reload is quick.
However, the organizations and services metrics pages are in cache. Just because the combinatorial is too large!
Example:
- (Summary,Generic,Specific,Web) x (Month, Weeks) x (ALL, last months, year1-year4) = 48 pages by item
- 100 organizations + 300 services = 400 items
- 400 items x 48 pages => ~20 000 pages
- 200kB/page => 4GB in memory
Metrics pages are so numerous than they have to build on demand.