public:sonstiges:unterhaltung:spiele:switche_versenken

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
public:sonstiges:unterhaltung:spiele:switche_versenken [2021/09/19 03:43] – angelegt netalipublic:sonstiges:unterhaltung:spiele:switche_versenken [2021/10/06 02:10] netali
Zeile 44: Zeile 44:
       * Nun kann mit oben genannten Beispielwerten der erste Switch so konfiguriert werden:       * Nun kann mit oben genannten Beispielwerten der erste Switch so konfiguriert werden:
       * ''./configure_switch.py 10.135.1.20 10.135.1.5 swvcom'' (das muss jetzt noch für den anderen Switch mit der anderen IP ausgeführt werden)       * ''./configure_switch.py 10.135.1.20 10.135.1.5 swvcom'' (das muss jetzt noch für den anderen Switch mit der anderen IP ausgeführt werden)
 +
 +===== Einrichtung des Servers =====
 +Für die Erklärung wird von folgenden Beispielwerten ausgegangen (Erläuterungen folgen unten):
 +  * Der Server hat die IP ''10.135.1.5/24''
 +  * Die SNMP-Community lautet ''swvcom''
 +  * Der SNMP-Trap-Handler liegt unter ''/etc/snmp/handle.py''
 +  * Das Frontend wird unter ''/var/www/swv/frontend'' ausgecheckt
 +  * Das Backend wird unter ''/var/www/swv/backend/files'' ausgecheckt
 +  * Das venv für das Backend liegt unter ''/var/www/swv/backend/venv''
 +  * Der WSGI-Socket liegt unter ''/var/www/swv/backend/socket/wsgi.sock''
 +  * Die systemd-Unit für das Backend liegt unter ''/etc/systemd/system/swv-backend.service''
 +
 +Die Einrichtung erfolgt nun so:
 +  - Software installieren:
 +    * ''apt install python3-dev default-libmysqlclient-dev libssl-dev python3 python3-venv mariadb-server nginx snmptrapd nodejs npm''
 +  - snmptrapd einrichten:
 +    - Das passende Handle-Script aus [[https://gitlab.fem-net.de/swv/swv-scripts/-/tree/main/snmptrapd|dem Repo]] nach Beispielsweise ''/etc/snmp/handle.py'' kopieren
 +      * Hier liegen aktuell Handle-Scripts für 2650er und 54er Switche vor. Falls andere Switche verwendet werden, kann mithilfe des dev-handle-Scripts nachgeschaut werden, wie die OIDs für das Linkup-Event und die Portnummer heißen und dann kann entsprechend ein Script abgewandelt werden.
 +    - Die snmptrapd.conf unter ''/etc/snmp/snmptrapd.conf'' kann dann mit unseren Beispielwerten so aussehen:
 +      * <file|/etc/snmp/snmptrapd.conf>
 +authCommunity log,execute,net swvcom
 +traphandle default /etc/snmp/handle.py
 +</file>
 +  - Installieren und Konfigurieren des Backends
 +    - Das [[https://gitlab.fem-net.de/swv/swv-backend|Backend]] nach Beispielsweise ''/var/www/swv/backend/files'' auschecken
 +    - Eine MySQL-Datenbank anlegen und mit dem Datenbank-Schema aus dem Backend-Repo befüllen und auch gleich einen MySQL-Benutzer mit Zugriff auf diese DB anlegen
 +    - Ein venv für das Backend anlegen
 +      - ''cd /var/www/swv/backend''
 +      - ''python3 -m venv venv''
 +      - ''source venv/bin/activate''
 +      - ''pip install wheel''
 +      - ''pip install -r files/requirements.txt''
 +      - ''pip install uwsgi''
 +    - Unter Beispielsweise ''/var/www/swv/backend/files/wsgi.py'' eine WSGI-Config mit folgendem Inhalt anlegen:
 +      * <file|wsgi.py>
 +from flaskapp.app import app
 +
 +if __name__ == "__main__":
 +    app.run()
 +</file>
 +    - Unter Beispielsweise ''/var/www/swv/backend/wsgi.ini'' die WSGI-INI mit folgendem Inhalt anlegen (Pfade bei Bedarf anpassen):
 +      * <file|wsgi.ini>
 +[uwsgi]
 +chdir = /var/www/swv/backend/files
 +wsgi-file = wsgi.py
 +callable = app
 +
 +master = true
 +processes = 5
 +
 +socket = /var/www/swv/backend/socket/wsgi.sock
 +chmod-socket = 660
 +vacuum = true
 +
 +die-on-term = true
 +</file>
 +    - Socket-Verzeichnis unter Beispielsweise ''/var/www/swv/backend/socket/'' anlegen
 +    - Backend-Beispielconfig kopieren und anpassen
 +      * Die Config befindet sich in diesem Beispiel unter ''/var/www/swv/backend/files/flaskapp/config''
 +      * Am Ende muss dort eine Datei namens ''secret.py'' liegen
 +      * Die ''secret.example.py'' ist das Beispiel für mehrere 1HE Switche und ''secret.example_54.py'' ist das Beispiel für 54er Switche (die Ports sollten jeweils immer so bleiben können)
 +    - Die systemd-Unit für das Backend anlegen (mit unseren Beispielpfaden):
 +      * <file|/etc/systemd/system/swv-backend.service>
 +[Unit]
 +Description=uWSGI Instanz für swv-backend
 +After=network.target
 +
 +[Service]
 +User=www-data
 +Group=www-data
 +WorkingDirectory=/var/www/swv/backend/
 +Environment="PATH=/var/www/swv/backend/venv/bin"
 +ExecStart=/var/www/swv/backend/venv/bin/uwsgi --ini wsgi.ini --enable-threads
 +
 +[Install]
 +WantedBy=multi-user.target
 +</file>
 +    - Die systemd-Unit aktivieren und starten:
 +      * ''systemctl enable --now swv-backend''
 +  - Installieren und Konfigurieren des Frontends
 +    - Das [[https://gitlab.fem-net.de/swv/swv-frontend|Frontend]] nach Beispielsweise ''/var/www/swv/frontend'' auschecken 
 +    - Im ausgecheckten Repo unter ''src/config.ts'' die ''BASE_URL'' in unserem Beispiel auf ''http://10.135.1.5'' abändern
 +    - Frontend bauen:
 +      * ''cd /var/www/swv/frontend''
 +      * ''npm i''
 +      * ''npm run build''
 +  - Den nginx Konfigurieren:
 +    * Erneut mit unseren Beispielwerten:
 +    * <file|/etc/nginx/sites-available/default>
 +server {
 +    listen 80 default_server;
 +    listen [::]:80 default_server;
 +    root /var/www/swv/frontend/build;
 +
 +    index index.html index.htm index.nginx-debian.html;
 +
 +    server_name _;
 +
 +    location / {
 +        try_files $uri $uri/ =404;
 +    }
 +    
 +    location /api/ {
 +        uwsgi_pass unix:///var/www/swv/backend/socket/wsgi.sock;
 +        include uwsgi_params;
 +    }
 +}
 +</file>
 +  - Den nginx reloaden:
 +    * ''systemctl reload nginx''
 +  - Fertig (Wenn alles geklappt hat, dann sollte das Spiel nun von beiden Laptops aus unter ''http://10.135.1.5/'' erreichbar sein)
 +  - Wenn eine Runde fertig ist, kann das Spiel händisch durch das aufrufen von ''http://10.135.1.5/api/reset'' zurückgesetzt werden (von einem beliebigen Laptop aus)
  
  • public/sonstiges/unterhaltung/spiele/switche_versenken.txt
  • Zuletzt geändert: 2021/10/14 20:34
  • von netali