====== Wawisy: Technische Dokumentation ======
[[softwareanleitungen:Wawisy|Zurück zur Wawisy-Übersicht]]
Das Programm ist in Python geschrieben, es verwendet das Django-framework für das Backend und JavaScript, HTML5, CSS und jQuery für das Frontend.
===== Wawisy starten =====
Der Quellcode von Wawisy befindet sich im [[https://git.computerwerkorg/computerwerk/wawisy|gitlab]].
Wenn du Wawisy testen oder es weiterentwickeln möchtest, kannst du es lokal ausführen.
An deinem System werden dadurch keine Änderungen vorgenommen.
Wie die meisten Django-Projekte lässt sich Wawisy mit dem Kommando
./manage.py runserver
testweise ausführen.
===== Wawisy im System installieren =====
Wawisy wird auf einem Arch Linux System durch den systemd-Service ''/usr/lib/systemd/system/wawisy.service'' gestartet:
[Unit]
Description=Wawisy
[Service]
Type=forking
KillMode=none
ExecStart=/home/wawisy/start-wawisy.sh
ExecStop=/home/wawisy/stop-wawisy.sh
WorkingDirectory=/home/wawisy
[Install]
WantedBy=multi-user.target
Das Target //multi-user// startet u.a. den Wawisy-Service und weitere Units, die für den Betrieb von Wawisy nötig sind. Daher setzen wir dieses Target als Standard:
systemctl set-default multi-user.target
Wir gehen davon aus, dass ein Benutzer mit dem Namen //wawisy// und dem Homeverzeichnis ''/home/wawisy'' existiert.
Unter Arch Linux wird der Benutzer mit dem Kommando
useradd -m -s /usr/bin/bash wawisy
erstellt.
Im Homeverzeichnis liegt Wawisy im Ordner ''/home/wawisy/produktiv-wawisy''.
Die Skripte ''start-wawisy.sh'' und ''stop-wawisy.sh'' sehen so aus:
///home/wawisy/start-wawisy.sh//
#!/bin/bash
# Configuration
## user name of wawisy
WAWISY_USER="wawisy"
## path of wawisy installation (directory where manage.py is in)
WAWISY_PATH="/home/wawisy/produktiv-wawisy"
if [ $(whoami) != root ] ; then echo "this script must be run as root" && exit 1 ; fi
tmux new-session -s wawisy -d
tmux send-keys -t wawisy "su $WAWISY_USER" C-m
#tmux send-keys -t wawisy "source activate wawisy" C-m
tmux send-keys -t wawisy "cd $WAWISY_PATH && ./manage.py runserver 0.0.0.0:8000" C-m
echo -e "Wawisy started. You may now attach to the session using \ntmux a -t wawisy \n(detach using crtl+b and then press d)"
///home/wawisy/stop-wawisy.sh//
#!/bin/bash
tmux send-keys -t wawisy C-c && while ps aux | grep "manage.py runserver" | grep -v "grep" --silent; do sleep 1; echo waiting for wawisy to exit...; done && tmux send-keys -t wawisy C-d && echo exited